> ## Documentation Index
> Fetch the complete documentation index at: https://docs.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).

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

### 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](https://docs.xbox.com/es/reference/audio/shapexmacontext/enums/shape_xma_sample_rate.md).

*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](https://docs.xbox.com/es/reference/audio/shapexmacontext/functions/getshapexmaerrorstatus.md) 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](https://docs.xbox.com/es/reference/audio/shapexmacontext/functions/getshapexmaparsererrorstatus.md) 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.

## 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](https://docs.xbox.com/es/build/console-features/audio/overviews/shape-overview.md#ID4EYD) de [Información general de SHAPE](https://docs.xbox.com/es/build/console-features/audio/overviews/shape-overview.md).

## Requisitos

**Encabezado:** shapexmacontext.h

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

## Documentación conceptual

* [Información general de ACP](https://docs.xbox.com/es/build/console-features/audio/overviews/acp-overview.md)

## Consulte también

[ShapeXmaContext](https://docs.xbox.com/es/reference/audio/shapexmacontext/shapexmacontext_members.md)


## Related topics

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