次の方法で共有


PCM 以外のストリームの S/PDIF パススルー送信

Sony/Philips デジタル インターフェイス (S/PDIF) 形式は、主に PCM オーディオ データの送信用に定義されていますが、非 PCM データの送信にも簡単に適用できます。 S/PDIF パススルー伝送の原理は、非 PCM データ ストリームが PCM ストリームであるかのように S/PDIF リンクを通過できることです。 パススルー送信では、S/PDIF 送信ポートと受信ポートが非 PCM ストリームのエンコードを理解する必要はありません。

WMA Pro と AC-3 は両方とも、同期フレームと呼ばれる単位でデジタル オーディオ ストリームを送信する圧縮された非 PCM 形式です。 各同期フレームには独自のヘッダーが含まれており、ストリーム内の他の同期フレームとは独立してデコードできます。 たとえば、48 kHz のサンプル レートでは、WMA Pro 同期フレームには、サンプル クロックの 2048 ティック (42.67 ミリ秒) の間再生するのに十分なデータが含まれています。 これと同じレートで、AC-3 同期フレームには 1536 ティック (32 ミリ秒) に相当するデータが含まれます。

48 kHz のサンプル レートでは、5.1 チャンネル WMA Pro 同期フレームが 8192 バイトを超えることはありません。これは、2048 ステレオ (2 チャンネル)、16 ビット PCM サンプルが占めるバイト数です。 同様に、5.1 チャンネル AC-3 同期フレームは 6144 バイトを超えることはありません。これは、1536 ステレオ、16 ビット PCM サンプルが占めるバイト数です。 (このルールには例外がありますが、このような種類の AC-3 同期フレームは非常にまれであり、S/PDIF 経由で送信できないため、ここでは無視できます。)

48 kHz WMA Pro または AC-3 オーディオ ストリームがデコードされずにデジタル形式で S/PDIF リンクを通過する場合、S/PDIF 送受信ポートはストリームをステレオ、16 ビット、48-kHz PCM ストリームと同じように扱うことができます。 。 WMA Pro-over-S/PDIF または AC-3-over-S/PDIF ストリームを送信できるピンのデータ範囲を指定する場合、S/PDIF ポートを介して PCM ストリームを送信するピンのデータ範囲と異なるのは、wave-format タグ自体だけです。 例については、WMA Pro データ範囲の指定のデータ範囲宣言を参照してください。

WMA Pro 圧縮ストリームが S/PDIF インターフェイス経由でリアルタイムよりも速く配信されるのを避けるため (つまり、43 ミリ秒のオーディオが 43 ミリ秒未満で配信されるのを防ぐため)、オーディオ アプリケーションは、同期フレームが 2048 ステレオ PCM サンプルと同じバイト数を占めるまで、WMA Pro 同期フレームにゼロを埋め込む必要があります。 AC-3 同期フレームも同様に、1536 ステレオ PCM サンプルのサイズにパディングする必要があります。

パディングされていない WMA Pro または AC-3 同期フレームを WaveCyclic を使用する PortCls アダプター ドライバーに送信しようとすると、ポート ドライバーがデータ不足を感知すると (データ ストリームに含まれるバイト数が 2 チャネルの非圧縮ストリームよりも少ないため)、循環バッファーを沈黙で埋めることに注意してください。 非 PCM ストリーム デコーダでは、非 PCM 形式ではなく PCM 形式であるこれらの無音期間を解釈する際に問題が発生します。

次の図は、S/PDIF パススルー送信のアプリケーション例を示しています。

Diagram showing a PC connected to an A/V receiver through a coaxial cable for S/PDIF pass-through transmission.

この図は、同軸ケーブルを介して外部のオーディオ/ビジュアル (A/V) レシーバーに接続された PC を示しています。 このケーブルは、PC のオーディオ デバイスの S/PDIF 出力ポートを A/V レシーバーの S/PDIF 入力ポートに接続します。

図の左端では、オーディオ アプリケーションが WMA Pro オーディオ ストリームから 8192 バイトのバッファの先頭に同期フレームを挿入します。 (このバッファ サイズは、単に説明を容易にするために使用されています。実際には、代わりに、たとえば 4096 バイトまたは 10240 バイトのバッファ サイズが使用される可能性があります。)アプリケーションは、バッファー内の残りのスペースをゼロで埋めます。 オーディオ ドライバーは、バッファーの内容を 8192 バイトの PCM データであるかのように送信するように S/PDIF 出力ポートをプログラムします。

同様に、A/V レシーバーの S/PDIF 入力ポートは、8192 バイトの PCM データであるかのようにストリームを受信します。 データを入力バッファにロードします。この例では、そのサイズも 8192 バイトです。 デコーダは、入力バッファから WMA Pro 同期フレームを抽出し、同期フレームを 5.1 チャネル オーディオ ストリームにデコードし、図の右端にあるサラウンド スピーカーからストリームを再生します。

接続の相手側のデコーダーにオーディオ ストリームが非 PCM 形式であることを知らせるために、オーディオ ドライバーは S/PDIF トランシーバーの /AUDIO ビットを設定する必要があります。 デコーダは、S/PDIF チャネル ステータス ブロックからこのビットを読み取り、データ ストリームが非 PCM 形式でエンコードされているかどうかを判断します。 このビットの設定は、非 PCM ストリームに対応するためにドライバーが行う必要がある唯一の特別な操作です。 その他すべての方法で、ドライバーはストリームを PCM データが含まれているかのように処理します。

多くの民生用デバイスは S/PDIF パススルー送信をサポートしていますが、USB や 1394 などの他のデジタル インターフェイスも、外部オーディオ デコーダへの非 PCM データのデジタル パススルー送信に適合させることができます。

ドルビー ラボラトリーズは、1992 年に AC-3 (ドルビー デジタル) 圧縮オーディオ形式を導入しました。 S/PDIF 経由で AC-3 をサポートする最初の民生用 A/V 受信機は、1997 年頃に入手可能になりました。 WMA Pro オーディオ ストリーム フォーマットのソフトウェア サポートは、2003 年の Microsoft Windows Media 9 シリーズ テクノロジのリリースにより利用可能になりました。 WMA Pro-over-S/PDIF をサポートする A/V レシーバーは 2003 年に導入されました。

Windows XP 以降では、waveOut、DirectSound、および DirectShow API は非 PCM 形式をサポートします。 DirectSound および waveOut API は、ドライバーが公開する PCM または非 PCM 形式をこれらの API のクライアントが自動的に利用できるように実装されています。