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

# IncrementShapeDmaReadPointer

> IncrementShapeDmaReadPointer

# IncrementShapeDmaReadPointer

Incrementa el puntero de lectura.

## Sintaxis

```cpp theme={null}
void IncrementShapeDmaReadPointer(  
         SHAPE_DMA_CONTEXT* context  
)  
```

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

### Valor devuelto

Tipo: void

## Comentarios

Cuando se alcanza el final de un fotograma, esta función actualiza el fotograma y establece el puntero en cero.

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 de acceso directo a memoria (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)
- [IncrementShapeDmaWritePointer](/es/reference/audio/shapedmacontext/functions/incrementshapedmawritepointer.md)
- [GetShapeDmaReadPointer](/es/reference/audio/shapedmacontext/functions/getshapedmareadpointer.md)
- [SetShapeDmaReadPointer](/es/reference/audio/shapedmacontext/functions/setshapedmareadpointer.md)
- [ACP_COMMAND_INCREMENT_DMA_POINTER](/es/reference/audio/acphal/structs/acp_command_increment_dma_pointer.md)
