のDirectXメディアオブジェクト(DMO)documentationは、効率のために、(IMediaBuffer
インタフェースをサポートする)培地試料を保持するバッファが代わりに常に破壊/作成されるのでプールされるべきである、ということをお勧め:IMFMediaBufferオブジェクトをプールする必要がありますか?
最も簡単な解決策はです各サンプルに新しいバッファを割り当てますが、これは非効率的です。
より良い解決策は、 バッファのプールを管理するオブジェクトを実装することです。これを行うには、参照カウントが0になったときに、自分自身を削除する代わりに というバッファマネージャのメソッドを呼び出す IMediaBuffer実装のReleaseメソッドにコードを記述します。 バッファマネージャは、 バッファオブジェクトに割り当てられたポインタのリストを保持できます。バッファマネージャにメソッドを作成して、空きバッファのリストを確認し、必要に応じてアプリケーションに のアクセスができるようにポインタを返します。
DMOがMedia Foundation Transforms(MFT)に置き換えられたので、私はドキュメントで同じアドバイスを見つけることができません。 同等のバッファオブジェクトを管理するときに考慮する必要のあるこのプーリング戦略(今度はIMFMediaBuffer
インターフェイスを実装する)ですか?
これをクリアしていただきありがとうございます。私はDMO対応のアプリケーションをMFに移行する過程にあり、バッファプールをスクラップするか、MFバッファを再設計する必要があるかどうかは不明でした。 =) – BlueStrat