2011-12-13 2 views
0

私はMedia Foundationを搭載したメディアプレーヤーで作業しています。私はDXVA-HDで後処理を使用しようとしています。しかし、HDデバイスを使ってVideoProcessBltHDを実行しようとすると、E_INVALIDARGSで失敗します。私が疑問に思うのは、私が入力として提供しているID39サーフェスで何らかの形で正しく動作していないということです。私は 'IMFMediaBuffer'から入力面を取得しています(これはSourceReaderのサンプルを読み込んで取得します)。「標準」からオフスクリーンプレーンサーフェイスを取得する方法IDirect3D9Surface

次のようにIが表面を抽出してい

: CHECK_HR(HR = MFGetService(video_buffer、MR_BUFFER_SERVICE、__uuidof(IDirect3DSurface9)、(**ボイド)& pSurface))。

ただし、DXVA-HD example on MSDNでは、VideoProcessBltHDが正常に動作します。

サンプルコードのIDirect3DSurface9サーフェスはオフスクリーンの平らなサーフェスですが、 ビデオプロセッサに「画面」(ビデオデータを含む)をオフスクリーンプレーンサーフェスとして渡すと「blt-operation」が成功しますか?

ご協力いただければ幸いです。

おかげ MOTS

答えて

1

私は、DirectXのコントロールパンネルでデバッグモードにフルのDirectX SDK、スイッチのランタイムライブラリをインストール示唆完全な検証を回し、エラーでブレークし、デバッグモードでアプリケーションを実行します。この方法で、DirectXの人間が読めるエラーの説明が表示されます。

+0

エラーとしてE_INVALIDARGが表示されています。ドキュメンテーションによると、VideoProcessBltHDは入力引数が間違っていないとこのエラーを返します。私は入力面をこの関数では無効に絞り込んだ。 MSDNで提供されているサンプルソースコードで表示される唯一の違いは、MSDNはオフスクリーンの単純なサーフェスを使用していることと、私が持っているサーフェスからそのソースを取得する方法がわかりません。また、サンプルコードを自分のコードに統合し、新しいサーフェス(画面外のプレーンサーフェス)を与えると、bltはうまく動作します。画面外面を得る手掛かりはありますか?ありがとう –

+0

@mots_g、無効なArgは一般化されたエラーです。デバッグモードランタイムは、特に無効な引数で間違っていることを人間の言語で説明します。表面の寸法が間違っている、メモリプールが間違っている、サーフェスフォーマットが間違っているなどの可能性があります。 – Ulterior

+0

私はあなたが示唆したようにデバッグを試みました。コードは破損しませんでしたが、VideoProcessBltの印刷が0x%x。-2147084809のエラーで失敗しました。 DirectXエラーのルックアップをチェックすると、-2147024809 = E_INVALIDARGとなります。 –

関連する問題