0

メディアサブタイプが設定されていないISampleGrabberCB.BufferCBのBufferLenのサイズが、異なるプログラミング言語から呼び出された場合に異なる必要がある理由はありますか?

C#アプリとVB.NETアプリがあり、どちらも時計をオフにして、SampleGrabberにメディアサブタイプを設定せずに、できるだけ速くグラフを実行します。コードは同じです。C#アプリでは、サンプルがグラバーを通過するたびにBufferLenのサイズが異なります(予想どおり)。VB.NETアプリでは、BufferLenは一定の固定値です。

たとえば、グラフで1280 x 720のビデオを実行する場合、VBコードのBufferLenのサイズは常に1,382,400です(ビデオデコーダーの出力ピンが12ビットのNV12形式を示しているため、これは理にかなっています)。C#コードでは、BufferLenのサイズは低い値と高い値の間で大きく異なります。

なぜこれが起こるのか誰かが知っていますか?

4

2 に答える 2

0

問題が解決しました。実際、グラフは同一ではありません。C# アプリでは、AVI スプリッターは SampleGrabber に直接接続されています。VB アプリでは、予期しないビデオ デコーダーが 2 つの間にあります。VB コードは、グラフを分解して再構築する前にグラフをレンダリングしていることがわかります。これは、メディア サブタイプが既に設定されていることを意味します。お二方、ご協力ありがとうございました。

于 2013-03-22T10:35:16.670 に答える
0

可変バッファ長は、圧縮されたビデオを取得していることを示しています。それがなぜなのかは説明できませんが。1 つのバージョンが管理者として実行されていますか? それとも64ビット?

于 2013-03-22T08:17:40.430 に答える