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

# SetShapeDmaReadPointer

> SetShapeDmaReadPointer

# SetShapeDmaReadPointer

Establece el puntero de lectura de acceso directo a memoria (DMA).

## Sintaxis

```cpp theme={null}
HRESULT SetShapeDmaReadPointer(  
         SHAPE_DMA_CONTEXT* context,  
         UINT32 readPointer  
)  
```

### Parámetros

*context*   \_Inout\_\
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).

*readPointer*   \
Tipo: UINT32

El valor del puntero de lectura, en fotogramas (bloques de 128 muestras).

### Valor devuelto

Tipo: HRESULT

Código HRESULT de éxito o de error.

## Comentarios

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

Puede evitar los comandos DMA bloqueados asegurándose de que el búfer de audio sea lo suficientemente grande y de que los datos se transmitan a intervalos regulares (en relación con el tamaño del búfer). Por ejemplo, si transmite cuatro fotogramas de hardware a la vez, asegúrese de que en el búfer haya algún múltiplo de esos fotogramas (al menos con doble búfer, es decir, ocho fotogramas) para que el hardware pueda escribir por delante del puntero de lectura del título. Como alternativa, podría exigir el vaciado del búfer antes de enviar el siguiente grafo de flujo (consumir, actualizar el puntero de lectura de DMA y, a continuación, enviar el grafo de flujo). Para obtener más detalles, consulte [Comandos bloqueados](/build/console-features/audio/overviews/shape-overview#ID4EBGAC) en [Información general sobre SHAPE](/build/console-features/audio/overviews/shape-overview).

Puede enviar grafos de flujo para que se procesen como persistentes o no persistentes. Los grafos de flujo persistentes se procesan y, a continuación, permanecen residentes para repetir su procesamiento en el siguiente fotograma después de que los punteros de lectura y escritura hayan avanzado y de que se haya actualizado el resto de la información de contexto.

## Requisitos

**Encabezado:** shapedmacontext.h

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

## Consulte también

[ShapeDmaContext](/reference/audio/shapedmacontext/shapedmacontext_members)


## Related topics

- [ShapeDmaContext](/es/reference/audio/shapedmacontext/shapedmacontext_members.md)
- [GetShapeDmaReadPointer](/es/reference/audio/shapedmacontext/functions/getshapedmareadpointer.md)
- [IncrementShapeDmaReadPointer](/es/reference/audio/shapedmacontext/functions/incrementshapedmareadpointer.md)
- [SetShapePcmReadPointer](/es/reference/audio/shapepcmcontext/functions/setshapepcmreadpointer.md)
- [SetShapeDmaWritePointer](/es/reference/audio/shapedmacontext/functions/setshapedmawritepointer.md)
