dcraw のソース読んでた/読んでる
raw 現像のプロセスをやってみたくてうだうだやってるけれど、いまだにファイルパースから抜けられない。ちなみに CR2 (Camera Raw 2 だか Canon Raw 2 だか)
CR2 自体は TIFF で、サムネイル (小と中?) と raw データがまとまって入っている (あとなんか謎の IFD が一個ある) のだけれど、raw データはさらに JPEG でラップされてハフハフされてる。ちなみに TIFF の構造は使っているけど TIFF としては Invalid (raw の IFD は width や height を持ってなかったり、あと前記の謎の IFD があったり) なので扱いにくい。
思うに、Adobe DNG に変換してからやったほうがいいとは思うんだけど、結局 Adobe DNG も TIFF+JPEG なんだ?みたいなのをソース読んだりして感じたので今のままやってたりたり。というか DNG SDK をダウンロードしようと思ったらできなかったのでそのうちやるみたいな感じで。DNG に対応したって、結局ベイヤーたんじゃないならびのやつは独自に書いてあげないといけないんだろうし (そうじゃないと raw じゃない) なんかあんま意味あんのかなと思ったり思わなかったり。そこらへんってどうなってるんだろう。
どうでもいいといえばどうでもいいけど、dcraw は goto とかグローバル変数とか使いまくりでしかも、バアタリティ全開のメーカー名が入った変数名とか省略済み変数名とかありまくりなので読みにくさがやばくてっていうかもうソースだけで読むとか無理というか、途中の機器判定のロジックとかソース読んだだけじゃマジックナンバーが多すぎて意味不明なので結局実際にファイルを読み込ませて gdb を追ったっていうかなんていうか……
眠いので、寝よう
http://lab.lowreal.net/trac/browser/c/tiff.rb (書いた TIFF パーサ。ろくにテストしてない。先にテスト書くべきだった。けど、ちょうどいいデータがなくてめんどくさかった)