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

# XDspSubmitCommandWithEnvelope

> XDspSubmitCommandWithEnvelope

# XDspSubmitCommandWithEnvelope

Envía un comando a la cola de hardware para una secuencia de XDSP determinada. Esta API es similar a XDspSubmitCommand en cuanto a que envía un comando al hardware, con la diferencia de que toma un parámetro adicional, envelopeBuffer, que contiene un valor de ganancia para cada bloque del filtro de respuesta al impulso. Estos valores de ganancia se aplican a la respuesta al impulso durante la convolución.\
Cuando se desee usar una envolvente, esta API debe llamarse con un puntero válido al búfer de la envolvente. Es responsabilidad del autor de la llamada asegurarse de que el búfer de la envolvente siga siendo válido hasta que ya no se necesite. Para dejar de usar la envolvente, debe usarse XDspSubmitCommand o XDspSubmitCommandWithEnvelope con un nullptr para envelopeBuffer.
Esta API solo debe usarse para una secuencia activada para XDspProcessType::Convolution.

## Sintaxis

```cpp theme={null}
HRESULT XDspSubmitCommandWithEnvelope(  
         XDspStreamHandle handle,  
         XDspCommand* command,  
         float* envelopeBuffer,
         uint32_t* commandSequence  
)  
```

### Parámetros

*handle*   \_In\_\
Tipo: [XDspStreamHandle](/reference/audio/xdspaudio/handles/xdspstreamhandle)

Un identificador de secuencia de XDSP válido.

*command*   \_In\_\
Tipo: [XDspCommand\*](/reference/audio/xdspaudio/structs/xdspcommand)

Puntero a una estructura [XDspCommand](/reference/audio/xdspaudio/structs/xdspcommand).

*envelopeBuffer*   \_In\_\
Tipo: float\*

Puntero a los valores de ganancia de cada bloque del filtro de respuesta al impulso que se aplicarán durante la convolución.\
Este búfer debe formar parte de la memoria registrada por [XDspConnect](/reference/audio/xdspaudio/functions/xdspconnect) o [XDspConnectWithMaximumStreamLimit](/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit) y debe estar alineado a 16 bytes. El hardware usa este búfer, por lo que no se puede modificar ni liberar hasta que todos los comandos que lo usan se hayan completado y se hayan recogido las respuestas.
El número de valores de ganancia del búfer de la envolvente debe ser al menos el número de bloques del filtro de respuesta al impulso y se calcula de la manera siguiente.\
*uint32\_t IRLengthInComplexValues = XDspActivationParameters::impulseResponseLengthInFloats/2;*\
*uint32\_t IRLengthInBlocks = IRLengthInComplexValues/ XDspActivationParameters::blockFrameCount;*\
*uint32\_t envelopeSize = ((IRLengthInBlocks \* sizeof(float) + 15) & \~(0xF)) / sizeof(float);*

Este búfer sigue el tamaño de la respuesta al impulso. En el caso de una respuesta al impulso estéreo, los valores de ganancia de todo el canal izquierdo van seguidos de los valores de ganancia de todo el canal derecho, de la misma manera que la respuesta al impulso del canal izquierdo va seguida de la respuesta al impulso del canal derecho.
En el caso de una respuesta al impulso mono, los mismos valores de ganancia se aplican tanto al canal izquierdo como al derecho de una señal de entrada estéreo. El tamaño mínimo de este búfer debe ser de 8 valores float en el caso de un filtro de respuesta al impulso mono y de 16 valores float en el caso de un filtro de respuesta al impulso estéreo.

*commandSequence*   \_Out\_\
Tipo: uint32\_t\*

Puntero a `uint32_t` para devolver un valor de secuencia de comandos. Consulte la sección **Comentarios** para obtener más detalles.

### Valor devuelto

Tipo: HRESULT

Si el método se ejecuta correctamente, devuelve S\_OK. Si el método no se ejecuta correctamente, devuelve el código siguiente (lista parcial):

| Código devuelto               | Descripción                                                                                                                                                                                                        |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| E\_INVALIDARG                 | Uno o varios de los argumentos no son válidos.                                                                                                                                                                     |
| XDSP\_E\_QUEUE\_FULL          | Esta llamada devolverá XDSP\_E\_QUEUE\_FULL si la secuencia y el servidor de hardware alcanzaron la capacidad máxima de procesamiento. Espere a que el hardware procese los comandos antes de enviar más comandos. |
| XDSP\_E\_DEVICE\_FATAL\_ERROR | Si el servidor de hardware está en un estado incorrecto, **XDspSubmitCommandWithEnvelope** devolverá el código de error XDSP\_E\_DEVICE\_FATAL\_ERROR.                                                             |

## Comentarios

Esta llamada será rápida, ya que no asigna recursos ni procesa datos y solo envía el comando al servidor de hardware.

El proceso de convolución tiene *'n'* fases y el uso de envolventes solo puede cambiarse, activarse o desactivarse en la primera fase. Esto significa que el efecto de la envolvente puede no ser inmediato y puede retrasarse algunos envíos.

Para deshabilitar los parámetros de la envolvente, debe llamarse a **XDspSubmitCommand** o **XDspSubmitCommandWithEnvelope** con un envelopeBuffer nulo.

Esta llamada también toma un puntero a `uint32_t` para devolver un valor de secuencia de comandos, *commandSequence*, con el fin de realizar un seguimiento de cuándo estará listo más adelante el resultado del comando. Este número representa el número total de comandos que se han enviado correctamente desde que se inició la sesión y después de llamar a [XDspActivate](/reference/audio/xdspaudio/functions/xdspactivate). Este número será uno para el primer comando y se incrementa en uno por cada llamada correcta a **XDspSubmitCommandWithEnvelope** o [XDspSubmitCommand](/reference/audio/xdspaudio/functions/xdspsubmitcommand) posterior.

Si el servidor de hardware está en un estado incorrecto, **XDspSubmitCommandWithEnvelope** devolverá el código de error XDSP\_E\_DEVICE\_FATAL\_ERROR. En este punto, no se pueden enviar más comandos para la secuencia de XDSP que está en estado de error. [XDspStatus](/reference/audio/xdspaudio/structs/xdspstatus) para la secuencia también indicará el mismo error. La secuencia de XDSP afectada debe esperar a que el hardware procese todos los comandos enviados comprobando [XDspStatus](/reference/audio/xdspaudio/structs/xdspstatus) y debe desactivarse mediante [XDspDeactivate](/reference/audio/xdspaudio/functions/xdspdeactivate) una vez que se procesen todos los comandos. Las demás secuencias de XDSP no se verán afectadas y el hardware seguirá procesando sus comandos.

## Requisitos

**Encabezado:** XDspAudio.h

**Biblioteca:** Chad.lib

**Plataformas compatibles:** XBOX Series X|S

## Documentación conceptual

* [Información general del uso de envolventes de XDSP](/build/console-features/audio/overviews/xdsp-overview-enveloping)
* [Información general de una convolución de secuencia única con envolvente mediante la API de XDSP](/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution-with-envelope)
* [Información general de XDSP](/build/console-features/audio/overviews/xdsp-overview)

## Consulte también

[XDSP](/reference/audio/xdspaudio/xdspaudio_members)\
[XdspSubmitCommand](/reference/audio/xdspaudio/functions/xdspsubmitcommand)\
[Errores de XDSP](/reference/audio/xdspaudio/enums/xdsperrors)\
[Información general de una convolución de secuencia única mediante la API de XDSP](/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution)\
[Información general de una convolución de secuencia única con envolvente mediante la API de XDSP](/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution-with-envelope)
[Información general de una FFT/IFFT de secuencia única mediante la API de XDSP](/build/console-features/audio/overviews/xdsp-overview-single-stream-fft-ifft)


## Related topics

- [XDspSubmitCommand](/es/reference/audio/xdspaudio/functions/xdspsubmitcommand.md)
- [Información general sobre la envolvente de XDSP](/es/build/console-features/audio/overviews/xdsp-overview-enveloping.md)
- [Información general de XDSP](/es/build/console-features/audio/overviews/xdsp-overview.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)
- [Audio XDSP](/es/reference/audio/xdspaudio/xdspaudio_members.md)
