Skip to main content

GetShapeDmaNumFrames

Obtém o número de quadros de Direct Memory Access (DMA).

Sintaxe

Parâmetros

context   _In_
Tipo: SHAPE_DMA_CONTEXT*
Ponteiro para uma estrutura SHAPE_DMA_CONTEXT.

Valor retornado

Tipo: UINT32 Número de quadros.

Comentários

Você pode evitar comandos de 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ê pode 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 em Visão geral do SHAPE. O sistema de Direct Memory Access (DMA) oferece 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 Scalable Hardware Audio Processing Engine (SHAPE) 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 bloco, transferindo um quadro de áudio de dados por vez. Para facilitar dados intercalados em blocos, 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. 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 faz processamento de sinal, mas pode realizar 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:
Os ponteiros de leitura e gravação são incrementados da seguinte forma:
Os endereços dentro do buffer de áudio são calculados da seguinte forma:

Requisitos

Cabeçalho: shapedmacontext.h Plataformas compatíveis: consoles da família XBOX One e consoles XBOX Series

Confira também

ShapeDmaContext
Last modified on October 6, 2026