> ## 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 os parâmetros de processamento de decodificação ou de decodificação e conversão

## Sintaxe

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

### Membros

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

Especifica os parâmetros básicos de comando a serem enviados ao hardware para processamento. O mesmo XApuCommandId será definido em [XApuResult::id](/pt-BR/reference/audio/xapu/structs/xapuresult)

*pitchRampRate*\
Tipo: float

Esse é um valor que será adicionado ao pitch atual ou subtraído dele para cada saída.
Esse valor não tem sinal, e o mecanismo do Conversor de Taxa de Amostragem decidirá automaticamente se deve adicioná-lo ao pitch atual ou subtraí-lo dele, dependendo do valor do pitch de destino.
Por padrão, esse valor deve ser definido como *XAPU\_DEFAULT\_PITCH\_RAMP\_RATE*.

*targetPitch*\
Tipo: float

O pitch de destino para a operação de conversão atual. Para [XApuProcessType::DecodeOpus](/pt-BR/reference/audio/xapu/enums/xapuprocesstype), esse valor é ignorado.

*firstFrameIndex*\
Tipo: uint32\_t

Especifica o índice do primeiro quadro que será copiado para o buffer de saída. firstFrameIndex, combinado com frameCount, especifica o que é copiado para o buffer de saída. Nossa implementação não inclui os dados residuais ao usar firstFrameIndex. Se houver 100 quadros residuais, firstFrameIndex estiver definido como 50 e frameCount estiver definido como 200, 200 quadros serão adicionados a todo o residual, começando no 50º quadro dos dados decodificados. Isso significa que o buffer de entrada do HSRC terá os 100 quadros originais do residual seguidos por 200 quadros começando no 50º quadro do pacote decodificado atual.

Um quadro de áudio em um fluxo PCM é um conjunto de amostras (o conjunto contém uma amostra para cada canal do fluxo) que será reproduzido ou foi capturado ao mesmo tempo (tique do relógio). Assim, o tamanho de um quadro de áudio é o tamanho da amostra multiplicado pelo número de canais do fluxo.

Por exemplo, o tamanho do quadro para um fluxo estéreo (2 canais) com amostras float de 32 bits é de oito bytes. Esse valor deve estar entre 0 e 960 para fluxos Opus com duração de pacote de 20 milissegundos. Ele deve estar entre 0 e 480 para fluxos Opus com duração de pacote de 10 milissegundos. Por padrão, esse valor é definido como zero. Para entradas de preroll, esse valor deve ser maior que zero. As entradas de preroll serão processadas, mas não produzirão dados de saída.

*frameCount*\
Tipo: uint32\_t

Esse parâmetro é obrigatório quando os dados de entrada não estão compactados no processamento [XApuProcessType::ConvertPCM](/pt-BR/reference/audio/xapu/enums/xapuprocesstype), com as seguintes restrições:

* Para dados PCM de entrada desintercalados mono e estéreo, o valor mínimo é 4, o valor máximo é 960 e o valor deve ser múltiplo de 4.
* Para dados PCM de entrada intercalados estéreo, o valor mínimo é 8, o valor máximo é 960 e o valor deve ser múltiplo de 8.
* Para [XApuProcessType::DecodeOpus](/pt-BR/reference/audio/xapu/enums/xapuprocesstype), esse valor pode ser usado para truncar a contagem de quadros de saída.
* Para [XApuProcessType::DecodeConvertOpus](/pt-BR/reference/audio/xapu/enums/xapuprocesstype), esse valor pode ser usado para truncar o número de quadros decodificados que serão passados para o conversor.

Se esse parâmetro for usado para truncar o último pacote de um fluxo ou um ponto de loop, qualquer valor entre 0 e 960 poderá ser usado para fluxos Opus com duração de pacote de 20 milissegundos, ou qualquer valor entre 0 e 480 para fluxos Opus com duração de pacote de 10 milissegundos.

Se houver um caso em que esse parâmetro seja necessário para truncar a saída de um pacote no meio do fluxo, o valor deverá ser definido de acordo com as restrições de [XApuProcessType::ConvertPCM](/pt-BR/reference/audio/xapu/enums/xapuprocesstype) acima.

Se nenhum truncamento for necessário, esse parâmetro deverá ser definido como 0xFFFFFFFF.

Nos casos de [XApuProcessType::DecodeOpus](/pt-BR/reference/audio/xapu/enums/xapuprocesstype) e [XApuProcessType::DecodeConvertOpus](/pt-BR/reference/audio/xapu/enums/xapuprocesstype), os parâmetros [XApuDecodeConvertCommand::frameCount](/pt-BR/reference/audio/xapu/structs/xapudecodeconvertcommand) e [XApuDecodeConvertCommand::firstFrameIndex](/pt-BR/reference/audio/xapu/structs/xapudecodeconvertcommand) devem ser usados para uma busca com precisão de quadro.

Um quadro de áudio em um fluxo PCM é um conjunto de amostras (o conjunto contém uma amostra para cada canal do fluxo) que será reproduzido ou foi capturado ao mesmo tempo (tique do relógio). Assim, o tamanho de um quadro de áudio é o tamanho da amostra multiplicado pelo número de canais do fluxo. Por exemplo, o tamanho do quadro para um fluxo estéreo (2 canais) com amostras float de 32 bits é de oito bytes.

*inputDataLength*\
Tipo: uint32\_t

Comprimento dos dados de entrada em bytes. O comprimento deve ser múltiplo de 16. No caso de [XApuProcessType::ConvertPCM](/pt-BR/reference/audio/xapu/enums/xapuprocesstype), esse valor deve ser igual a [XApuDecodeConvertCommand::frameCount](/pt-BR/reference/audio/xapu/structs/xapudecodeconvertcommand) x [XApuDecodeConvertActivateCommand::channelCount](/pt-BR/reference/audio/xapu/structs/xapudecodeconvertcommand) x sizeof(float)

*inputData*\
Tipo: void\*

Ponteiro para os dados de entrada para processamento. Esse valor deve ser igual ou maior que [XApuConnectOutputParameters::data](/pt-BR/reference/audio/xapu/structs/xapuconnectoutputparameters) e menor que [XApuConnectOutputParameters::data](/pt-BR/reference/audio/xapu/structs/xapuconnectoutputparameters) + [XApuConnectInputParameters::dataLength](/pt-BR/reference/audio/xapu/structs/xapuconnectinputparameters) retornados por [XApuConnect](/pt-BR/reference/audio/xapu/functions/xapuconnect). *Esse buffer deve ser alinhado em 16 bytes.*

Para [XApuProcessType::DecodeOpus](/pt-BR/reference/audio/xapu/enums/xapuprocesstype) e [XApuProcessType::DecodeConvertOpus](/pt-BR/reference/audio/xapu/enums/xapuprocesstype), os dados de entrada devem ser um único pacote Opus (SILK, CELT ou Hybrid)

Para [XApuProcessType::ConvertPCM](/pt-BR/reference/audio/xapu/enums/xapuprocesstype), os dados de entrada devem ser PCM float (32 bits). Se o sinalizador [XApuConnectOptions::DeinterleavedInput](/pt-BR/reference/audio/xapu/enums/xapuconnectoptions) estiver definido, os dados PCM de entrada deverão estar desintercalados.

Para entrada desintercalada de [XApuProcessType::ConvertPCM](/pt-BR/reference/audio/xapu/enums/xapuprocesstype), os dados do primeiro canal começam em [XApuDecodeConvertCommand::inputData](/pt-BR/reference/audio/xapu/structs/xapudecodeconvertcommand)
e os dados do segundo canal começam em [XApuDecodeConvertCommand::inputData](/pt-BR/reference/audio/xapu/structs/xapudecodeconvertcommand) + ([XApuDecodeConvertCommand::inputDataLength](/pt-BR/reference/audio/xapu/structs/xapudecodeconvertcommand) / 2)

*maxOutputDataLength*\
Tipo: uint32\_t

Comprimento máximo dos dados de saída em bytes. O comprimento deve ser múltiplo de 16. Não deve exceder [XApuConnectInputParameters::baseDataLength](/pt-BR/reference/audio/xapu/structs/xapuconnectinputparameters).

*outputData*\
Tipo: void\*

Ponteiro para armazenar os dados PCM float (32 bits) de saída. Esse valor deve ser igual ou maior que [XApuConnectOutputParameters::data](/pt-BR/reference/audio/xapu/structs/xapuconnectoutputparameters) e menor que [XApuConnectOutputParameters::data](/pt-BR/reference/audio/xapu/structs/xapuconnectoutputparameters) + [XApuConnectInputParameters::baseDataLength](/pt-BR/reference/audio/xapu/structs/xapuconnectinputparameters) retornados por [XApuConnect](/pt-BR/reference/audio/xapu/functions/xapuconnect). Esse buffer deve ser alinhado em 16 bytes.

Quando o sinalizador [XapuConnectOptions::DeinterleavedOutput](/pt-BR/reference/audio/xapu/enums/xapuconnectoptions) estiver definido, os dados serão fornecidos desintercalados. Em cada pacote, o ponto médio da desintercalação
será especificado da seguinte maneira:

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

* Os quadros do canal esquerdo serão colocados de 0 a (XapuResult::outputFrameCount-1), e os quadros do canal direito serão colocados de (XapuResult::outputFrameCount)
  até o final do buffer

[XApuProcessType::DecodeConvertOpus](/pt-BR/reference/audio/xapu/enums/xapuprocesstype) e [XApuProcessType::ConvertPCM](/pt-BR/reference/audio/xapu/enums/xapuprocesstype):

* Os quadros do canal esquerdo serão colocados de 0 a ([XApuConnectInputParameters::maxFrameCountPerOutput](/pt-BR/reference/audio/xapu/structs/xapuconnectinputparameters) - 1)
* Os quadros do canal direito serão colocados de [XApuConnectInputParameters::maxFrameCountPerOutput](/pt-BR/reference/audio/xapu/structs/xapuconnectinputparameters) até o final do buffer
* Isso é válido mesmo que OutputFrameCount seja menor que maxFrameCountPerOutput. Nesse caso, use [XApuConnectInputParameters::maxFrameCountPerOutput](/pt-BR/reference/audio/xapu/structs/xapuconnectinputparameters) para determinar o ponto médio do buffer e [XapuResult::outputFrameCount](/pt-BR/reference/audio/xapu/structs/xapuresult) para calcular o número de quadros por canal a serem copiados.

## Comentários

Usado por `XApuDecodeConvertCommand` para os parâmetros de processamento de decodificação e conversão. Para obter informações sobre os membros de `XApuCommandId`, consulte [XApuCommandId](/pt-BR/reference/audio/xapu/structs/xapucommandid). Para obter mais informações sobre `XApuPorcessType`, consulte [XApuProcessType](/pt-BR/reference/audio/xapu/enums/xapuprocesstype).

O intervalo da taxa de rampa de pitch vai de 2^-18 (0.000003814697265625) a 8.0.  Qualquer valor menor que o mínimo fará com que a rampa não tenha efeito: o pitch permanecerá no valor atual.  Sempre que a taxa de rampa for maior que o valor absoluto da diferença entre o atual e o de destino, a rampa ocorrerá dentro de um período de amostra.

## Requisitos

**Cabeçalho:** xapu.h

**Plataformas compatíveis:** XBOX Series X|S

## Documentação conceitual

* [Visão geral da XAPU](/pt-BR/build/console-features/audio/overviews/xapu-overview)

## Confira também

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