XApuDecodeConvertCommand
Définit les paramètres de traitement de décodage ou de décodage-conversionSyntaxe
Membres
idType : 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 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, 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, 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 servir à tronquer le nombre de trames de sortie.
- Pour XApuProcessType::DecodeConvertOpus, cette valeur peut servir à tronquer le nombre de trames décodées qui seront transmises au convertisseur.
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, 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é 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 hybride) Pour XApuProcessType::ConvertPCM, les données d’entrée doivent être en 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 de XApuProcessType::ConvertPCM, les données du premier canal commencent à XApuDecodeConvertCommand::inputData et les données du deuxième 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é 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 milieu du désentrelacement est spécifié comme suit : XApuProcessType::DecodeOpus :
- 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
- Les trames du canal gauche sont placées de 0 à (XApuConnectInputParameters::maxFrameCountPerOutput - 1)
- Les trames du canal droit sont placées de XApuConnectInputParameters::maxFrameCountPerOutput 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 pour déterminer le point milieu de la mémoire tampon, et XapuResult::outputFrameCount pour calculer le nombre de trames par canal à copier.
Remarques
Utilisé parXApuDecodeConvertCommand pour les paramètres de traitement de décodage et de 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 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|SDocumentation conceptuelle
Voir aussi
XApuEnqueueCommandXApuResult
XAPU
