2017-07-11 17 views
0

私はDirectShow操作を含むWin32 C++ DLLを呼び出すC#WinFormsアプリケーションを持っています。IMediaControl :: Run E_OUTOFMEMORY

カメラから13MP(4208 * 3120)をストリームすると、IMediaControl :: Run()APIがHRESULT値= E_OUTOFMEMORYで失敗します。

私は自分のメモリ割り当てと割り当て解除を確認しました。 また、/ LARGEADDRESSAWAREを有効にしました。 私はヒープコミットサイズを指定しようとしました。

しかし、それでもなお存在します。

何か不足していますか?あなたの考えを共有してください。

ありがとうございました。

+0

コンピュータのメモリが不足していないかどうかを確認しましたか? –

+0

はい。やった。 PCに十分なメモリがあります。 – sam

+0

まだメモリの問題である可能性があります。あなたのアプリは32ビットですか? PC RAMは関連性が低いです。大規模なアドレス認識をアプリケーション(EXE)に設定する必要があります。プロセスと仮想アドレスの使用状況を監視できる必要があります。 DirectShowパイプラインではバッファを割り当てるのが一般的です。そのような高解像度のメモリではコストがかかる可能性があります。 DirectShowフィルターグラフを知っておくと便利です(http://alax.info/blog/1678)。 @RomanR。 –

答えて

0

ご回答ありがとうございます。

ツール@RomanRで問題を発見できました。提案する。

問題は、私が静止画をトリガーしてすぐに解像度を切り替えることでした。実際に何が起こるかは、まだトリガーが処理されていることです。静止バッファはコールバックで処理されています。まだキャプチャのプロセスが完了する前に、私はグラフを壊しています。これが問題の原因です。