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

El contexto de XBOX Media Audio (XMA).

<a id="syntaxSection" />

## Sintaxis

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

### Miembros

*sizeRead0*\
Tipo: UINT32

Escritura: tamaño, en bloques de 2 KB, del búfer de entrada izquierdo.

*numLoops*\
Tipo: UINT32

Lectura/escritura: número de bucles. 255 especifica un bucle infinito (continuo).

*validBuffer*\
Tipo: UINT32

Lectura/escritura: marcas de validez de los búferes de entrada.

| Valor | Descripción                            |
| ----- | -------------------------------------- |
| 00    | Ningún búfer es válido.                |
| 01    | Solo el búfer 0 (izquierdo) es válido. |
| 10    | Solo el búfer 1 (derecho) es válido.   |
| 11    | Ambos búferes son válidos.             |

*sizeWrite*\
Tipo: UINT32

Escritura: tamaño, en bloques de 256 bytes, del búfer de salida.

*offsetWrite*\
Tipo: UINT32

Lectura: desplazamiento, en bloques de 256 bytes, dentro del búfer de salida donde escribirá el hardware.

*sizeRead1*\
Tipo: UINT32

Escritura: tamaño, en bloques de 2 KB, del búfer de entrada derecho.

*loopSubframeEnd*\
Tipo: UINT32

Escritura: número de subfotograma del punto final del bucle, inclusive.

*reserved0*\
Tipo: UINT32

Reservado.

*loopSubframeSkip*\
Tipo: UINT32

Escritura: número de subfotogramas que se omitirán al principio del bucle. Los valores válidos son 0, 1, 2, 3 y 4.

*numSubframesToDecode*\
Tipo: UINT32

Escritura: número de subfotogramas que se descodificarán por pasada. Los valores válidos son 1, 2, 4 y 8.

*numSubframesToSkip*\
Tipo: UINT32

Escritura: número de subfotogramas que se omitirán. Los valores válidos son 0, 1, 2, 3 y 4.

*sampleRate*\
Tipo: UINT32

Escritura: frecuencia de muestreo de la secuencia. Los valores válidos están en la enumeración [SHAPE\_XMA\_SAMPLE\_RATE](/reference/audio/shapexmacontext/enums/shape_xma_sample_rate).

*numChannels*\
Tipo: UINT32

Escritura: número de canales de la secuencia. 0 especifica mono (un canal); 1 especifica estéreo (dos canales).

*reserved1*\
Tipo: UINT32

Reservado.

*validWrite*\
Tipo: UINT32

Lectura/escritura: marca de validez del búfer de escritura. 1 indica que el hardware puede escribir; 0 indica que el hardware no puede escribir.

*offsetRead*\
Tipo: UINT32

Lectura/escritura: desplazamiento, en bits, desde el principio del búfer de entrada.

*errorStatus*\
Tipo: UINT32

Lectura: uno o varios valores de error.

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

Lectura: marca de error. 0 si no se ha producido ningún error; 1 si se ha producido un error. Use [GetShapeXmaErrorStatus](/reference/audio/shapexmacontext/functions/getshapexmaerrorstatus) para recuperar los valores de error.

*loopStartOffset*\
Tipo: UINT32

Escritura: desplazamiento, en bits, desde el puntero del búfer de lectura donde el hardware comenzará a descodificar.

*parserErrorStatus*\
Tipo: UINT32

Lectura: valor de error del analizador.

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

Lectura: marca de error del analizador. 0 si no se ha producido ningún error; 1 si se ha producido un error. Use [GetShapeXmaParserErrorStatus](/reference/audio/shapexmacontext/functions/getshapexmaparsererrorstatus) para recuperar el valor de error.

*loopEndOffset*\
Tipo: UINT32

Escritura: desplazamiento, en bits, desde el puntero del búfer de lectura donde el hardware finalizará la descodificación.

*packetMetaData*\
Tipo: UINT32

Reservado para uso interno.

*currentBuffer*\
Tipo: UINT32

Lectura/escritura: búfer de entrada actual. 0 especifica el búfer izquierdo y 1 especifica el búfer derecho.

*ptrRead0*\
Tipo: UINT32

Escritura: puntero al búfer de entrada izquierdo. Alineado en límites de 2 KB; los 11 bits inferiores se omiten.

*ptrRead1*\
Tipo: UINT32

Escritura: puntero al búfer de entrada derecho. Alineado en límites de 2 KB; los 11 bits inferiores se omiten.

*ptrWrite*\
Tipo: UINT32

Escritura: puntero al búfer de salida. Alineado en límites de 64 bytes.

*ptrOverlapAdd*\
Tipo: UINT32

Escritura: puntero al búfer de trabajo. Alineado en límites de 128 bytes.

*writeBufferOffsetRead*\
Tipo: UINT32

Escritura: desplazamiento, en bloques de 256 bytes, del puntero de lectura en el búfer de salida.

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

## Comentarios

Esta estructura contiene el contexto del bloque descodificador XMA.

El tamaño máximo de un búfer de entrada es de 8 MB. Para determinar el estado de consumo de un búfer de entrada, examine los miembros *offsetRead*, *currentBuffer* y *validBuffer*.

Los miembros marcados como **Lectura** son escritos por la biblioteca del procesador de control de audio (ACP) y solo deben ser leídos por la aplicación. Los miembros marcados como **Escritura** los establece la aplicación y la biblioteca de ACP no los cambia. Los miembros marcados como **Lectura/escritura** los establece la aplicación, pero la biblioteca de ACP puede cambiarlos.

Para obtener más información, consulte la sección [XMA](/build/console-features/audio/overviews/shape-overview#ID4EYD) de [Información general de SHAPE](/build/console-features/audio/overviews/shape-overview).

<a id="requirementsSection" />

## Requisitos

**Encabezado:** shapexmacontext.h

**Plataformas compatibles:** consolas de la familia XBOX One y consolas XBOX Series

<a id="seealsoSection" />

## Documentación conceptual

* [Información general de ACP](/build/console-features/audio/overviews/acp-overview)

## Consulte también

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


## Related topics

- [ShapeXmaContext](/es/reference/audio/shapexmacontext/shapexmacontext_members.md)
- [SetShapeXmaSampleRate(SHAPE_XMA_CONTEXT*, SHAPE_XMA_SAMPLE_RATE)](/es/reference/audio/shapexmacontext/functions/setshapexmasamplerate.md)
- [SetShapeXmaOutputBuffer(SHAPE_XMA_CONTEXT*, void*)](/es/reference/audio/shapexmacontext/functions/setshapexmaoutputbuffer.md)
- [SetShapeXmaInputBuffer0(SHAPE_XMA_CONTEXT*, const void*)](/es/reference/audio/shapexmacontext/functions/setshapexmainputbuffer0.md)
- [SetShapeXmaInputBuffer1(SHAPE_XMA_CONTEXT*, const void*)](/es/reference/audio/shapexmacontext/functions/setshapexmainputbuffer1.md)
