2016-08-30 26 views
1

私は、MEDIATYPE_Stream/MEDIASUBTYPE_MPEG1Videoのメディアフィルタをソースフィルタとしてグラフに表現しています。さらに、VMRまたはEVRをグラフに挿入します。インテリジェントな接続 - GraphBuilder接続とレンダリング

ビデオレンダラの入力ピンにソースフィルタの出力ピン(GraphBuilder - > Connect)を接続しようとすると失敗します(0x80040217 - VFW_E_CANNOT_CONNECT)。ただし、ソースフィルタの出力ピン(GraphBuilder - > Render)のレンダリングは成功します。 MPEG-2スプリッタ(MPEG-2デマルチプレクサではありません)を挿入します。もちろん、デコーダです。しかし、これはスプリッタに関連している必要があります。なぜなら、これを手動で挿入し、ソースフィルタの出力ピンをビデオレンダラに接続しようとすると、それはGraphBuilder - > Splitterを使用して接続します。

レンダリングの代わりにConnectを使用したいのは、ビデオレンダラーが特別な構成(カスタムプレゼンター)を必要としているからです。

私は「接続」と「レンダリング」が異なる動作をする理由に興味があります。一方、私はこの問題をどう扱うべきかアドバイスを求めています。

MPEG-2スプリッタをあらかじめデフォルトで挿入することは可能でしょうが、私はこれを好まないのです。無視されるより高いメリットを備えた、より適したフィルターがあるかもしれません。 MSDNでは、MPEG-2スプリッタは推奨されていません。

編集:残念ながら、LAVSplitterは解決策でもありません。ファイル内での配置がかなり遅いです。時には、それは減速率で再生されるように見えます(タイムコードの焼き込みは報告された位置から戻ります - むしろ奇妙ですが、それは別の話です)。

答えて

1

MPEG2スプリッタのフィルタメリットは "normal - 1"に設定されていますが、推奨されていないため、インテリジェント接続中に列挙されないことがあります。 一方、手動で追加すると、グラフは、インテリジェント接続中にグラフを使用します。これは、すでにグラフに追加されているフィルタを最初に使用しようとするためです。この場合の唯一の解決策は、MPEG2スプリッタを手動で追加することだと思います。

+1

これはこれを説明するかもしれません。そのような行動が正式に文書化されていないことは残念である。私は答えとしてこれを受け入れる。ありがとう! – JeffRSon

関連する問題