xWMA と XMA2 は、どちらも Windows Media Audio (WMA) 用に開発されたコーデックに由来し、両方とも XBOX ゲーム向けに専用に開発されています。XMA2 で使用される利用可能なコーデックとパラメーターのサブセットは、xWMA で使用されるサブセットよりも小さいです。xWMA と XMA2 の両方が XBOX 用に開発されましたが、これらは相互に交換可能ではありません。各ファイル フォーマットのヘッダーは異なり、フォーマットは Windows の PC バージョンとは互換性がありません。XMA2 および xWMA で使用されるコーデックも若干異なるため、それぞれが使用される圧縮システムからの独自のアーティファクトを持ちます。
xWMA エンコード
オーディオ データを xWMA にエンコードするには、xWMAEncode コマンド ライン ツール、または XWMAEncoder.lib に依存するカスタム ツールを使用します。xWMAEncode
XAudio2 で使用するオーディオ ファイルを xWMA としてエンコードするには、xWMA コマンド ライン エンコーダーを使用します。XWMAEncoder.lib
XWMAEncoder.lib は、xWMA コマンド ライン エンコーダーコマンド ライン ツールの代替として利用可能な静的リンク ライブラリです。カスタム ツールは、XWMAEncoder 関数を使用して xWMA エンコードを実行するためにこのライブラリに依存します。この関数の使用の詳細と例については、XBOX 360 のドキュメントを参照してください。xWMA デコード
xWMA のソフトウェア デコードは、XAudio2 の Windows および XBOX One で、また xWMADecode API を通じてサポートされています。xWMA ループ
xWMA は、xWMA ファイル内のループ領域や任意のパケットのループをサポートしません。xWMA ファイル全体のみをループできます。XAudio2 では、xWMA には、IXAudio2SourceVoice::SubmitSourceBuffer に渡される XAUDIO2_BUFFER の値に関するループに関連する制限があります。xWMA ファイルのすべてのオーディオ データが 1 つのバッファーとして送信され、ユーザーがそれをループしたい場合は、次の制限を満たす必要があります。- XAUDIO2_BUFFER.LoopBegin は常にゼロである必要があります。
- XAUDIO2_BUFFER.LoopLength はゼロ、またはファイル全体の xWMA データのサンプル単位のサイズである必要があります。
- XAUDIO2_BUFFER.LoopCount は任意の値を取ることができます。
- XAUDIO2_BUFFER.Flags は XAUDIO2_END_OF_STREAM に設定する必要があります。
xWMA ファイルの構造
xWMA ファイルは、次のタイプのチャンクを持つ標準的な RIFF ファイルです。 | チャンク FCC | 説明 | | --- | --- | --- | --- | | RIFF| 標準的な RIFF チャンクには次のものが含まれます。1. データ セクションの最初の 4 バイトに、値
XWMA を持つファイル タイプが含まれます。2. データ セクションの残りには、ファイル内の他のチャンクが含まれます。 | | fmt| このチャンクには、xWMA ファイルのフォーマット ヘッダーが含まれます。このチャンクのデータは、1 または 2 チャネルの xWMA データ用の WAVEFORMATEX 構造体、または 3 チャネル以上の xWMA データ用の WAVEFORMATEXTENSIBLE 構造体に対応します。 | | data| このチャンクには、エンコードされた xWMA オーディオ データが含まれます。xWMA が XAudio2 で使用される場合、data チャンクの内容はバッファーに読み込まれ、XAUDIO2_BUFFER 構造体の pAudioData メンバーとしてソース音声に渡されます。data チャンクの内容はバイト スワップする必要はありません。 | | dpds| このチャンクには、デコード済みパケット累積データ サイズ配列が含まれ、各要素は、対応する xWMA パケットが順にデコードされた後に累積されたバイト数です。このチャンクのサイズは UINT32 単位で測定され、そのデータ セクションの内容は XAudio2 で XAUDIO2_BUFFER_WMA 構造体を埋めるために使用されます。 |
