IGraphBuilder を使用して、ビデオ キャプチャ デバイスを画面にレンダリングしています。このプロセスでは、キャプチャ フィルターをグラフに追加し、次に VideoMixingRenderer をグラフに追加し (カスタム アロケーターを使用)、最後に graph.Render() を呼び出して Intelligent Connect を使用してピンを配線します。状況によってはこれがうまく機能し、カスタム アロケータが適切に読み込まれます (そして InitializeDevice が呼び出されます) が、別の状況ではカスタム アロケータが使用されず、グラフに追加された VMR の代わりにキャプチャ デバイスを表示する ActiveMovie ウィンドウが表示されます。 . インテリジェント コネクトはキャプチャ デバイス フィルタを VMR に接続するのではなく、独自のレンダラーを作成しているように見えます。これをデバッグするためのツールやテクニックはありますか? graph.Render() への呼び出しは 0 の HR で成功するので、私は' m 接続の失敗について DirectShow から情報が返されない。DirectShow で何が起こっているかをよりよく理解できる診断ツールが存在することを願っています。
1556 次
1 に答える
7
インテリジェントな接続ロジックにより、エラーの追跡に使用できるログ ファイルが作成されます。IGraphBuilder::SetLogFile (または graphedt メニュー項目) を使用します。これにより、グラフ作成中のすべてのアクティビティがログに記録されます。
vmr への接続に失敗する最も一般的な理由は、アップストリーム フィルターが独自のアロケーターを使用することを主張することであり、vmr も同様です。場合によっては、2 つの間で変換 (色空間変換など) が行われる可能性があります。これにより、バッファーがコピーされ、vmr のアロケーターが使用されます。とにかく、そのようなものは可能な説明です。
G
于 2010-01-28T20:32:31.977 に答える