1

Delphi 6 と DSPACK ライブラリを使用して DirectShow Transform フィルタを作成しました。DSPACK の基本 Filter クラスと、変換フィルターの例である「WAV Dest」サンプル アプリに属する​​コードを調べました。私が知る限り、Transform フィルターのソース IMediaSample または宛先 IMediaSample パラメーターの受信フィルターによってメモリが割り当てられていませんが、宛先 IMediaSample の長さが IMediaSample.SetActualLength() を使用して調整される可能性があります。

DirectShow API 仕様の一部である場合、これら 2 つのパラメーターに既にメモリが割り当てられている Transform フィルターを呼び出すコードに依存できることを確認したいだけなので、そうする必要はありません。それ以外の場合は、CoTaskMemAlloc() を使用して自分でその割り当てを行う必要があると思います。誰かがここで決定的な答えを教えてくれますか?

4

1 に答える 1

1

サンプルとアロケータ。フィルタは、接続ピアピンとアロケータをネゴシエートすることによってバッファを事前に割り当てることが期待されており、割り当て自体は、アロケータがコミットされているときに行われます。

あなたが提案したようにあなたは自分自身を割り当てる方法がありませんCoTaskMemAlloc

于 2011-11-17T06:06:10.767 に答える