カスタムアロケータサンプルを使用してパネル上にビデオを表示しています。一部のファイルでは、アクティブなウィンドウでビデオを再生し、これは個別に表示されます。この不要なウィンドウが開かないようにするにはどうすればよいですか。
2 に答える
どう言う意味ですか?ファイルの再生を開始すると、実際のビデオを含むウィンドウが開きますか?
もしそうなら、あなたはおそらくビデオミキシングレンダーフィルターを調査したいと思うでしょう。現在の通話を傍受できる独自のカスタムアロケータを作成できます。これにより、どこにいても、好きな場所にビデオを描画できます。
または、個人的にはこれが簡単だと思います。ダンプフィルタの例を調べて、それを使用して独自のレンダラーを作成します。そうすれば、フレームを受け取ったときに、内部を気にすることなく、フレームを使って好きなことを行うことができます。アプリケーションの外部で使用できるようにしたくない場合は、非常に単純な書き込みフィルターです。
編集:IVMRFilterConfig9インターフェイスとSetRenderingModeをVMR9Mode_WindowlessにQueryInterfacedしましたか?
通常、デコーダーとレンダラーが接続に同意できなかった場合、ビデオはActiveMovieウィンドウで再生されるため、グラフビルダーはデフォルトのレンダラー(RenderFileメソッドを実行してグラフを自動的に作成する場合)を使用します。これは別々に再生されます。アロケータのInitializeDeviceメソッドでコードを確認します。InitializeDeviceが常に失敗する場合、ビデオはデフォルトのレンダラーでレンダリングされます。
VMR9Mode_Renderlessモードを使用していることを確認してください。また、VMR7 / 9でミキシングを使用していない場合は、SetNumberOfStreamsメソッドの呼び出しを削除することをお勧めします。これにより、作業が簡単になります。
カスタムアロケータの使用法の非常に良い例は、ここにあります。