デコーダを実装したので次はエンコーダなのですが、「AVI ファイルに対応した」エンコーダを書く方法が分かりません。

単に映像エンコーダコンポーネント(タイプ ‘imco’)を記述するリソースをコンポーネントに追加しただけだと、QuickTime 形式(つまり mov ファイル)で出力しようとしたときには一覧に出てくるのですが、AVI 形式で出力しようとしても一覧に出てきません。この一覧では、DV 系のコーデックは QuickTime 形式でも AVI 形式でも表示されています。「シネパック」は AVI 形式の方だけに表示され、「アニメーション」や「Apple Intermediate Codec」などは QuickTime 形式の方だけに表示されます。


左が AVI 形式、右が QuickTime 形式。QuickTime 形式の方に「Ut Video Codec Suite」が4つ見えるのはご愛嬌

コンポーネントの呼び出し時にログを出すようにしておくと、コンポーネントを開いた後 kImageCodecGetCodecInfoSelect だけ飛んで来てすぐに閉じてしまうため、CodecInfo 構造体で返す情報とコンポーネントのリソースだけで判断しているらしいことまでは分かります。しかし、DV 形式やシネパックを呼んだときに返ってくる情報と比較しても、CodecInfo 構造体にはそれらしきフラグは無いように見えますし、リソースの方にもやはりそれらしき情報は入っていないように見えます。リソースタイプ ‘avvc’ や ‘avvd’ は解説が「used by compressors/decompressors to list their AVI file four cc’s」などとなっていて一見それっぽいのですが、DV 形式等のサブタイプに対応するものは付いていないようです。

いろいろがんばってググってはみたのですが、ヒットするのは QuickTime Player 上で AVI ファイルを再生する方法ばかりで、エンコーダを書く方法に関するものはほとんどなく、AVI ファイルに対応させる話となると全く見つかりません。Windows/Microsoft でもこんなにドキュメンテーションひどくなかったぞ?

このままだと QuickTime 用エンコーダを実装できないまま放置ということになるかもしれません。

Trackback

3 comments untill now

  1. すいすい @ 2011-12-06 11:49

    >梅澤さん

    いつも利用させてもらっているすいすいです。

    ココらへんの記事は参考にはならないでしょうか?
    http://news.mynavi.jp/articles/2005/05/06/qtkit/006.html

    古い情報なので、関係ないかもしれませんが。

    開発頑張って下さい。

  2. 梅澤 威志 @ 2011-12-06 18:44

    んー、それは QuickTime を使う側の話のようなので、違いますね。

  3. すしすい @ 2011-12-07 16:07

    >梅澤さん

    関係ない話でしたか、失礼しました。

Add your comment now