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

# Visão geral do XDSP

> Use a API XDSP para reverberação por convolução acelerada por hardware, FFT e IFFT e envelopamento de resposta ao impulso em consoles XBOX Series X|S.

Este tópico fornece uma visão geral das [APIs XDSP](/pt-BR/reference/audio/xdspaudio/xdspaudio_members). O XDSP permite que os títulos aproveitem o recurso de Reverberação por Convolução Acelerada por Hardware na geração de consoles XBOX Series X|S. A implementação atual é capaz de processar 80 segundos de resposta ao impulso em tempo real. Por exemplo, 40 fluxos de 2 segundos de resposta ao impulso cada, simultaneamente, em tempo real.

### Novidades da versão de outubro de 2022

* Duas novas APIs, [XDspConnectWithMaximumStreamLimit](/pt-BR/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit) e [XDspSubmitCommandWithEnvelope](/pt-BR/reference/audio/xdspaudio/functions/xdspsubmitcommandwithenvelope), foram adicionadas.  **XDspConnectWithMaximumStreamLimit** usa menos memória internamente se o número máximo de fluxos que podem ser ativados for menor que 256. Por outro lado, [XDspConnect](/pt-BR/reference/audio/xdspaudio/functions/xdspconnect) considera 256 fluxos e, portanto, usa mais memória.
  **XDspSubmitCommandWithEnvelope** permite o envelopamento do filtro de resposta ao impulso. Consulte [Visão geral do envelopamento usando a API XDSP](/pt-BR/build/console-features/audio/overviews/xdsp-overview-enveloping).

### Recursos da versão

* Para convolução, os tamanhos de bloco compatíveis são 512 e 1024 quadros. O desempenho será melhor com um tamanho de bloco de 1024 quadros.
* Para FFT/IFFT, os tamanhos de bloco compatíveis são 512, 1024 e 2048 quadros.
* A convolução é compatível com os modos mono, estéreo e estéreo desintercalado, com respostas ao impulso mono e estéreo.
* A chamada [XDspConnect](/pt-BR/reference/audio/xdspaudio/functions/xdspconnect) ou [XDspConnectWithMaximumStreamLimit](/pt-BR/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit) estabelece uma conexão com o hardware e retorna um XDspClientHandle. Somente 8 conexões podem estar ativas a qualquer momento.
* O valor máximo de *aggregateImpulseResponseInSeconds* compatível na chamada para [XDspConnect](/pt-BR/reference/audio/xdspaudio/functions/xdspconnect) é 128. Esse também é o máximo considerando todas as chamadas de XDspConnect. Se uma única chamada de XDspConnect for feita com 128 para aggregateImpulseResponseInSeconds, nenhuma outra chamada de XDspConnect poderá ser feita com um valor de aggregateImpulseResponseInSeconds maior que 0. aggregateImpulseResponseInSeconds deve ser maior que zero para permitir a ativação de fluxos para processamento de convolução.
* Um máximo de 256 fluxos pode ser ativado usando [XDspActivate](/pt-BR/reference/audio/xdspaudio/functions/xdspactivate) para um determinado [XDspClientHandle](/pt-BR/reference/audio/xdspaudio/handles/xdspclienthandle) retornado por [XDspConnect](/pt-BR/reference/audio/xdspaudio/functions/xdspconnect). Um máximo de *maximumStreamCount* fluxos pode ser ativado usando [XDspActivate](/pt-BR/reference/audio/xdspaudio/functions/xdspactivate) para um determinado [XDspClientHandle](/pt-BR/reference/audio/xdspaudio/handles/xdspclienthandle) retornado por [XDspConnectWithMaximumStreamLimit](/pt-BR/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit), em que *maximumStreamCount* é o número de fluxos usado na chamada de **XDspConnectWithMaximumStreamLimit**. Esses fluxos podem ser de qualquer [XDspProcessType](/pt-BR/reference/audio/xdspaudio/enums/xdspprocesstype).
* Quando uma entrada estéreo é usada, a resposta ao impulso agregada máxima compatível cai para 64 segundos.
* Todos os buffers passados para a API devem estar alinhados em 16 bytes. O hardware pode apresentar uma falha e ser redefinido se os buffers não estiverem alinhados em 16 bytes. [XDspStatus.result](/pt-BR/reference/audio/xdspaudio/structs/xdspstatus) indicará XDSP\_E\_DEVICE\_FATAL\_ERROR quando o hardware tiver sofrido uma falha/travamento.
* **A resposta ao impulso deve estar no domínio da frequência. Uma ferramenta está sendo fornecida para converter respostas ao impulso do domínio do tempo para o domínio da frequência.** Baixe em [https://aka.ms/gdkdl](https://aka.ms/gdkdl).
* A ferramenta de conversão de resposta ao impulso agora inclui suporte a redução, permitindo que você troque uma redução na qualidade por um desempenho maior. Consulte [Visão geral da redução de resposta ao impulso do XDSP](/pt-BR/build/console-features/audio/overviews/xdsp-overview-ir-reduction) para obter mais detalhes.
* Foram feitas melhorias na latência da chamada [XDspConnect](/pt-BR/reference/audio/xdspaudio/functions/xdspconnect).

### Problemas conhecidos

* A opção "EnablePolarFormat" em [XDspActivationOptions](/pt-BR/reference/audio/xdspaudio/enums/xdspactivationoptions) para processamento de FFT/IFFT leva um tempo considerável em comparação com o formato cartesiano padrão, que tem melhor desempenho.

### Práticas recomendadas

* Haverá uma resposta para cada comando enviado ao hardware, mesmo quando o hardware apresentar uma falha. O chamador deve aguardar que todos os comandos sejam processados pelo hardware antes de chamar [XDspDeactivate](/pt-BR/reference/audio/xdspaudio/functions/xdspdeactivate) para desativar o fluxo. [XDspStatus.lastProcessedCommandSequence](/pt-BR/reference/audio/xdspaudio/structs/xdspstatus) mostra o número de sequência do último comando processado pelo hardware para esse fluxo. Outros fluxos XDSP não serão afetados e o hardware continuará processando os comandos deles.
* O *"baseBuffer"* passado para a chamada [XDspConnect](/pt-BR/reference/audio/xdspaudio/functions/xdspconnect) não deve ser liberado até que todos os fluxos sejam desativados usando [XDspDeactivate](/pt-BR/reference/audio/xdspaudio/functions/xdspdeactivate) e [XDspDisconnect](/pt-BR/reference/audio/xdspaudio/functions/xdspdisconnect) seja bem-sucedido.
* Há um limite de fila interno para cada fluxo, e [XDspSubmitCommand](/pt-BR/reference/audio/xdspaudio/functions/xdspsubmitcommand) retorna XDSP\_E\_QUEUE\_FULL quando esse limite é atingido. Quando esse erro ocorrer, aguarde tempo suficiente para que o hardware processe os comandos desse fluxo antes de enviar mais comandos. [XDspStatus.lastProcessedCommandSequence](/pt-BR/reference/audio/xdspaudio/structs/xdspstatus) pode ser usado para verificar o último comando processado pelo hardware para esse fluxo.
* O desempenho da convolução é melhor com um tamanho de bloco de 1024 em comparação com um tamanho de bloco de 512.
* O algoritmo de convolução não é homogêneo quando se trata de processar comandos consecutivos, ou seja, nem todos os blocos levam o mesmo tempo para serem concluídos, e alguns podem levar mais tempo que outros.

### Pausando e retomando um título

Um título deve ser capaz de pausar e retomar, por exemplo, quando o usuário o coloca no modo Restrito. Quando o manipulador de suspensão for chamado, basta parar de enviar comandos XDSP ao hardware. Os comandos que já foram enviados serão processados normalmente e o XDspStatus será atualizado adequadamente.

### Exemplos

* Disponíveis para download em [https://aka.ms/gdkdl](https://aka.ms/gdkdl) e nos exemplos do ATG.
  Passo a passo dos exemplos estão disponíveis para [Reverberação por convolução de fluxo único](/pt-BR/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution) e [FFT IFFT de fluxo único](/pt-BR/build/console-features/audio/overviews/xdsp-overview-single-stream-fft-ifft)
* Um exemplo de XDSP que usa o acelerador de hardware para converter uma resposta ao impulso do domínio do tempo para o domínio da frequência está incluído com os demais exemplos no portal de download do GDK [https://aka.ms/gdkdl](https://aka.ms/gdkdl). Esse exemplo produz exatamente a mesma saída que a ferramenta Impulse Response Transform incluída na instalação do GDK. Esse exemplo demonstra como a aceleração de hardware pode ser usada para converter uma resposta ao impulso em tempo real para uso com a API XDSP.

### Contato

Se você tiver dúvidas ou preocupações sobre esse recurso, envie um email para [AnaAud@microsoft.com](mailto:AnaAud@microsoft.com) ou use os fóruns online.

## Documentação de referência da API

* [Xdspaudio (conteúdo da API)](/pt-BR/reference/audio/xdspaudio/xdspaudio_members)
  * Funções
    * [XDspConnectWithMaximumStreamLimit](/pt-BR/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit)
    * [XDspSubmitCommandWithEnvelope](/pt-BR/reference/audio/xdspaudio/functions/xdspsubmitcommandwithenvelope)
    * [XDspConnect](/pt-BR/reference/audio/xdspaudio/functions/xdspconnect)
    * [XDspActivate](/pt-BR/reference/audio/xdspaudio/functions/xdspactivate)
    * [XDspDeactivate](/pt-BR/reference/audio/xdspaudio/functions/xdspdeactivate)
    * [XDspDisconnect](/pt-BR/reference/audio/xdspaudio/functions/xdspdisconnect)
    * [XDspSubmitCommand](/pt-BR/reference/audio/xdspaudio/functions/xdspsubmitcommand)
  * Estruturas
    * [xdspstatus](/pt-BR/reference/audio/xdspaudio/structs/xdspstatus)


## Related topics

- [Visão geral do Unity](/pt-BR/paths/unity/overview.md)
- [Visão geral do Unreal Engine](/pt-BR/paths/unreal/overview.md)
- [Visão geral do XBOX Series X|S](/pt-BR/paths/series-xs/overview.md)
- [Visão geral do Windows & ROG XBOX Ally](/pt-BR/paths/windows/overview.md)
- [Visão geral do Play Anywhere (Console + PC)](/pt-BR/paths/play-anywhere/overview.md)
