Skip to main content

XApuDecodeConvertCommand

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

Syntaxe

Membres

id
Type : XApuCommandId
Spécifie les paramètres de commande de base à envoyer au matériel pour traitement. Le même XApuCommandId sera affecté à XApuResult::id 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, 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, 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, cette valeur peut être utilisée pour tronquer le nombre de trames de sortie.
  • Pour XApuProcessType::DecodeConvertOpus, 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 ci-dessus. Si aucune troncature n’est nécessaire, ce paramètre doit être défini sur 0xFFFFFFFF. Pour les cas XApuProcessType::DecodeOpus et XApuProcessType::DecodeConvertOpus, les paramètres XApuDecodeConvertCommand::frameCount et XApuDecodeConvertCommand::firstFrameIndex 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, cette valeur doit être égale à XApuDecodeConvertCommand::frameCount x XApuDecodeConvertActivateCommand::channelCount 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 et inférieure à XApuConnectOutputParameters::data + XApuConnectInputParameters::dataLength retournés par XApuConnect. Cette mémoire tampon doit être alignée sur 16 octets. Pour XApuProcessType::DecodeOpus et XApuProcessType::DecodeConvertOpus, les données d’entrée doivent être un seul paquet Opus (SILK, CELT ou Hybrid) Pour XApuProcessType::ConvertPCM, les données d’entrée doivent être au format PCM float (32 bits). Si l’indicateur XApuConnectOptions::DeinterleavedInput est défini, les données PCM d’entrée doivent être désentrelacées. Pour l’entrée désentrelacée XApuProcessType::ConvertPCM, les données du premier canal commencent à XApuDecodeConvertCommand::inputData et les données du second canal commencent à XApuDecodeConvertCommand::inputData + (XApuDecodeConvertCommand::inputDataLength / 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. 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 et inférieure à XApuConnectOutputParameters::data + XApuConnectInputParameters::baseDataLength retournés par XApuConnect. Cette mémoire tampon doit être alignée sur 16 octets. Lorsque l’indicateur XapuConnectOptions::DeinterleavedOutput 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 :
  • 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 et XApuProcessType::ConvertPCM :

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. Pour plus d’informations sur XApuPorcessType, consultez 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

Voir aussi

XApuEnqueueCommand
XApuResult
XAPU
Last modified on October 6, 2026