SetShapeDmaCommand
Inicializa um comando DMA do SHAPE.Sintaxe
Parâmetros
command _Inout_Tipo: SHAPE_FLOWGRAPH_COMMAND* O comando SHAPE_FLOWGRAPH_COMMAND a ser inicializado. contextId
Tipo: UINT32 ID do contexto DMA (ou seja, o índice) que esse comando referenciará. mixBuffer
Tipo: UINT32 O buffer de mixagem do qual ler ou no qual gravar, dependendo da configuração do sinalizador writeToMemory. writeToMixBuffer
Tipo: bool True se o comando DMA deve gravar no buffer de mixagem especificado e ler da memória principal. False se o comando DMA deve ler do buffer de mixagem especificado e gravar na memória principal.
Valor retornado
Tipo: HRESULT Se a função for bem-sucedida, ela retornaráS_OK. Se um ou mais argumentos forem inválidos, a função retornará E_INVALIDARG.
Comentários
O sistema DMA (Direct Memory Access) dá suporte à funcionalidade de leitura e gravação com conversão automática de float para inteiro e de inteiro para float. O sistema DMA usa buffers circulares contendo amostras desintercaladas em blocos de 128 amostras. O processador 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 da memória principal do sistema para os buffers de mixagem para processamento adicional. O DMA é feito por bloco, transferindo um quadro de áudio de dados por vez. Para habilitar 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 pulados a partir do endereço base ao ler ou gravar amostras. Fluxos multicanal exigem um contexto 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 sinalizadorfloatConvert do contexto DMA.
a direção do DMA (leitura ou gravação) é especificada no comando DMA, não no contexto DMA. Isso ajuda a reduzir a quantidade de largura de banda de dados. O mecanismo 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.
