> ## 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 du décodage ou du 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/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/reference/audio/xapu/structs/xapuresult)

*pitchRampRate*\
Type : float

Valeur qui sera ajoutée à la hauteur 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 (Sample Rate Converter) décide automatiquement de l'ajouter à la hauteur actuelle ou de l'en soustraire en fonction de la valeur de hauteur cible.
Par défaut, cette valeur doit être définie sur *XAPU\_DEFAULT\_PITCH\_RAMP\_RATE*.

*targetPitch*\
Type : float

Hauteur cible de l'opération de conversion en cours. Pour [XApuProcessType::DecodeOpus](/fr/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, associé à 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 défini sur 50 et que frameCount est défini sur 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 ont été capturés au même moment (top d'horloge). Ainsi, la taille d'une trame audio correspond à la taille d'un é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 définie sur zéro. Pour les entrées de pré-lecture (preroll), cette valeur doit être supérieure à zéro. Les entrées de pré-lecture sont traitées mais ne produisent 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/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/reference/audio/xapu/enums/xapuprocesstype), cette valeur peut être utilisée pour tronquer le nombre de trames de sortie.
* Pour [XApuProcessType::DecodeConvertOpus](/fr/reference/audio/xapu/enums/xapuprocesstype), cette valeur peut être utilisée pour tronquer le nombre de trames décodées qui seront transmises au convertisseur.

Si ce paramètre est utilisé pour 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 est nécessaire d'utiliser ce paramètre pour tronquer la sortie d'un paquet au milieu du flux, la valeur doit être définie conformément aux contraintes de [XApuProcessType::ConvertPCM](/fr/reference/audio/xapu/enums/xapuprocesstype) ci-dessus.

Si aucune troncature n'est nécessaire, ce paramètre doit être défini sur 0xFFFFFFFF.

Pour les cas [XApuProcessType::DecodeOpus](/fr/reference/audio/xapu/enums/xapuprocesstype) et [XApuProcessType::DecodeConvertOpus](/fr/reference/audio/xapu/enums/xapuprocesstype), les paramètres [XApuDecodeConvertCommand::frameCount](/fr/reference/audio/xapu/structs/xapudecodeconvertcommand) et [XApuDecodeConvertCommand::firstFrameIndex](/fr/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 ont été capturés au même moment (top d'horloge). Ainsi, la taille d'une trame audio correspond à la taille d'un é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 [XApuProcessType::ConvertPCM](/fr/reference/audio/xapu/enums/xapuprocesstype), cette valeur doit être égale à [XApuDecodeConvertCommand::frameCount](/fr/reference/audio/xapu/structs/xapudecodeconvertcommand) x [XApuDecodeConvertActivateCommand::channelCount](/fr/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/reference/audio/xapu/structs/xapuconnectoutputparameters) et inférieure à [XApuConnectOutputParameters::data](/fr/reference/audio/xapu/structs/xapuconnectoutputparameters) + [XApuConnectInputParameters::dataLength](/fr/reference/audio/xapu/structs/xapuconnectinputparameters) retournés par [XApuConnect](/fr/reference/audio/xapu/functions/xapuconnect). *Cette mémoire tampon doit être alignée sur 16 octets.*

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

Pour [XApuProcessType::ConvertPCM](/fr/reference/audio/xapu/enums/xapuprocesstype), les données d'entrée doivent être au format PCM float (32 bits). Si l'indicateur [XApuConnectOptions::DeinterleavedInput](/fr/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 [XApuProcessType::ConvertPCM](/fr/reference/audio/xapu/enums/xapuprocesstype), les données du premier canal commencent à [XApuDecodeConvertCommand::inputData](/fr/reference/audio/xapu/structs/xapudecodeconvertcommand)
et les données du second canal commencent à [XApuDecodeConvertCommand::inputData](/fr/reference/audio/xapu/structs/xapudecodeconvertcommand) + ([XApuDecodeConvertCommand::inputDataLength](/fr/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/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/reference/audio/xapu/structs/xapuconnectoutputparameters) et inférieure à [XApuConnectOutputParameters::data](/fr/reference/audio/xapu/structs/xapuconnectoutputparameters) + [XApuConnectInputParameters::baseDataLength](/fr/reference/audio/xapu/structs/xapuconnectinputparameters) retournés par [XApuConnect](/fr/reference/audio/xapu/functions/xapuconnect). Cette mémoire tampon doit être alignée sur 16 octets.

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

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

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

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

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

## Remarques

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

La plage du taux de rampe de hauteur va de 2^-18 (0.000003814697265625) à 8.0.  Toute valeur inférieure à la valeur minimale rend la rampe sans effet : la hauteur reste à la valeur actuelle.  Chaque fois que le taux de rampe est supérieur à la valeur absolue de la différence entre la hauteur actuelle et la hauteur cible, la rampe se produit 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/build/console-features/audio/overviews/xapu-overview)

## Voir aussi

[XApuEnqueueCommand](/fr/reference/audio/xapu/functions/xapuenqueuecommand)\
[XApuResult](/fr/reference/audio/xapu/structs/xapuresult)\
[XAPU](/fr/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)
