私は、MediaFoundation SourceReader技術を使用してUSBカメラストリーミングデスクトップアプリケーションを開発しています。カメラはUSB3.0をサポートしており、1080p MJPGビデオフォーマット解像度で60fpsを提供します。MediaFoundationのインテルハードウェアMJPEGデコーダMFTを使用する方法Windowデスクトップアプリケーション用のSourceReader?
ソフトウェアMJPEGデコーダMFTを使ってMJPGをYUY2フレームに変換し、次にRGB32フレームに変換してウィンドウに描画しました。 60fpsの代わりに、私はこのソフトウェアデコーダを使用するときにウィンドウに30fpsしかレンダリングできません。私はこのサイトに質問を投稿し、インテルハードウェアMJPEGデコーダMFTを使用してフレームドロップの問題を解決する提案を得ました。 IMFTransform :: ProcessInputの()メソッドを呼び出すときをMF_E_NOTACCEPTING -
私はエラー0xC00D36B5に直面しています。このエラーを解決するために、MSDNはIMFTranformインターフェイスを非同期的に使用することを提案しました。そこで、私はIMFMediaEventGeneratorすべてのIn/OutサンプルのGetEventへのインタフェースを使用しました。正常に、私は1つの入力サンプルだけを処理でき、次にIMFMediaEventGenerator :: GetEvent()メソッドはを返します。MF_E_NO_EVENTS_AVAILABLEエラー(GetEvent()は同期)です。
私は非同期SourceReaderのコールバックだけでなく、IMFTransformを設定しようとしたが、MFAsyncCallback ::呼び出し方法は、私がGetEventメソッドを使用することを計画し、したがって、起動されていません。
私には何かがありませんか?はい、誰かが私のプロジェクトにIntel Hardware Decoderを使用するように案内しますか?
topoeditでトポロジを最初にアセンブルしようとしましたか? – Mgetz
あなたの返信ありがとう、Mgetz.Theカメラは、YUY2とMJPGビデオフォーマットの両方をサポートしています。最初は、カメラはYUY2ビデオ形式を再生し、MJPG形式を変更する必要があります。私はDirectShowでグラフを構築する方法を知っています。私はYUY2からMJPEGビデオ形式に切り替える方法を知らなかった。MJPG形式のトポロジを組み立てる方法を教えてください。さらに、MediaSessionトポロジにこのデコーダを追加し、すべてが成功し、イベントで0XC00D5212(MF_E_TOPO_CODEC_NOT_FOUND)を受信しました。 – Abi
したがって、SDKに同梱されているtopoeditユーティリティを使用してトポロジをアセンブルし、動作することをテストすることをお勧めします。 topoeditでトポロジを構築できない場合はおそらく不可能です。 – Mgetz