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

Define los parámetros de procesamiento de descodificación o descodificación-conversión

## Sintaxis

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

### Miembros

*id*\
Tipo: [XApuCommandId](/reference/audio/xapu/structs/xapucommandid)

Especifica los parámetros de comando base que se enviarán al hardware para su procesamiento. El mismo XApuCommandId se establecerá en [XApuResult::id](/reference/audio/xapu/structs/xapuresult)

*pitchRampRate*\
Tipo: float

Es un valor que se sumará o restará del tono actual para cada salida.
Este valor no tiene signo y el motor del convertidor de frecuencia de muestreo decidirá automáticamente si sumarlo o restarlo del tono actual en función del valor de tono de destino.
De forma predeterminada, este valor debe establecerse en *XAPU\_DEFAULT\_PITCH\_RAMP\_RATE*.

*targetPitch*\
Tipo: float

El tono de destino de la operación de conversión actual. Para [XApuProcessType::DecodeOpus](/reference/audio/xapu/enums/xapuprocesstype), este valor se omite.

*firstFrameIndex*\
Tipo: uint32\_t

Especifica el índice del primer fotograma que se copiará en el búfer de salida. firstFrameIndex, junto con frameCount, especifica lo que se copia en el búfer de salida. Nuestra implementación no incluye los datos residuales al usar firstFrameIndex. Si hay 100 fotogramas residuales, firstFrameIndex se establece en 50 y frameCount se establece en 200, se agregarán 200 fotogramas a todo el residuo a partir del fotograma número 50 de los datos descodificados. Esto significa que el búfer que entra en el HSRC tendrá los 100 fotogramas originales del residuo seguidos de 200 fotogramas a partir del fotograma número 50 del paquete descodificado actual.

Un fotograma de audio en una secuencia PCM es un conjunto de muestras (el conjunto contiene una muestra por cada canal de la secuencia) que se reproducirá o se capturó al mismo tiempo (tic de reloj). Por lo tanto, el tamaño de un fotograma de audio es el tamaño de la muestra multiplicado por el número de canales de la secuencia.

Por ejemplo, el tamaño de fotograma de una secuencia estéreo (2 canales) con muestras float de 32 bits es de ocho bytes. Este valor debe estar entre 0 y 960 para secuencias Opus con una duración de paquete de 20 milisegundos. Debe estar entre 0 y 480 para secuencias Opus con una duración de paquete de 10 milisegundos. De forma predeterminada, este valor se establece en cero. Para las entradas de preroll, este valor debe ser mayor que cero. Las entradas de preroll se procesarán, pero no generarán datos de salida.

*frameCount*\
Tipo: uint32\_t

Este parámetro es obligatorio cuando los datos de entrada no están comprimidos en el procesamiento [XApuProcessType::ConvertPCM](/reference/audio/xapu/enums/xapuprocesstype), con las siguientes restricciones:

* Para datos PCM de entrada desentrelazados mono y estéreo, el valor mínimo es 4, el valor máximo es 960 y el valor debe ser múltiplo de 4.
* Para datos PCM de entrada entrelazados estéreo, el valor mínimo es 8, el valor máximo es 960 y el valor debe ser múltiplo de 8.
* Para [XApuProcessType::DecodeOpus](/reference/audio/xapu/enums/xapuprocesstype), este valor se puede usar para truncar el recuento de fotogramas de salida.
* Para [XApuProcessType::DecodeConvertOpus](/reference/audio/xapu/enums/xapuprocesstype), este valor se puede usar para truncar el número de fotogramas descodificados que se pasarán al convertidor.

Si este parámetro se usa para truncar el último paquete de una secuencia o un punto de bucle, se puede usar cualquier valor entre 0 y 960 para secuencias Opus con una duración de paquete de 20 milisegundos, o cualquier valor entre 0 y 480 para secuencias Opus con una duración de paquete de 10 milisegundos.

Si hay un caso en el que este parámetro es necesario para truncar la salida de un paquete en medio de la secuencia, el valor debe establecerse según las restricciones de [XApuProcessType::ConvertPCM](/reference/audio/xapu/enums/xapuprocesstype) indicadas anteriormente.

Si no se requiere truncamiento, este parámetro debe establecerse en 0xFFFFFFFF.

Para los casos de [XApuProcessType::DecodeOpus](/reference/audio/xapu/enums/xapuprocesstype) y [XApuProcessType::DecodeConvertOpus](/reference/audio/xapu/enums/xapuprocesstype), los parámetros [XApuDecodeConvertCommand::frameCount](/reference/audio/xapu/structs/xapudecodeconvertcommand) y [XApuDecodeConvertCommand::firstFrameIndex](/reference/audio/xapu/structs/xapudecodeconvertcommand) deben usarse para la búsqueda con precisión de fotogramas.

Un fotograma de audio en una secuencia PCM es un conjunto de muestras (el conjunto contiene una muestra por cada canal de la secuencia) que se reproducirá o se capturó al mismo tiempo (tic de reloj). Por lo tanto, el tamaño de un fotograma de audio es el tamaño de la muestra multiplicado por el número de canales de la secuencia. Por ejemplo, el tamaño de fotograma de una secuencia estéreo (2 canales) con muestras float de 32 bits es de ocho bytes.

*inputDataLength*\
Tipo: uint32\_t

Longitud de los datos de entrada en bytes. La longitud debe ser un múltiplo de 16. Para el caso de [XApuProcessType::ConvertPCM](/reference/audio/xapu/enums/xapuprocesstype), este valor debe ser igual a [XApuDecodeConvertCommand::frameCount](/reference/audio/xapu/structs/xapudecodeconvertcommand) x [XApuDecodeConvertActivateCommand::channelCount](/reference/audio/xapu/structs/xapudecodeconvertcommand) x sizeof(float)

*inputData*\
Tipo: void\*

Puntero a los datos de entrada para su procesamiento. Este valor debe ser igual o mayor que [XApuConnectOutputParameters::data](/reference/audio/xapu/structs/xapuconnectoutputparameters) y menor que [XApuConnectOutputParameters::data](/reference/audio/xapu/structs/xapuconnectoutputparameters) + [XApuConnectInputParameters::dataLength](/reference/audio/xapu/structs/xapuconnectinputparameters) devuelto por [XApuConnect](/reference/audio/xapu/functions/xapuconnect). *Este búfer debe estar alineado a 16 bytes.*

Para [XApuProcessType::DecodeOpus](/reference/audio/xapu/enums/xapuprocesstype) y [XApuProcessType::DecodeConvertOpus](/reference/audio/xapu/enums/xapuprocesstype), los datos de entrada deben ser un único paquete Opus (SILK, CELT o híbrido)

Para [XApuProcessType::ConvertPCM](/reference/audio/xapu/enums/xapuprocesstype), los datos de entrada deben ser PCM float (32 bits). Si la marca [XApuConnectOptions::DeinterleavedInput](/reference/audio/xapu/enums/xapuconnectoptions) está establecida, los datos PCM de entrada deben estar desentrelazados.

Para la entrada desentrelazada de [XApuProcessType::ConvertPCM](/reference/audio/xapu/enums/xapuprocesstype), los datos del primer canal comienzan en [XApuDecodeConvertCommand::inputData](/reference/audio/xapu/structs/xapudecodeconvertcommand)
y los datos del segundo canal comienzan en [XApuDecodeConvertCommand::inputData](/reference/audio/xapu/structs/xapudecodeconvertcommand) + ([XApuDecodeConvertCommand::inputDataLength](/reference/audio/xapu/structs/xapudecodeconvertcommand) / 2)

*maxOutputDataLength*\
Tipo: uint32\_t

Longitud máxima de los datos de salida en bytes. La longitud debe ser un múltiplo de 16. No debe superar [XApuConnectInputParameters::baseDataLength](/reference/audio/xapu/structs/xapuconnectinputparameters).

*outputData*\
Tipo: void\*

Puntero que contendrá los datos de salida PCM float (32 bits). Este valor debe ser igual o mayor que [XApuConnectOutputParameters::data](/reference/audio/xapu/structs/xapuconnectoutputparameters) y menor que [XApuConnectOutputParameters::data](/reference/audio/xapu/structs/xapuconnectoutputparameters) + [XApuConnectInputParameters::baseDataLength](/reference/audio/xapu/structs/xapuconnectinputparameters) devuelto por [XApuConnect](/reference/audio/xapu/functions/xapuconnect). Este búfer debe estar alineado a 16 bytes.

Cuando la marca [XapuConnectOptions::DeinterleavedOutput](/reference/audio/xapu/enums/xapuconnectoptions) está establecida, los datos se proporcionarán desentrelazados. En cada paquete, el punto medio del desentrelazado
se especificará de la siguiente manera:

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

* Los fotogramas del canal izquierdo se colocarán de 0 a (XapuResult::outputFrameCount-1); los fotogramas del canal derecho se colocarán desde (XapuResult::outputFrameCount)
  hasta el final del búfer

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

* Los fotogramas del canal izquierdo se colocarán de 0 a ([XApuConnectInputParameters::maxFrameCountPerOutput](/reference/audio/xapu/structs/xapuconnectinputparameters) - 1)
* Los fotogramas del canal derecho se colocarán desde [XApuConnectInputParameters::maxFrameCountPerOutput](/reference/audio/xapu/structs/xapuconnectinputparameters) hasta el final del búfer
* Esto es así incluso si OutputFrameCount es menor que maxFrameCountPerOutput. En este caso, use [XApuConnectInputParameters::maxFrameCountPerOutput](/reference/audio/xapu/structs/xapuconnectinputparameters) para determinar el punto medio del búfer y [XapuResult::outputFrameCount](/reference/audio/xapu/structs/xapuresult) para calcular el número de fotogramas por canal que se deben copiar.

## Comentarios

`XApuDecodeConvertCommand` lo usa para los parámetros de procesamiento de descodificación y conversión. Para obtener información sobre los miembros de `XApuCommandId`, consulte [XApuCommandId](/reference/audio/xapu/structs/xapucommandid). Para obtener más información sobre `XApuPorcessType`, consulte [XApuProcessType](/reference/audio/xapu/enums/xapuprocesstype).

El intervalo de la velocidad de rampa de tono va de 2^-18 (0,000003814697265625) a 8,0.  Cualquier valor menor que el mínimo hará que la rampa no haga nada: el tono se mantendrá en el valor actual.  Siempre que la velocidad de rampa sea mayor que el valor absoluto de la diferencia entre el valor actual y el de destino, la rampa se produce en un período de una muestra.

## Requisitos

**Encabezado:** xapu.h

**Plataformas compatibles:** XBOX Series X|S

## Documentación conceptual

* [Información general de XAPU](/build/console-features/audio/overviews/xapu-overview)

## Consulte también

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


## Related topics

- [XApuCommandId](/es/reference/audio/xapu/structs/xapucommandid.md)
- [XApuConnect](/es/reference/audio/xapu/functions/xapuconnect.md)
- [XApuConnectInputParameters](/es/reference/audio/xapu/structs/xapuconnectinputparameters.md)
- [XApuConnectOutputParameters](/es/reference/audio/xapu/structs/xapuconnectoutputparameters.md)
- [Información general sobre XAPU](/es/build/console-features/audio/overviews/xapu-overview.md)
