調査を始めてから約2日で、無圧縮コーデックに何とかたどり着いた。思いの外、ここまでは早く到達できたと思う。
途中で悩んだポイントは WindowsのメディアプレイヤーやMediaPlayerClassicでは正しく再生できない状況があり、そのときでもAVIUtlやVirtualDubは問題なく表示できていたという妙な挙動で手こずっていた。
これらで何が違ったかというと、再生前のプレイヤー側のフォーマット調査の際に、ICM_DECOMPRESS_GET_FORMAT を投げるかどうか。
他、DECOMPRESS_QUERYの実装で自分が間違っていてRGB系フォーマットならOKを返してしまっていた点。
入門として最初に作るなら、フォーマットはコレ!ときめてそれ以外全く受け付けないようにしていればこのトラブルを避けられたと思う。
今できている Hello World的Codec では RGB24のみを受け付ける状態。このくらいだとコードがシンプルになる。
作り方がわかったところで、ちゃんとしたコーデック作成に向け準備を始めようかと思います。
それとは別に、Video For Windowsの、このコーデックにより対応フォーマットを増やせることをみこしたAPI設計は良く出来ていると思った。長年変わらずとも使えるってのはホント良く出来てる・・・もしかすると今となっては不都合なことも多いのかもしれないが、動く&使えるってところはやっぱり感心する。
まとめ
入門の際には RGB24の完全固定のフォーマットのみを受けることにしてまずは実装すべし。
動作を確認するツールは複数で試すこと。
infファイルの記述が難解・・・。先人のコピーをスタートとして、出来なければレジストリ直書きしてしまう。
これから始める場合には↑のことに注意したら、余計なハマリポイントに陥らないですむかもしれない。