Windows と Xbox 360 の違い

ここでは、開発者が認識している必要のある Xbox 360 と Windows でのオーディオの主な違いについて説明します。

プロセッサの数

Xbox 360 に備えられたプロセッサの数は、既知で固定されています。Xbox 360 には、3 つの CPU コアがあり、各コアには 2 つのハードウェア スレッドが備わっています。開発者は、各自のソフトウェア スレッドを特定の CPU スレッドに割り当てることができるので、XAudio2 と XACT を独自のハードウェア スレッドで実行するように容易に設定できます。

Windows では、状況がより複雑になります。ハードウェア スレッドの数とその構成がマシンごとに変わり、構成を調べる方法が複雑になる可能性があるためです。関数 GetLogicalProcessorInformation を使用すると、異なるハードウェア スレッド間の関係に関する情報を得られますが、この関数は Windows Vista でのみ使用でき、Windows XP では使用できません。Windows XP の場合、使用できるハードウェア スレッドの数を判断するには、CPUID 命令および Intel や AMD が提供しているアルゴリズムを使用する必要があります。

オーディオ圧縮

Xbox 360 には、ハードウェア リアルタイム XMA デコーダーが搭載されています。ディスクやメモリーから読み込まれた XMA データは、迅速にデコードされます。Xbox 360 では、数百ものモノラル ストリームを同時にデコードできます。この XMA デコーダーはマルチチャンネル コンテンツのオーディオ データ インターリーブもサポートしており、CPU に負担をかけることなく 5.1 XMA コンテンツをデコードすることができます。また、このXMA ハードウェアはメモリー内サウンドのためにハードウェア内でループを実行することができます。そのハードウェア サポートのため、ほとんどの Xbox 360 コンテンツは XMA 形式です。

Windows にはハードウェアによる圧縮システムがなく、そのため XMA で複数の音声を扱うと負荷が高くなります。この理由から、Windows では、XACT と XAudio2 はコンピューター的に負荷が少ない ADPCM (Adaptive Differential Pulse Code Modulation) 圧縮形式のみをサポートします。

XAudio2 と XACT3 は、xWMA ソフトウェア デコーディングを XBox 360 と Windows の両方でサポートします。xWMA では、軽量ラッパーに WMA ビットストリーム形式を使用し、XMA より大きい圧縮率を提供しています。xWMA は、少ない CPU ヒット率でより大きい圧縮を実現できるので、ダイアログや音楽などに非常に有用です。XMA と同様の品質設定を使用すると、圧縮されたサウンドのビットレートや品質を調整できます。

プラットフォーム エンディアン

Windows と Xbox 360 の CPU には、異なるバイト順があります。Xbox 360 ではビッグエンディアン システムが、Windows ではリトルエンディアン システムが採用されています。このエンディアンの違いは、バイナリ データ ファイルを 2 つの プラットフォーム間で変換する必要があることを意味します。XACT では、特定のプラットフォーム用にコンテンツをビルドおよび配置するときに、この処理が自動的に行われますが、XAudio2 では、バイト順の違いが自動的に処理されません。Xbox 360 上で XAudio2 と共に使用するために Windows で作成されたコンテンツでは、オーディオ ファイルとは逆のバイト順にする必要があります。または、オーディオ ファイルが読み込まれる際に、バイト順を逆にする必要があります。

関連トピック