« 1つのEXEへ | メイン | エンコードしてみる »

2005年10月12日

動画エンコーダー開発:: とりあえずエンコードが出来るように

    

Directshow Filters for Ogg Vorbis, Speex, Theora and FLACのOgg Muxフィルタはフィルタ同士の接続シーケンス中にコールされるSetMediaTypeによって、各種パラメタを設定しているのだが、TheoraEncoderに何も接続されていない状態で接続すると、SetMediaTypeで渡されるメディアタイプには必要なパラメタが入っておらず、不定な値を使ってパラメタを設定してしまう。
で、その後フィルタグラフを構築して開始すると、0除算で落ちる。
フィルタグラフは、入力側から順番に作っていかないといけないようだ。(不定な順序で構築されても、最初のサンプルを受け取った時点でパラメタを設定するような作りになっていれば大丈夫だが、そのような作りにはしなさそうだな。。。)

そこで、初めは単にTheoraEncoderとVorbisEncoder、OggMuxを入れるだけにし、後はIGraphBuilder::RenderFileでフィルタグラフを作るようにした。
こうしたらうまく接続され、0除算は発生しなくなった。

これで、入力ファイルと出力ファイルを選択するとエンコードが出来るようになるところまで出来た。
ただし、進み具合などはまったく不明。
後は、サンプルグラバフィルタを入れて途中の画像を得て表示したり、エンコードの設定をGUIで出来るようにすれば、とりあえずはそれっぽくなる。



投稿者 Takenori : 2005年10月12日 19:58




comments powered by Disqus
Total : Today : Yesterday : なかのひと