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

# GetShapeDmaChannel

> GetShapeDmaChannel

# GetShapeDmaChannel

Obtiene el canal de audio actual.

## Sintaxis

```cpp theme={null}
UINT32 GetShapeDmaChannel(  
         const SHAPE_DMA_CONTEXT* context  
)  
```

### Parámetros

*context*   \_In\_\
Tipo: [SHAPE\_DMA\_CONTEXT\*](/reference/audio/shapedmacontext/structs/shape_dma_context)

Puntero a una estructura [SHAPE\_DMA\_CONTEXT](/reference/audio/shapedmacontext/structs/shape_dma_context).

### Valor devuelto

Tipo: UINT32

El canal actual.

## Comentarios

El sistema de acceso directo a memoria (DMA) admite funcionalidad de lectura y escritura con conversión automática de punto flotante a entero y de entero a punto flotante. El sistema DMA usa búferes circulares que contienen muestras desentrelazadas en bloques de 128 muestras.

El procesador de DMA permite que el motor de procesamiento de audio por hardware escalable (SHAPE) envíe datos de los búferes de mezcla a la memoria principal del sistema y recupere datos del sistema principal en los búferes de mezcla para su procesamiento posterior. El DMA se realiza por bloques, transfiriendo un fotograma de audio de datos a la vez. Para facilitar los datos entrelazados por bloques, un valor de salto especifica el número de bloques de fotogramas de audio de la memoria del sistema que se deben omitir (desde la dirección base) al leer o escribir muestras. Por lo tanto, las secuencias multicanal requieren un contexto de DMA por canal.

Las muestras de datos de audio siempre se leen y escriben como valores de 32 bits, ya sean enteros o de punto flotante, según se especifique en la marca `floatConvert` de la estructura [SHAPE\_DMA\_CONTEXT](/reference/audio/shapedmacontext/structs/shape_dma_context). Tenga en cuenta que la dirección del DMA (lectura o escritura) se especifica en el comando DMA, no en el contexto de DMA. Esto ayuda a reducir la cantidad de ancho de banda de datos. El motor de DMA no realiza procesamiento de señal, pero puede realizar la conversión de punto flotante a entero (o de entero a punto flotante). Esto permite que la CPU de la aplicación procese las muestras de datos en formato de punto flotante.

Para calcular el tamaño de un búfer DMA, use la fórmula siguiente:

```cpp theme={null}
fullBufferSizeInBytes = 128 * 4 * numChannels * numFrames  
```

Los punteros de lectura y escritura se incrementan de la siguiente manera:

```cpp theme={null}
readPointer = (readPointer + 1) % numFrames 

writePointer = (writePointer + 1) % numFrames  
```

Las direcciones dentro del búfer de audio se calculan de la siguiente manera:

```cpp theme={null}
readAddress = audioBuffer + (128 * 4 * ((readPointer * numChannels) + channel))   

writeAddress = audioBuffer + (128 * 4 * ((writePointer * numChannels) + channel))  
```

## Requisitos

**Encabezado:** shapedmacontext.h

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

## Consulte también

[Información general sobre SHAPE](/build/console-features/audio/overviews/shape-overview)\
[ShapeDmaContext](/reference/audio/shapedmacontext/shapedmacontext_members)


## Related topics

- [ShapeDmaContext](/es/reference/audio/shapedmacontext/shapedmacontext_members.md)
- [GetShapeDmaNumChannels](/es/reference/audio/shapedmacontext/functions/getshapedmanumchannels.md)
- [SetShapeDmaChannel](/es/reference/audio/shapedmacontext/functions/setshapedmachannel.md)
- [SetShapeDmaNumChannels](/es/reference/audio/shapedmacontext/functions/setshapedmanumchannels.md)
- [GetShapeXmaNumChannels](/es/reference/audio/shapexmacontext/functions/getshapexmanumchannels.md)
