パレットがサポートされていなかったり、ピクセルフォーマットの対応が少なかったり、BMPですら1,2,4,8ビットに対応してなかったりする罠。
取り合えず、適当に2bp (BMPの2bit) に対応するパッチ書いてみた。
http://www4.pf-x.net/~nazodane/cgi-bin/index.cgi?mode=upload:show&name=ffmpeg-2bp.diff
まともに実装するにはPIX_FMT_GRAY2を実装しなきゃならん。
ところでbmpの32bit、最後のはalphaだよな。PIX_FMT_BGRA使うべきでね? あと、BITFIELDSじゃないときはmemcpy使うべきでね? って思った。あとBITFIELDSって仕様的に32bitしか使えんのか? 本当にって思った。元のコード、もの凄いダメダメな予感。直したいが、Linux上だとサンプルファイル集めるのが面倒な罠。
仕様上reservedなのにalphaとして使われているらしい? あと、compにJPEG(4)とPNG(5)があるらしい。混沌。
ffmpegは本家に取り入れてもらうためのパッチ開発が面倒なんだよなぁ。パッチを分割しないといけないから。
GNU Archで管理すれば楽かも? undo/redo的な意味で。
Archに四苦八苦してたらsvn-arch-mirrorというものを見つけたが、うまくいかないので使わないことにした。
色々やってやっと何とかうまくいった気がする。
リビジョン間差分の取得法が分からん (ファイルごとに分かれてるのは手に入るけど)。
undo/redoがうまくいってるか分からないというか、何かおかしい。undoで現在の変更と前回のコミット操作を巻き戻して欲しいのに、undoした状態でchangesを取っても何も返ってこない。
ふむぅ。
2bpってもしかしたらgrayじゃなくてカラーパレットあるのかも。もしそうなら、ちゃんとサポートする場合パレットの仕組みから作らなあかん。後で確認する。
パレットあり。