Y422とYUY2のフォーマットは違うってことを知りました。

同じYUV4:2:2空間でも、Y422はUYVYのバイト列、YUY2はYUYVのバイト列だったのですね。
なぜにこういう話になったかというと、がっこーではlinuxで研究をしているのですが、DivXやMS MPEG4などの圧縮による実験を行いたくなりました。
今の実験に用いているファイルは、ヘッダ情報等がないYUV系のファイルですが、簡単にエンコードするためには、Windowsの映像系のソフトで読み込める形式にしなければなりません。
連番bmp等にするとRGB系に変換しなければならないので、整数化誤差が出てしまいます。
avilib.hを用いてYUV系のaviを作ってみても、なぜか壊れたaviしか作れませんでした。
そこで、AviUtlの入出力プラグインを作成して、直接YUV系のファイルを読み書きすればいいという結論に達しました。
ここで先ほどのフォーマットの話が出てくるわけです。
AviUtlでは直接YUY2空間を扱えますので、同じYUV4:2:2だと思ってそのまま読み込んだら色がおかしいわけですよ。
これを解決するのにけっこう時間がかかってしまいました。
色がおかしいだけなら、同じ画素に対応するビット列内での順番が違うってすぐに気づけよ、オレ。
今日はとりあえず、設定の変更等ができない、簡単な入力プラグインを作ってみました。
がっこーにはWindowsの開発環境が無いので、家に帰ってきてからね。。。orz