> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SHAPE_XMA_CONTEXT

> SHAPE_XMA_CONTEXT

# SHAPE\_XMA\_CONTEXT

XBOX Media Audio (XMA) コンテキスト。

<a id="syntaxSection" />

## 構文

```cpp theme={null}
typedef struct SHAPE_XMA_CONTEXT {  
    UINT32 sizeRead0 : 12;  
    UINT32 numLoops : 8;  
    UINT32 validBuffer : 2;  
    UINT32 sizeWrite : 5;  
    UINT32 offsetWrite : 5;  
    UINT32 sizeRead1 : 12;  
    UINT32 loopSubframeEnd : 2;  
    UINT32 reserved0 : 3;  
    UINT32 loopSubframeSkip : 3;  
    UINT32 numSubframesToDecode : 4;  
    UINT32 numSubframesToSkip : 3;  
    UINT32 sampleRate : 2;  
    UINT32 numChannels : 1;  
    UINT32 reserved1 : 1;  
    UINT32 validWrite : 1;  
    UINT32 offsetRead : 26;  
    UINT32 errorStatus : 5;  
    UINT32 errorSet : 1;  
    UINT32 loopStartOffset : 26;  
    UINT32 parserErrorStatus : 5;  
    UINT32 parserErrorSet : 1;  
    UINT32 loopEndOffset : 26;  
    UINT32 packetMetaData : 5;  
    UINT32 currentBuffer : 1;  
    UINT32 ptrRead0;  
    UINT32 ptrRead1;  
    UINT32 ptrWrite;  
    UINT32 ptrOverlapAdd;  
    UINT32 writeBufferOffsetRead : 5;  
    UINT32 reserved2 : 25;  
    UINT32 stopWhenDone : 1;  
    UINT32 interruptWhenDone : 1;  
    UINT32 reserved[6];  
} SHAPE_XMA_CONTEXT  
```

<a id="membersSection" />

### メンバー

*sizeRead0*\
型: UINT32

書き込み: 左入力バッファーのサイズ (2 KB ブロック単位)。

*numLoops*\
型: UINT32

読み取り/書き込み: ループ数。255 は無限 (連続) ループを指定します。

*validBuffer*\
型: UINT32

読み取り/書き込み: 入力バッファーの有効性フラグ。

| 値  | 説明                   |
| -- | -------------------- |
| 00 | どちらのバッファーも有効ではありません。 |
| 01 | バッファー 0 (左) のみ有効です。  |
| 10 | バッファー 1 (右) のみ有効です。  |
| 11 | 両方のバッファーが有効です。       |

*sizeWrite*\
型: UINT32

書き込み: 出力バッファーのサイズ (256 バイト ブロック単位)。

*offsetWrite*\
型: UINT32

読み取り: ハードウェアが書き込む出力バッファー内のオフセット (256 バイト ブロック単位)。

*sizeRead1*\
型: UINT32

書き込み: 右入力バッファーのサイズ (2 KB ブロック単位)。

*loopSubframeEnd*\
型: UINT32

書き込み: ループ終了点のサブフレーム番号 (この値を含む)。

*reserved0*\
型: UINT32

予約されています。

*loopSubframeSkip*\
型: UINT32

書き込み: ループの先頭でスキップするサブフレーム数。有効な値は 0、1、2、3、4 です。

*numSubframesToDecode*\
型: UINT32

書き込み: 1 パスあたりにデコードするサブフレーム数。有効な値は 1、2、4、8 です。

*numSubframesToSkip*\
型: UINT32

書き込み: スキップするサブフレーム数。有効な値は 0、1、2、3、4 です。

*sampleRate*\
型: UINT32

書き込み: ストリームのサンプル レート。有効な値は [SHAPE\_XMA\_SAMPLE\_RATE](/reference/audio/shapexmacontext/enums/shape_xma_sample_rate) 列挙型に含まれます。

*numChannels*\
型: UINT32

書き込み: ストリームのチャネル数。0 はモノラル (1 チャネル)、1 はステレオ (2 チャネル) を指定します。

*reserved1*\
型: UINT32

予約されています。

*validWrite*\
型: UINT32

読み取り/書き込み: 書き込みバッファーの有効性フラグ。1 はハードウェアが書き込み可能であることを示します。0 はハードウェアが書き込めないことを示します。

*offsetRead*\
型: UINT32

読み取り/書き込み: 入力バッファーの先頭からのオフセット (ビット単位)。

*errorStatus*\
型: UINT32

読み取り: 1 つ以上のエラー値。

| エラー                                                                                                           | 値  |
| ------------------------------------------------------------------------------------------------------------- | -- |
| SHAPE\_XMA\_ERROR\_STATUS\_NO\_ERROR\_OCCURRED\_ERRORSET\_IS\_0                                               | 0  |
| SHAPE\_XMA\_ERROR\_STATUS\_WRITE\_BUFFER\_INVALID\_VALIDWR\_IS\_0                                             | 1  |
| SHAPE\_XMA\_ERROR\_STATUS\_INSUFFICIENT\_WRITE\_BUFFER\_SPACE\_VALIDWR\_IS\_1                                 | 2  |
| SHAPE\_XMA\_ERROR\_STATUS\_READ\_BUFFER\_INVALID\_VALIDBUFFER\_CURRBUF\_IS\_0                                 | 4  |
| SHAPE\_XMA\_ERROR\_STATUS\_FRAME\_CROSSES\_BOUNDARY\_INTO\_INVALID\_READ\_BUFFER\_VALIDBUFFER\_CURRBUF\_IS\_0 | 8  |
| SHAPE\_XMA\_ERROR\_STATUS\_FRAME\_CROSSES\_BOTH\_READ\_BUFFER\_BOUNDARIES                                     | 16 |

*errorSet*\
型: UINT32

読み取り: エラー フラグ。エラーが発生していない場合は 0、エラーが発生した場合は 1。エラー値を取得するには [GetShapeXmaErrorStatus](/reference/audio/shapexmacontext/functions/getshapexmaerrorstatus) を使用します。

*loopStartOffset*\
型: UINT32

書き込み: 読み取りバッファー ポインターからハードウェアがデコードを開始する位置までのオフセット (ビット単位)。

*parserErrorStatus*\
型: UINT32

読み取り: パーサー エラー値。

| エラー                                                      | 値  |
| -------------------------------------------------------- | -- |
| SHAPE\_XMA\_PARSER\_ERROR\_STATUS\_UNKNOWN\_STATE        | 1  |
| SHAPE\_XMA\_PARSER\_ERROR\_STATUS\_OUT\_OF\_RANGE        | 2  |
| SHAPE\_XMA\_PARSER\_ERROR\_STATUS\_FRAME\_SIZE\_EXCEEDED | 3  |
| SHAPE\_XMA\_PARSER\_ERROR\_STATUS\_BITSTREAM\_CORRUPTION | 4  |
| SHAPE\_XMA\_PARSER\_ERROR\_STATUS\_BARKVLC\_ERROR        | 5  |
| SHAPE\_XMA\_PARSER\_ERROR\_STATUS\_BARKRLC\_ERROR        | 6  |
| SHAPE\_XMA\_PARSER\_ERROR\_STATUS\_VLC4D\_ERROR          | 7  |
| SHAPE\_XMA\_PARSER\_ERROR\_STATUS\_VLC2D\_ERROR          | 8  |
| SHAPE\_XMA\_PARSER\_ERROR\_STATUS\_VLC1D\_ERROR          | 9  |
| SHAPE\_XMA\_PARSER\_ERROR\_STATUS\_RLC0\_ERROR           | 10 |
| SHAPE\_XMA\_PARSER\_ERROR\_STATUS\_RLC1\_ERROR           | 11 |
| SHAPE\_XMA\_PARSER\_ERROR\_STATUS\_LARGEVAL24\_ERROR     | 15 |

*parserErrorSet*\
型: UINT32

読み取り: パーサー エラー フラグ。エラーが発生していない場合は 0、エラーが発生した場合は 1。エラー値を取得するには [GetShapeXmaParserErrorStatus](/reference/audio/shapexmacontext/functions/getshapexmaparsererrorstatus) を使用します。

*loopEndOffset*\
型: UINT32

書き込み: 読み取りバッファー ポインターからハードウェアがデコードを終了する位置までのオフセット (ビット単位)。

*packetMetaData*\
型: UINT32

内部使用のために予約されています。

*currentBuffer*\
型: UINT32

読み取り/書き込み: 現在の入力バッファー。0 は左バッファー、1 は右バッファーを指定します。

*ptrRead0*\
型: UINT32

書き込み: 左入力バッファーへのポインター。2 KB 境界にアラインされます。下位 11 ビットは無視されます。

*ptrRead1*\
型: UINT32

書き込み: 右入力バッファーへのポインター。2 KB 境界にアラインされます。下位 11 ビットは無視されます。

*ptrWrite*\
型: UINT32

書き込み: 出力バッファーへのポインター。64 バイト境界にアラインされます。

*ptrOverlapAdd*\
型: UINT32

書き込み: 作業バッファーへのポインター。128 バイト境界にアラインされます。

*writeBufferOffsetRead*\
型: UINT32

書き込み: 出力バッファー内の読み取りポインターのオフセット (256 バイト ブロック単位)。

*reserved2*\
型: UINT32

予約されています。

*stopWhenDone*\
型: UINT32

内部使用のために予約されています。

*interruptWhenDone*\
型: UINT32

内部使用のために予約されています。

*reserved*\
型: UINT32\[6]

予約されています。

<a id="remarksSection" />

## 解説

この構造体には、XMA デコーダー ブロックのコンテキストが格納されます。

入力バッファーの最大サイズは 8 MB です。入力バッファーの消費状況を確認するには、*offsetRead*、*currentBuffer*、および *validBuffer* メンバーを調べます。

**Read** とマークされたメンバーは Audio Control Processor (ACP) ライブラリによって書き込まれるため、アプリケーションからは読み取り専用として扱う必要があります。**Write** とマークされたメンバーはアプリケーションによって設定され、ACP ライブラリでは変更されません。**Read/Write** とマークされたメンバーはアプリケーションによって設定されますが、ACP ライブラリによって変更される可能性があります。

詳細については、[SHAPE の概要](/build/console-features/audio/overviews/shape-overview) の [XMA](/build/console-features/audio/overviews/shape-overview#ID4EYD) セクションを参照してください。

<a id="requirementsSection" />

## 要件

**ヘッダー:** shapexmacontext.h

**サポートされているプラットフォーム:** XBOX One ファミリー本体および XBOX Series 本体

<a id="seealsoSection" />

## 概念ドキュメント

* [ACP の概要](/build/console-features/audio/overviews/acp-overview)

## 関連項目

[ShapeXmaContext](/reference/audio/shapexmacontext/shapexmacontext_members)


## Related topics

- [ShapeXmaContext](/ja-jp/reference/audio/shapexmacontext/shapexmacontext_members.md)
- [SetShapeXmaSampleRate(SHAPE_XMA_CONTEXT*, SHAPE_XMA_SAMPLE_RATE)](/ja-jp/reference/audio/shapexmacontext/functions/setshapexmasamplerate.md)
- [SetShapeXmaOutputBuffer(SHAPE_XMA_CONTEXT*, void*)](/ja-jp/reference/audio/shapexmacontext/functions/setshapexmaoutputbuffer.md)
- [SetShapeXmaOverlapAddBuffer(SHAPE_XMA_CONTEXT*, void*)](/ja-jp/reference/audio/shapexmacontext/functions/setshapexmaoverlapaddbuffer.md)
- [SetShapeXmaInputBuffer0(SHAPE_XMA_CONTEXT*, const void*)](/ja-jp/reference/audio/shapexmacontext/functions/setshapexmainputbuffer0.md)
