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

# Información general de XDSP

> Use la API XDSP para la reverberación por convolución acelerada por hardware, FFT e IFFT, y la envolvente de la respuesta al impulso en las consolas XBOX Series X|S.

En este tema se proporciona información general de las [API XDSP](/reference/audio/xdspaudio/xdspaudio_members). XDSP permite a los títulos aprovechar la característica de reverberación por convolución acelerada por hardware en la generación de consolas XBOX Series X|S. La implementación actual es capaz de procesar 80 segundos de respuesta al impulso en tiempo real. Por ejemplo, 40 secuencias de 2 segundos de respuesta al impulso cada una, de forma simultánea y en tiempo real.

### Novedades de la versión de octubre de 2022

* Se han agregado dos nuevas API: [XDspConnectWithMaximumStreamLimit](/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit) y [XDspSubmitCommandWithEnvelope](/reference/audio/xdspaudio/functions/xdspsubmitcommandwithenvelope).  **XDspConnectWithMaximumStreamLimit** usa menos memoria internamente si el número máximo de secuencias que se pueden activar es inferior a 256. [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect), en cambio, reserva capacidad para 256 secuencias y, por tanto, usa más memoria.
  **XDspSubmitCommandWithEnvelope** permite aplicar una envolvente al filtro de respuesta al impulso. Consulte [Información general sobre la envolvente mediante la API XDSP](/build/console-features/audio/overviews/xdsp-overview-enveloping).

### Características de la versión

* Para la convolución, los tamaños de bloque admitidos son de 512 y 1024 tramas. El rendimiento será mejor con un tamaño de bloque de 1024 tramas.
* Para FFT/IFFT, los tamaños de bloque admitidos son de 512, 1024 y 2048 tramas.
* La convolución se admite en los modos mono, estéreo y estéreo desentrelazado, con respuestas al impulso mono y estéreo.
* La llamada a [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect) o a [XDspConnectWithMaximumStreamLimit](/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit) establece una conexión con el hardware y devuelve un XDspClientHandle. Solo puede haber 8 conexiones activas en un momento dado.
* El valor máximo de *aggregateImpulseResponseInSeconds* admitido en la llamada a [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect) es 128. Este también es el máximo entre todas las llamadas a XDspConnect. Si se realiza una única llamada a XDspConnect con 128 para aggregateImpulseResponseInSeconds, no se pueden realizar más llamadas a XDspConnect con un valor de aggregateImpulseResponseInSeconds mayor que 0. aggregateImpulseResponseInSeconds debe ser mayor que cero para permitir la activación de secuencias para el procesamiento de convolución.
* Se pueden activar un máximo de 256 secuencias mediante [XDspActivate](/reference/audio/xdspaudio/functions/xdspactivate) para un [XDspClientHandle](/reference/audio/xdspaudio/handles/xdspclienthandle) dado devuelto por [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect). Se pueden activar un máximo de *maximumStreamCount* secuencias mediante [XDspActivate](/reference/audio/xdspaudio/functions/xdspactivate) para un [XDspClientHandle](/reference/audio/xdspaudio/handles/xdspclienthandle) dado devuelto por [XDspConnectWithMaximumStreamLimit](/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit), donde *maximumStreamCount* es el número de secuencias usado en la llamada a **XDspConnectWithMaximumStreamLimit**. Estas secuencias pueden ser de cualquier [XDspProcessType](/reference/audio/xdspaudio/enums/xdspprocesstype).
* Cuando se usa entrada estéreo, la respuesta al impulso agregada máxima admitida se reduce a 64 segundos.
* Todos los búferes pasados a la API deben estar alineados a 16 bytes. El hardware puede producir un error y reiniciarse si los búferes no están alineados a 16 bytes. [XDspStatus.result](/reference/audio/xdspaudio/structs/xdspstatus) indicará XDSP\_E\_DEVICE\_FATAL\_ERROR cuando el hardware haya sufrido un bloqueo o cuelgue.
* **La respuesta al impulso debe estar en el dominio de la frecuencia. Se proporciona una herramienta para convertir las respuestas al impulso del dominio del tiempo al dominio de la frecuencia.** Descárguela desde [https://aka.ms/gdkdl](https://aka.ms/gdkdl).
* La herramienta de conversión de respuesta al impulso ahora incluye compatibilidad con la reducción, lo que le permite cambiar una reducción de la calidad por un mayor rendimiento. Consulte [Información general sobre la reducción de la respuesta al impulso de XDSP](/build/console-features/audio/overviews/xdsp-overview-ir-reduction) para obtener más detalles.
* Se han realizado mejoras en la latencia de la llamada a [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect).

### Problemas conocidos

* La opción "EnablePolarFormat" en [XDspActivationOptions](/reference/audio/xdspaudio/enums/xdspactivationoptions) para el procesamiento de FFT/IFFT tarda un tiempo considerable en comparación con el formato cartesiano predeterminado, que es más eficiente.

### Procedimientos recomendados

* Habrá una respuesta por cada comando enviado al hardware, incluso cuando el hardware sufra un error. El llamador debe esperar a que el hardware procese todos los comandos antes de llamar a [XDspDeactivate](/reference/audio/xdspaudio/functions/xdspdeactivate) para desactivar la secuencia. [XDspStatus.lastProcessedCommandSequence](/reference/audio/xdspaudio/structs/xdspstatus) muestra el número de secuencia del último comando procesado por el hardware para esta secuencia. Las demás secuencias de XDSP no se verán afectadas y el hardware seguirá procesando sus comandos.
* El *"baseBuffer"* que se pasa a la llamada a [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect) no se debe liberar hasta que todas las secuencias se desactiven mediante [XDspDeactivate](/reference/audio/xdspaudio/functions/xdspdeactivate) y [XDspDisconnect](/reference/audio/xdspaudio/functions/xdspdisconnect) se realice correctamente.
* Hay un límite de cola interno para cada secuencia y [XDspSubmitCommand](/reference/audio/xdspaudio/functions/xdspsubmitcommand) devuelve XDSP\_E\_QUEUE\_FULL cuando se alcanza este límite. Cuando se produzca este error, deje tiempo suficiente para que el hardware procese los comandos de esta secuencia antes de enviar más comandos. [XDspStatus.lastProcessedCommandSequence](/reference/audio/xdspaudio/structs/xdspstatus) se puede usar para comprobar el último comando que el hardware procesó para esta secuencia.
* El rendimiento de la convolución es mejor con un tamaño de bloque de 1024 en comparación con un tamaño de bloque de 512.
* El algoritmo de convolución no es homogéneo en lo que respecta al procesamiento de comandos consecutivos, es decir, no todos los bloques tardan lo mismo en completarse y algunos pueden tardar más que otros.

### Pausar y reanudar un título

Un título debe poder pausarse y reanudarse, por ejemplo, cuando el usuario lo pone en modo restringido. Cuando se llame al controlador de suspensión, simplemente deje de enviar comandos XDSP al hardware. Los comandos que ya se habían enviado se procesarán con normalidad y el XDspStatus se actualizará en consecuencia.

### Ejemplos

* Disponibles para su descarga desde [https://aka.ms/gdkdl](https://aka.ms/gdkdl) y desde los ejemplos de ATG.
  Hay tutoriales de ejemplo disponibles para [Reverberación por convolución de secuencia única](/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution) y [FFT IFFT de secuencia única](/build/console-features/audio/overviews/xdsp-overview-single-stream-fft-ifft)
* Junto con el resto de los ejemplos del portal de descargas del GDK [https://aka.ms/gdkdl](https://aka.ms/gdkdl), se incluye un ejemplo de XDSP que usa el acelerador de hardware para convertir una respuesta al impulso del dominio del tiempo al dominio de la frecuencia. Este ejemplo produce exactamente la misma salida que la herramienta Impulse Response Transform incluida con la instalación del GDK. Este ejemplo muestra cómo se puede usar la aceleración de hardware para convertir una respuesta al impulso sobre la marcha para usarla con la API XDSP.

### Contacto

Si tiene preguntas o dudas sobre esta característica, envíe un correo electrónico a [AnaAud@microsoft.com](mailto:AnaAud@microsoft.com) o use los foros en línea.

## Documentación de referencia de la API

* [Xdspaudio (contenido de la API)](/reference/audio/xdspaudio/xdspaudio_members)
  * Funciones
    * [XDspConnectWithMaximumStreamLimit](/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit)
    * [XDspSubmitCommandWithEnvelope](/reference/audio/xdspaudio/functions/xdspsubmitcommandwithenvelope)
    * [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect)
    * [XDspActivate](/reference/audio/xdspaudio/functions/xdspactivate)
    * [XDspDeactivate](/reference/audio/xdspaudio/functions/xdspdeactivate)
    * [XDspDisconnect](/reference/audio/xdspaudio/functions/xdspdisconnect)
    * [XDspSubmitCommand](/reference/audio/xdspaudio/functions/xdspsubmitcommand)
  * Estructuras
    * [xdspstatus](/reference/audio/xdspaudio/structs/xdspstatus)


## Related topics

- [Audio XDSP](/es/reference/audio/xdspaudio/xdspaudio_members.md)
- [Información general sobre la envolvente de XDSP](/es/build/console-features/audio/overviews/xdsp-overview-enveloping.md)
- [Información general sobre la reducción de la respuesta al impulso de XDSP](/es/build/console-features/audio/overviews/xdsp-overview-ir-reduction.md)
- [Información general de una convolución de secuencia única mediante la API XDSP](/es/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution.md)
- [Convolución de secuencia única con envolvente mediante la API XDSP](/es/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution-with-envelope.md)
