次の方法で共有


割り当てスキーム

次の図は、3 つのフィルターで使用するために割り当てられた 1 つのアロケーターを表しています。 システムでこれらのフィルターにアロケーター ハンドルが割り当てられていないため、変換フィルターまたはシンク フィルターに割り当てる必要はありません。

diagram illustrating a simple allocator configuration.

ソース フィルターはフレームを割り当て、それをデータで埋め、次のフィルターに送信します。 変換フィルターは、インプレース データ変換を実行し、フレームを次のフィルターに送信します。 シンク フィルターが I/O 操作を完了すると、ソース フィルターはフレームを解放または再利用します。 フロー制御は、シンク アロケーターから割り当てることができる未処理フレームの合計数と I/O 操作の完了率によって、このフィルター グラフで維持されます。

次の図は、ソース フレームが複数の宛先シンクにルーティングされるアロケーター構成を表しています。

diagram illustrating an allocator configuration with multiple sinks.

この図では、ファイル ライターはファイルへのウェーブ アウトを表し、デバイスはオーディオの送信先となるサウンド カードを表しています。

このフィルター グラフには、変換のアロケーターとデバイスのアロケーターの 2 つのアロケーターが含まれています。 ソース フィルターは、変換アロケーターからフレームを割り当て、それをデータで埋め、変換フィルターに送信してから、ファイル ライターに送信します。 フレームを受信すると、変換フィルターはデバイス アロケーターからフレームを割り当て、新しいフレームへのデータの変換を実行し、このフレームをデバイスに送信します。

フロー制御は、アロケーターから割り当てることができる未処理フレームの合計数と I/O 操作の完了率によって、このフィルター グラフで維持されます。 接続ピンを使用して作成されるソース/シンク セグメントの個別のリストごとに、個別のアロケーターが必要であることに注意してください。 個別のアロケーターが存在しない場合、特定のセグメントが使用可能なすべてのフレームを消費する可能性があり、次のセグメントには何も残らず、前のセグメントによって作成されたデータを処理するために 1 つ以上のフレームが必要になる場合があります。