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

Soumet une commande à la file d'attente matérielle pour un flux XDSP donné. Cette API est semblable à XDspSubmitCommand en ce sens qu'elle soumet une commande au matériel, sauf qu'elle accepte un paramètre supplémentaire, envelopeBuffer, qui contient une valeur de gain pour chaque bloc du filtre de réponse impulsionnelle. Ces valeurs de gain sont appliquées à la réponse impulsionnelle pendant la convolution.\
Lorsque l'utilisation d'une enveloppe est souhaitée, cette API doit être appelée avec un pointeur valide vers la mémoire tampon d'enveloppe. Il incombe à l'appelant de s'assurer que la mémoire tampon d'enveloppe reste valide jusqu'à ce qu'elle ne soit plus nécessaire. Pour cesser d'utiliser l'enveloppe, utilisez XDspSubmitCommand ou XDspSubmitCommandWithEnvelope avec un nullptr pour envelopeBuffer.
Cette API ne doit être utilisée que pour un flux activé pour XDspProcessType::Convolution.

## Syntaxe

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

### Paramètres

*handle*   \_In\_\
Type : [XDspStreamHandle](/fr-CA/reference/audio/xdspaudio/handles/xdspstreamhandle)

Handle de flux XDSP valide.

*command*   \_In\_\
Type : [XDspCommand\*](/fr-CA/reference/audio/xdspaudio/structs/xdspcommand)

Pointeur vers une structure [XDspCommand](/fr-CA/reference/audio/xdspaudio/structs/xdspcommand).

*envelopeBuffer*   \_In\_\
Type : float\*

Pointeur vers les valeurs de gain de chaque bloc du filtre de réponse impulsionnelle à appliquer pendant la convolution.\
Cette mémoire tampon doit faire partie de la mémoire inscrite par [XDspConnect](/fr-CA/reference/audio/xdspaudio/functions/xdspconnect) ou [XDspConnectWithMaximumStreamLimit](/fr-CA/reference/audio/xdspaudio/functions/xdspconnectwithmaximumstreamlimit) et doit être alignée sur 16 octets. Cette mémoire tampon est utilisée par le matériel et ne peut être ni modifiée ni libérée tant que toutes les commandes qui l'utilisent ne sont pas terminées et que les réponses n'ont pas été récupérées.
Le nombre de valeurs de gain dans la mémoire tampon d'enveloppe doit être au moins égal au nombre de blocs du filtre de réponse impulsionnelle et se calcule comme suit.\
*uint32\_t IRLengthInComplexValues = XDspActivationParameters::impulseResponseLengthInFloats/2;*\
*uint32\_t IRLengthInBlocks = IRLengthInComplexValues/ XDspActivationParameters::blockFrameCount;*\
*uint32\_t envelopeSize = ((IRLengthInBlocks \* sizeof(float) + 15) & \~(0xF)) / sizeof(float);*

Cette mémoire tampon suit la taille de la réponse impulsionnelle. Pour une réponse impulsionnelle stéréo, les valeurs de gain de l'ensemble du canal gauche sont suivies des valeurs de gain de l'ensemble du canal droit, de la même façon que la réponse impulsionnelle du canal gauche est suivie de la réponse impulsionnelle du canal droit.
Pour une réponse impulsionnelle mono, les mêmes valeurs de gain sont appliquées aux canaux gauche et droit d'un signal d'entrée stéréo. La taille minimale de cette mémoire tampon doit être de 8 valeurs à virgule flottante dans le cas d'un filtre de réponse impulsionnelle mono et de 16 valeurs à virgule flottante dans le cas d'un filtre de réponse impulsionnelle stéréo.

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

Pointeur vers un `uint32_t` permettant de retourner une valeur de séquence de commande. Consultez la section **Remarques** pour plus de détails.

### Valeur de retour

Type : HRESULT

Si la méthode réussit, elle retourne S\_OK. Si la méthode échoue, elle retourne le code suivant (liste partielle) :

| Code de retour | Description |
| - | - |
| E\_INVALIDARG | Un ou plusieurs des arguments ne sont pas valides. |
| XDSP\_E\_QUEUE\_FULL | Cet appel retourne XDSP\_E\_QUEUE\_FULL si le flux et le serveur matériel ont atteint leur capacité de traitement maximale. Attendez que le matériel traite les commandes avant d'en soumettre d'autres. |
| XDSP\_E\_DEVICE\_FATAL\_ERROR | Si le serveur matériel est dans un état incorrect, **XDspSubmitCommandWithEnvelope** retourne le code d'erreur XDSP\_E\_DEVICE\_FATAL\_ERROR. |

## Remarques

Cet appel est rapide, car il n'alloue pas de ressources et ne traite pas de données; il envoie simplement la commande au serveur matériel.

Le processus de convolution comporte *'n'* étapes, et l'enveloppe ne peut être changée, activée ou désactivée qu'à la première étape. Cela signifie que l'effet d'enveloppe peut ne pas être immédiat et peut être retardé de quelques soumissions.

Pour désactiver les paramètres d'enveloppe, appelez **XDspSubmitCommand** ou **XDspSubmitCommandWithEnvelope** avec un envelopeBuffer nul.

Cet appel accepte également un pointeur vers un `uint32_t` pour retourner une valeur de séquence de commande, *commandSequence*, qui permet de savoir plus tard quand le résultat de la commande est prêt. Ce nombre représente le nombre total de commandes qui ont été soumises avec succès depuis le début de la session et après l'appel de [XDspActivate](/fr-CA/reference/audio/xdspaudio/functions/xdspactivate). Ce nombre vaut un pour la première commande et est incrémenté de un pour chaque appel réussi à **XDspSubmitCommandWithEnvelope** ou à [XDspSubmitCommand](/fr-CA/reference/audio/xdspaudio/functions/xdspsubmitcommand) par la suite.

Si le serveur matériel est dans un état incorrect, **XDspSubmitCommandWithEnvelope** retourne le code d'erreur XDSP\_E\_DEVICE\_FATAL\_ERROR. À ce moment, aucune autre commande ne peut être soumise pour le flux XDSP en état d'échec. [XDspStatus](/fr-CA/reference/audio/xdspaudio/structs/xdspstatus) pour le flux indiquera également la même erreur. Le flux XDSP touché doit attendre que toutes les commandes soumises soient traitées par le matériel en vérifiant [XDspStatus](/fr-CA/reference/audio/xdspaudio/structs/xdspstatus), et il doit être désactivé à l'aide de [XDspDeactivate](/fr-CA/reference/audio/xdspaudio/functions/xdspdeactivate) une fois toutes les commandes traitées. Les autres flux XDSP ne seront pas touchés et le matériel continuera de traiter leurs commandes.

## Configuration requise

**En-tête :** XDspAudio.h

**Bibliothèque :** Chad.lib

**Plateformes prises en charge :** XBOX Series X|S

## Documentation conceptuelle

* [Vue d'ensemble de l'enveloppe XDSP](/fr-CA/build/console-features/audio/overviews/xdsp-overview-enveloping)
* [Vue d'ensemble d'une convolution à flux unique avec enveloppe à l'aide de l'API XDSP](/fr-CA/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution-with-envelope)
* [Vue d'ensemble de XDSP](/fr-CA/build/console-features/audio/overviews/xdsp-overview)

## Voir aussi

[XDSP](/fr-CA/reference/audio/xdspaudio/xdspaudio_members)\
[XdspSubmitCommand](/fr-CA/reference/audio/xdspaudio/functions/xdspsubmitcommand)\
[Erreurs XDSP](/fr-CA/reference/audio/xdspaudio/enums/xdsperrors)\
[Vue d'ensemble d'une convolution à flux unique à l'aide de l'API XDSP](/fr-CA/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution)\
[Vue d'ensemble d'une convolution à flux unique avec enveloppe à l'aide de l'API XDSP](/fr-CA/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution-with-envelope)
[Vue d'ensemble d'une FFT/IFFT à flux unique à l'aide de l'API XDSP](/fr-CA/build/console-features/audio/overviews/xdsp-overview-single-stream-fft-ifft)


## Related topics

- [XDspSubmitCommand](/fr-CA/reference/audio/xdspaudio/functions/xdspsubmitcommand.md)
- [Vue d'ensemble de l'enveloppe XDSP](/fr-CA/build/console-features/audio/overviews/xdsp-overview-enveloping.md)
- [Vue d'ensemble de XDSP](/fr-CA/build/console-features/audio/overviews/xdsp-overview.md)
- [Convolution à flux unique avec enveloppe à l'aide de l'API XDSP](/fr-CA/build/console-features/audio/overviews/xdsp-overview-single-stream-convolution-with-envelope.md)
- [Audio XDSP](/fr-CA/reference/audio/xdspaudio/xdspaudio_members.md)
