次の方法で共有


オーディオ圧縮マネージャーのしくみ

[このページに関連付けられている機能である Audio Compression Manager は、従来の機能です。 Microsoft では、新しいコードではこの機能を使用しないことを強くお勧めします。]

ACM は、既存のドライバー インターフェイス フックを使用して、波形オーディオ デバイスの既定のマッピング アルゴリズムをオーバーライドします。 これにより、ACM はデバイスで開かれた呼び出しをインターセプトできます。 通話がインターセプトされた後、ACM はさまざまなタスクを実行してオーディオ データを処理できます。たとえば、外部コンプレッサーや減圧装置をシーケンスに挿入します。

ACM は、次の種類のドライバーを管理します。

  • 圧縮および圧縮解除 (コーデック) ドライバー
  • フォーマット コンバーター ドライバー
  • フィルター ドライバー

コンプレッサと圧縮解除器は、1 つのフォーマットタイプを別のフォーマットタイプに変更します。 たとえば、圧縮機や圧縮解除器では、PCM (パルス コード変調) ファイルを ADPCM (アダプティブ差動パルス コード変調) ファイルに変更できます。 書式コンバーターは形式を変更しますが、データ型は変更しません。 たとえば、コンバータは 44 kHz、16 ビット のデータを 44 kHz の 8 ビット データに変更できます。 フィルターはデータ形式をまったく変更しませんが、波形オーディオ データを何らかの方法で変更します。 たとえば、フィルターでは、データ ストリームとそれ自体のエコーを組み合わせることができます。 1 つの ACM ドライバー、またはドライバー内のフィルター タグまたは書式タグも、上記の型の組み合わせをサポートしている場合があります。

波形オーディオ出力の場合、ACM はデータの各バッファーをコンバータに渡します。 コンバーターはデータを圧縮解除し、圧縮解除されたデータを "シャドウ" バッファー内の ACM に返します。 その後、ACM は、圧縮解除されたシャドウ バッファーを波形オーディオ ドライバーに渡します。 ACM は、準備メッセージを受信するたびにシャドウ バッファーを割り当てます。

波形オーディオ入力の場合、ACM は空のシャドウ バッファーをドライバーに渡します。 バックグラウンド タスクを使用して、ドライバーがシャドウ バッファーに入力した後に通知を受け取ります。 その後、ACM はバッファーをドライバーに渡して圧縮します。 圧縮が完了すると、ドライバーはデータをアプリケーションに渡します。