> ## 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

O contexto XBOX Media Audio (XMA).

<a id="syntaxSection" />

## Sintaxe

```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" />

### Membros

*sizeRead0*\
Tipo: UINT32

Gravação: tamanho, em blocos de 2 KB, do buffer de entrada esquerdo.

*numLoops*\
Tipo: UINT32

Leitura/Gravação: número de loops. 255 especifica loop infinito (contínuo).

*validBuffer*\
Tipo: UINT32

Leitura/Gravação: sinalizadores de validade dos buffers de entrada.

| Valor | Descrição |
| - | - |
| 00 | Nenhum buffer é válido. |
| 01 | Somente o buffer 0 (esquerdo) é válido. |
| 10 | Somente o buffer 1 (direito) é válido. |
| 11 | Ambos os buffers são válidos. |

*sizeWrite*\
Tipo: UINT32

Gravação: tamanho, em blocos de 256 bytes, do buffer de saída.

*offsetWrite*\
Tipo: UINT32

Leitura: deslocamento, em blocos de 256 bytes, no buffer de saída onde o hardware gravará.

*sizeRead1*\
Tipo: UINT32

Gravação: tamanho, em blocos de 2 KB, do buffer de entrada direito.

*loopSubframeEnd*\
Tipo: UINT32

Gravação: número do subquadro do ponto final do loop, inclusive.

*reserved0*\
Tipo: UINT32

Reservado.

*loopSubframeSkip*\
Tipo: UINT32

Gravação: número de subquadros a serem ignorados no início do loop. Os valores válidos são 0, 1, 2, 3 e 4.

*numSubframesToDecode*\
Tipo: UINT32

Gravação: número de subquadros a serem decodificados por passagem. Os valores válidos são 1, 2, 4 e 8.

*numSubframesToSkip*\
Tipo: UINT32

Gravação: número de subquadros a serem ignorados. Os valores válidos são 0, 1, 2, 3 e 4.

*sampleRate*\
Tipo: UINT32

Gravação: taxa de amostragem do fluxo. Os valores válidos estão na enumeração [SHAPE\_XMA\_SAMPLE\_RATE](/pt-BR/reference/audio/shapexmacontext/enums/shape_xma_sample_rate).

*numChannels*\
Tipo: UINT32

Gravação: número de canais no fluxo. 0 especifica mono (um canal); 1 especifica estéreo (dois canais).

*reserved1*\
Tipo: UINT32

Reservado.

*validWrite*\
Tipo: UINT32

Leitura/Gravação: sinalizador de validade do buffer de gravação. 1 indica que o hardware pode gravar; 0 indica que o hardware não pode gravar.

*offsetRead*\
Tipo: UINT32

Leitura/Gravação: deslocamento, em bits, a partir do início do buffer de entrada.

*errorStatus*\
Tipo: UINT32

Leitura: um ou mais valores de erro.

| Erro | Valor |
| - | - |
| 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*\
Tipo: UINT32

Leitura: sinalizador de erro. 0 se nenhum erro ocorreu; 1 se ocorreu um erro. Use [GetShapeXmaErrorStatus](/pt-BR/reference/audio/shapexmacontext/functions/getshapexmaerrorstatus) para recuperar os valores de erro.

*loopStartOffset*\
Tipo: UINT32

Gravação: deslocamento, em bits, a partir do ponteiro do buffer de leitura onde o hardware iniciará a decodificação.

*parserErrorStatus*\
Tipo: UINT32

Leitura: valor de erro do analisador.

| Erro | Valor |
| - | - |
| 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*\
Tipo: UINT32

Leitura: sinalizador de erro do analisador. 0 se nenhum erro ocorreu; 1 se ocorreu um erro. Use [GetShapeXmaParserErrorStatus](/pt-BR/reference/audio/shapexmacontext/functions/getshapexmaparsererrorstatus) para recuperar o valor de erro.

*loopEndOffset*\
Tipo: UINT32

Gravação: deslocamento, em bits, a partir do ponteiro do buffer de leitura onde o hardware encerrará a decodificação.

*packetMetaData*\
Tipo: UINT32

Reservado para uso interno.

*currentBuffer*\
Tipo: UINT32

Leitura/Gravação: buffer de entrada atual. 0 especifica o buffer esquerdo e 1 especifica o buffer direito.

*ptrRead0*\
Tipo: UINT32

Gravação: ponteiro para o buffer de entrada esquerdo. Alinhado em limites de 2 KB; os 11 bits inferiores são ignorados.

*ptrRead1*\
Tipo: UINT32

Gravação: ponteiro para o buffer de entrada direito. Alinhado em limites de 2 KB; os 11 bits inferiores são ignorados.

*ptrWrite*\
Tipo: UINT32

Gravação: ponteiro para o buffer de saída. Alinhado em limites de 64 bytes.

*ptrOverlapAdd*\
Tipo: UINT32

Gravação: ponteiro para o buffer de trabalho. Alinhado em limites de 128 bytes.

*writeBufferOffsetRead*\
Tipo: UINT32

Gravação: deslocamento, em blocos de 256 bytes, do ponteiro de leitura no buffer de saída.

*reserved2*\
Tipo: UINT32

Reservado.

*stopWhenDone*\
Tipo: UINT32

Reservado para uso interno.

*interruptWhenDone*\
Tipo: UINT32

Reservado para uso interno.

*reserved*\
Tipo: UINT32\[6]

Reservado.

<a id="remarksSection" />

## Comentários

Essa estrutura contém o contexto do bloco decodificador XMA.

O tamanho máximo de um buffer de entrada é de 8 MB. Para determinar o status do consumo de um buffer de entrada, examine os membros *offsetRead*, *currentBuffer* e *validBuffer*.

Os membros marcados como **Leitura** são gravados pela biblioteca do ACP (Audio Control Processor) e devem ser apenas lidos pelo seu aplicativo. Os membros marcados como **Gravação** são definidos pelo seu aplicativo e não são alterados pela biblioteca do ACP. Os membros marcados como **Leitura/Gravação** são definidos pelo seu aplicativo, mas podem ser alterados pela biblioteca do ACP.

Para obter mais informações, confira a seção [XMA](/pt-BR/build/console-features/audio/overviews/shape-overview#ID4EYD) de [Visão geral do SHAPE](/pt-BR/build/console-features/audio/overviews/shape-overview).

<a id="requirementsSection" />

## Requisitos

**Cabeçalho:** shapexmacontext.h

**Plataformas compatíveis:** consoles da família XBOX One e consoles XBOX Series

<a id="seealsoSection" />

## Documentação conceitual

* [Visão geral do ACP](/pt-BR/build/console-features/audio/overviews/acp-overview)

## Confira também

[ShapeXmaContext](/pt-BR/reference/audio/shapexmacontext/shapexmacontext_members)


## Related topics

- [SHAPE_XMA_CONTEXT](/reference/audio/shapexmacontext/structs/shape_xma_context.md)
- [ShapeXmaContext](/reference/audio/shapexmacontext/shapexmacontext_members.md)
