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

# XApuDecodeConvertCommand

> XApuDecodeConvertCommand

# XApuDecodeConvertCommand

Définit les paramètres de traitement de décodage ou de décodage-conversion

## Syntaxe

```cpp theme={null}
typedef struct XApuDecodeConvertCommand {  
    XApuCommandId id;  
    float pitchRampRate;  
    float targetPitch;  
    uint32_t firstFrameIndex;  
    uint32_t frameCount;  
    uint32_t inputDataLength;  
    void* inputData;  
    uint32_t maxOutputDataLength;  
    void* outputData;  
} XApuDecodeConvertCommand  
```

### Membres

*id*\
Type : [XApuCommandId](/fr-CA/reference/audio/xapu/structs/xapucommandid)

Spécifie les paramètres de commande de base à envoyer au matériel pour traitement. Le même XApuCommandId sera affecté à [XApuResult::id](/fr-CA/reference/audio/xapu/structs/xapuresult)

*pitchRampRate*\
Type : float

Valeur qui sera ajoutée à la hauteur tonale actuelle ou soustraite de celle-ci pour chaque sortie.
Cette valeur est non signée, et le moteur de conversion de fréquence d'échantillonnage décide automatiquement s'il faut l'ajouter à la hauteur tonale actuelle ou l'en soustraire, selon la valeur de la hauteur tonale cible.
Par défaut, cette valeur doit être réglée à *XAPU\_DEFAULT\_PITCH\_RAMP\_RATE*.

*targetPitch*\
Type : float

Hauteur tonale cible de l'opération de conversion actuelle. Pour [XApuProcessType::DecodeOpus](/fr-CA/reference/audio/xapu/enums/xapuprocesstype), cette valeur est ignorée.

*firstFrameIndex*\
Type : uint32\_t

Spécifie l'index de la première trame qui sera copiée dans la mémoire tampon de sortie. firstFrameIndex, combiné à frameCount, spécifie ce qui est copié dans la mémoire tampon de sortie. Notre implémentation n'inclut pas les données résiduelles lors de l'utilisation de firstFrameIndex. S'il y a 100 trames résiduelles, que firstFrameIndex est réglé à 50 et que frameCount est réglé à 200, 200 trames seront ajoutées à l'ensemble des données résiduelles à partir de la 50e trame des données décodées. Cela signifie que la mémoire tampon envoyée au HSRC contiendra les 100 trames résiduelles d'origine, suivies de 200 trames à partir de la 50e trame du paquet décodé actuel.

Une trame audio dans un flux PCM est un ensemble d'échantillons (l'ensemble contient un échantillon pour chaque canal du flux) qui seront lus ou qui ont été capturés au même moment (top d'horloge). Ainsi, la taille d'une trame audio correspond à la taille de l'échantillon multipliée par le nombre de canaux du flux.

Par exemple, la taille de trame d'un flux stéréo (2 canaux) avec des échantillons float de 32 bits est de huit octets. Cette valeur doit être comprise entre 0 et 960 pour les flux Opus avec une durée de paquet de 20 millisecondes. Elle doit être comprise entre 0 et 480 pour les flux Opus avec une durée de paquet de 10 millisecondes. Par défaut, cette valeur est réglée à zéro. Pour les entrées de préroulement, cette valeur doit être supérieure à zéro. Les entrées de préroulement seront traitées, mais ne produiront pas de données de sortie.

*frameCount*\
Type : uint32\_t

Ce paramètre est requis lorsque les données d'entrée sont non compressées dans le traitement [XApuProcessType::ConvertPCM](/fr-CA/reference/audio/xapu/enums/xapuprocesstype), avec les contraintes suivantes :

* Pour les données PCM d'entrée désentrelacées mono et stéréo, la valeur minimale est 4, la valeur maximale est 960, et la valeur doit être un multiple de 4.
* Pour les données PCM d'entrée entrelacées stéréo, la valeur minimale est 8, la valeur maximale est 960, et la valeur doit être un multiple de 8.
* Pour [XApuProcessType::DecodeOpus](/fr-CA/reference/audio/xapu/enums/xapuprocesstype), cette valeur peut servir à tronquer le nombre de trames de sortie.
* Pour [XApuProcessType::DecodeConvertOpus](/fr-CA/reference/audio/xapu/enums/xapuprocesstype), cette valeur peut servir à tronquer le nombre de trames décodées qui seront transmises au convertisseur.

Si ce paramètre sert à tronquer le dernier paquet d'un flux ou un point de boucle, toute valeur comprise entre 0 et 960 peut être utilisée pour les flux Opus avec une durée de paquet de 20 millisecondes, ou toute valeur comprise entre 0 et 480 pour les flux Opus avec une durée de paquet de 10 millisecondes.

S'il arrive que ce paramètre soit requis pour tronquer la sortie d'un paquet au milieu du flux, la valeur doit alors être définie selon les contraintes de [XApuProcessType::ConvertPCM](/fr-CA/reference/audio/xapu/enums/xapuprocesstype) ci-dessus.

Si aucune troncature n'est requise, ce paramètre doit être réglé à 0xFFFFFFFF.

Dans les cas [XApuProcessType::DecodeOpus](/fr-CA/reference/audio/xapu/enums/xapuprocesstype) et [XApuProcessType::DecodeConvertOpus](/fr-CA/reference/audio/xapu/enums/xapuprocesstype), les paramètres [XApuDecodeConvertCommand::frameCount](/fr-CA/reference/audio/xapu/structs/xapudecodeconvertcommand) et [XApuDecodeConvertCommand::firstFrameIndex](/fr-CA/reference/audio/xapu/structs/xapudecodeconvertcommand) doivent être utilisés pour une recherche précise à la trame près.

Une trame audio dans un flux PCM est un ensemble d'échantillons (l'ensemble contient un échantillon pour chaque canal du flux) qui seront lus ou qui ont été capturés au même moment (top d'horloge). Ainsi, la taille d'une trame audio correspond à la taille de l'échantillon multipliée par le nombre de canaux du flux. Par exemple, la taille de trame d'un flux stéréo (2 canaux) avec des échantillons float de 32 bits est de huit octets.

*inputDataLength*\
Type : uint32\_t

Longueur des données d'entrée en octets. La longueur doit être un multiple de 16. Dans le cas de [XApuProcessType::ConvertPCM](/fr-CA/reference/audio/xapu/enums/xapuprocesstype), cette valeur doit être égale à [XApuDecodeConvertCommand::frameCount](/fr-CA/reference/audio/xapu/structs/xapudecodeconvertcommand) x [XApuDecodeConvertActivateCommand::channelCount](/fr-CA/reference/audio/xapu/structs/xapudecodeconvertcommand) x sizeof(float)

*inputData*\
Type : void\*

Pointeur vers les données d'entrée à traiter. Cette valeur doit être supérieure ou égale à [XApuConnectOutputParameters::data](/fr-CA/reference/audio/xapu/structs/xapuconnectoutputparameters) et inférieure à [XApuConnectOutputParameters::data](/fr-CA/reference/audio/xapu/structs/xapuconnectoutputparameters) + [XApuConnectInputParameters::dataLength](/fr-CA/reference/audio/xapu/structs/xapuconnectinputparameters) retourné par [XApuConnect](/fr-CA/reference/audio/xapu/functions/xapuconnect). *Cette mémoire tampon doit être alignée sur 16 octets.*

Pour [XApuProcessType::DecodeOpus](/fr-CA/reference/audio/xapu/enums/xapuprocesstype) et [XApuProcessType::DecodeConvertOpus](/fr-CA/reference/audio/xapu/enums/xapuprocesstype), les données d'entrée doivent être un seul paquet Opus (SILK, CELT ou hybride)

Pour [XApuProcessType::ConvertPCM](/fr-CA/reference/audio/xapu/enums/xapuprocesstype), les données d'entrée doivent être en PCM float (32 bits). Si l'indicateur [XApuConnectOptions::DeinterleavedInput](/fr-CA/reference/audio/xapu/enums/xapuconnectoptions) est défini, les données PCM d'entrée doivent être désentrelacées.

Pour l'entrée désentrelacée de [XApuProcessType::ConvertPCM](/fr-CA/reference/audio/xapu/enums/xapuprocesstype), les données du premier canal commencent à [XApuDecodeConvertCommand::inputData](/fr-CA/reference/audio/xapu/structs/xapudecodeconvertcommand)
et les données du deuxième canal commencent à [XApuDecodeConvertCommand::inputData](/fr-CA/reference/audio/xapu/structs/xapudecodeconvertcommand) + ([XApuDecodeConvertCommand::inputDataLength](/fr-CA/reference/audio/xapu/structs/xapudecodeconvertcommand) / 2)

*maxOutputDataLength*\
Type : uint32\_t

Longueur maximale des données de sortie en octets. La longueur doit être un multiple de 16. Ne doit pas dépasser [XApuConnectInputParameters::baseDataLength](/fr-CA/reference/audio/xapu/structs/xapuconnectinputparameters).

*outputData*\
Type : void\*

Pointeur destiné à contenir les données PCM float (32 bits) de sortie. Cette valeur doit être supérieure ou égale à [XApuConnectOutputParameters::data](/fr-CA/reference/audio/xapu/structs/xapuconnectoutputparameters) et inférieure à [XApuConnectOutputParameters::data](/fr-CA/reference/audio/xapu/structs/xapuconnectoutputparameters) + [XApuConnectInputParameters::baseDataLength](/fr-CA/reference/audio/xapu/structs/xapuconnectinputparameters) retourné par [XApuConnect](/fr-CA/reference/audio/xapu/functions/xapuconnect). Cette mémoire tampon doit être alignée sur 16 octets.

Lorsque l'indicateur [XapuConnectOptions::DeinterleavedOutput](/fr-CA/reference/audio/xapu/enums/xapuconnectoptions) est défini, les données sont fournies désentrelacées. Dans chaque paquet, le point milieu du désentrelacement
est spécifié comme suit :

[XApuProcessType::DecodeOpus](/fr-CA/reference/audio/xapu/enums/xapuprocesstype) :

* Les trames du canal gauche sont placées de 0 à (XapuResult::outputFrameCount-1), et les trames du canal droit sont placées de (XapuResult::outputFrameCount)
  jusqu'à la fin de la mémoire tampon

[XApuProcessType::DecodeConvertOpus](/fr-CA/reference/audio/xapu/enums/xapuprocesstype) et [XApuProcessType::ConvertPCM](/fr-CA/reference/audio/xapu/enums/xapuprocesstype) :

* Les trames du canal gauche sont placées de 0 à ([XApuConnectInputParameters::maxFrameCountPerOutput](/fr-CA/reference/audio/xapu/structs/xapuconnectinputparameters) - 1)
* Les trames du canal droit sont placées de [XApuConnectInputParameters::maxFrameCountPerOutput](/fr-CA/reference/audio/xapu/structs/xapuconnectinputparameters) jusqu'à la fin de la mémoire tampon
* Cela s'applique même si OutputFrameCount est inférieur à maxFrameCountPerOutput. Dans ce cas, utilisez [XApuConnectInputParameters::maxFrameCountPerOutput](/fr-CA/reference/audio/xapu/structs/xapuconnectinputparameters) pour déterminer le point milieu de la mémoire tampon, et [XapuResult::outputFrameCount](/fr-CA/reference/audio/xapu/structs/xapuresult) pour calculer le nombre de trames par canal à copier.

## Remarques

Utilisé par `XApuDecodeConvertCommand` pour les paramètres de traitement de décodage et de conversion. Pour plus d'informations sur les membres de `XApuCommandId`, consultez [XApuCommandId](/fr-CA/reference/audio/xapu/structs/xapucommandid). Pour plus d'informations sur `XApuPorcessType`, consultez [XApuProcessType](/fr-CA/reference/audio/xapu/enums/xapuprocesstype).

La plage du taux de rampe de hauteur tonale va de 2^-18 (0.000003814697265625) à 8.0.  Toute valeur inférieure à la valeur minimale fera en sorte que la rampe n'aura aucun effet : la hauteur tonale restera à la valeur actuelle.  Chaque fois que le taux de rampe est supérieur à la valeur absolue de la différence entre la valeur actuelle et la valeur cible, la rampe s'effectue en une seule période d'échantillonnage.

## Configuration requise

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

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

## Documentation conceptuelle

* [Vue d'ensemble de XAPU](/fr-CA/build/console-features/audio/overviews/xapu-overview)

## Voir aussi

[XApuEnqueueCommand](/fr-CA/reference/audio/xapu/functions/xapuenqueuecommand)\
[XApuResult](/fr-CA/reference/audio/xapu/structs/xapuresult)\
[XAPU](/fr-CA/reference/audio/xapu/xapu_members)


## Related topics

- [XApuDecodeConvertCommand](/reference/audio/xapu/structs/xapudecodeconvertcommand.md)
- [XApuCommandId](/reference/audio/xapu/structs/xapucommandid.md)
- [XApuConnect](/ko/reference/audio/xapu/functions/xapuconnect.md)
