私は Media Foundation でメディア プレーヤーに取り組んでいます。DXVA-HD で後処理を使用しようとしています。しかし、HD デバイスを使用して VideoProcessBltHD を実行しようとすると、E_INVALIDARGS で失敗します。私が疑問に思っているのは、入力として提供している ID39Surface で何らかの形で正しく機能していないということです。「IMFMediaBuffer」から入力サーフェスを取得しています (これは、SourceReader からサンプルを読み取って取得します)。
次のようにサーフェスを抽出しています: CHECK_HR (hr = MFGetService( video_buffer, MR_BUFFER_SERVICE, __uuidof(IDirect3DSurface9), (void**)&pSurface) );
ただし、MSDN の DXVA-HD の例では、VideoProcessBltHD は正常に動作します。
一方、サンプル コードの IDirect3DSurface9 サーフェスは、オフ スクリーンのプレーン サーフェスです。「私のサーフェス」(ビデオ データを含む) をオフスクリーン プレーン サーフェスとしてビデオ プロセッサに渡し、「blt 操作」を成功させるにはどうすればよいですか?
どんな助けでも大歓迎です。
ありがとうモッツ