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

# IncrementShapeDmaWritePointer

> IncrementShapeDmaWritePointer

# IncrementShapeDmaWritePointer

Incrementa o ponteiro de gravação.

## Sintaxe

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

### Parâmetros

*context*   \_Inout\_\
Tipo: [SHAPE\_DMA\_CONTEXT\*](/pt-BR/reference/audio/shapedmacontext/structs/shape_dma_context)

Ponteiro para uma estrutura [SHAPE\_DMA\_CONTEXT](/pt-BR/reference/audio/shapedmacontext/structs/shape_dma_context).

### Valor retornado

Tipo: void

## Comentários

Quando o fim de um quadro é atingido, essa função atualiza o quadro e define o ponteiro como zero.

Para calcular o tamanho de um buffer de DMA, use a seguinte fórmula:

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

Os ponteiros de leitura e gravação são incrementados da seguinte forma:

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

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

Os endereços dentro do buffer de áudio são calculados da seguinte forma:

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

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

Você pode evitar comandos de Direct Memory Access (DMA) bloqueados garantindo que seu buffer de áudio seja suficientemente grande e que os dados sejam transmitidos em intervalos regulares (relacionados ao tamanho do buffer). Por exemplo, se você estiver transmitindo quatro quadros de hardware por vez, garanta que algum múltiplo desses quadros (pelo menos em buffer duplo com oito quadros) esteja no buffer para que o hardware possa gravar à frente do ponteiro de leitura do título. Como alternativa, você poderia forçar o esvaziamento do buffer antes de enviar o próximo grafo de fluxo (consumir, atualizar o ponteiro de leitura de DMA e, em seguida, enviar o grafo de fluxo). Para obter mais detalhes, consulte [Comandos bloqueados](/pt-BR/build/console-features/audio/overviews/shape-overview#ID4EBGAC) em [Visão geral do SHAPE](/pt-BR/build/console-features/audio/overviews/shape-overview).

Você pode enviar grafos de fluxo para serem processados como persistentes ou não persistentes. Os grafos de fluxo persistentes são processados e, em seguida, permanecem residentes para repetir o processamento no próximo quadro, depois que os ponteiros de leitura e gravação avançarem e depois que outras informações de contexto forem atualizadas.

## Requisitos

**Cabeçalho:** shapedmacontext.h

**Plataformas compatíveis:** consoles da família XBOX One e consoles XBOX Series

## Confira também

[ShapeDmaContext](/pt-BR/reference/audio/shapedmacontext/shapedmacontext_members)


## Related topics

- [IncrementShapeDmaWritePointer](/reference/audio/shapedmacontext/functions/incrementshapedmawritepointer.md)
- [ShapeDmaContext](/reference/audio/shapedmacontext/shapedmacontext_members.md)
