DirectShowと戦うスレ Part 4

このエントリーをはてなブックマークに追加
805デフォルトの名無しさん
教えてください。

1. 自作でフィルタを作ろうと思います。
  このフィルタの入力形式(ピンの設定)に優先順位を指定することは可能でしょうか。

  たとえばサブタイプを、RGB32 > YUY2 の優先順位にして、フィルタの組み合わが
  存在するのであれば IMediaControl::RenderFile() などによるグラフの自動生成の際に
  RGB32 を入力としたグラフを生成させることは出来ますか。

  今の環境ではレンダラフィルタを作成する場合に CBaseRenderer::CheckMediaType をオーバーライドして
  RGB32 でも YUY2 でもどちらも接続を許してしまうと YUY2 で接続されてしまいますが、
  RGB32 の方が処理が楽なので、出来ればそちらで繋いでほしいのです。

2. フィルタ内の処理の高速化について。

  素人考えでは、画素数の大きな動画ファイルの形式変換などを行なう場合、
  画素ごとに処理をベタで行なうとかなりの時間が掛かるように思います。

  それ自体はミリ秒単位ですむので人間の感覚としては大したことはないのですが、
  普通の動画の秒辺りのフレーム数などを考えると処理が間に合わなくなりコマ落ちしそうです。
  それでも出回っているフィルタでは、複雑そうなことをしているものでもコマ落ちなどはしていないと思います。

  ベタな処理の高速化というと、処理をマルチスレッド化して、たとえば処理するフレーム画を
  数分割して別個のスレッドに平行して処理させるなどの方法くらいしか思いつかないのですが、
  このあたりはどのように考えるべきなのでしょうか。

以上、ご教示ください。