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

# GetShapeDmaBufferFull

> GetShapeDmaBufferFull

# GetShapeDmaBufferFull

Obtém o sinalizador de buffer cheio.

## Sintaxe

```cpp theme={null}
bool GetShapeDmaBufferFull(  
         const SHAPE_DMA_CONTEXT* context  
)  
```

### Parâmetros

*context*   \_In\_\
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 de retorno

Tipo: bool

O sinalizador de buffer cheio.

## Comentários

O sistema de DMA (Acesso Direto à Memória) dá suporte à funcionalidade de leitura e gravação com conversão automática de float para inteiro e de inteiro para float. O sistema de DMA usa buffers circulares que contêm amostras desintercaladas em blocos de 128 amostras.

O processador de DMA permite que o SHAPE (Scalable Hardware Audio Processing Engine) envie dados dos buffers de mixagem para a memória principal do sistema e recupere dados do sistema principal para os buffers de mixagem para processamento adicional. O DMA é feito por blocos, transferindo um quadro de áudio de dados por vez. Para facilitar dados intercalados por bloco, um valor de salto especifica o número de blocos de quadros de áudio na memória do sistema a serem ignorados (a partir do endereço base) ao ler ou gravar amostras. Portanto, fluxos multicanal exigem um contexto de DMA por canal.

As amostras de dados de áudio são sempre lidas e gravadas como valores de 32 bits, inteiros ou float, conforme especificado no sinalizador `floatConvert` da estrutura [SHAPE\_DMA\_CONTEXT](/pt-BR/reference/audio/shapedmacontext/structs/shape_dma_context). Observe que a direção do DMA (leitura ou gravação) é especificada no comando de DMA, não no contexto de DMA. Isso ajuda a reduzir a quantidade de largura de banda de dados. O mecanismo de DMA não tem processamento de sinal, mas pode executar a conversão de float para inteiro (ou de inteiro para float). Isso permite que a CPU do aplicativo processe amostras de dados em formato de ponto flutuante.

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 maneira:

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

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

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

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

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

## Requisitos

**Cabeçalho:** shapedmacontext.h

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

## Confira também

[Visão geral do SHAPE](/pt-BR/build/console-features/audio/overviews/shape-overview)\
[ShapeDmaContext](/pt-BR/reference/audio/shapedmacontext/shapedmacontext_members)


## Related topics

- [GetShapeDmaBufferFull](/reference/audio/shapedmacontext/functions/getshapedmabufferfull.md)
- [ShapeDmaContext](/reference/audio/shapedmacontext/shapedmacontext_members.md)
