Skip to main content

XApuDecodeConvertCommand

Define os parâmetros de processamento de decodificação ou de decodificação e conversão

Sintaxe

Membros

id
Tipo: XApuCommandId
Especifica os parâmetros básicos de comando a serem enviados ao hardware para processamento. O mesmo XApuCommandId será definido em XApuResult::id 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, 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, 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, esse valor pode ser usado para truncar a contagem de quadros de saída.
  • Para XApuProcessType::DecodeConvertOpus, 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 acima. Se nenhum truncamento for necessário, esse parâmetro deverá ser definido como 0xFFFFFFFF. Nos casos de XApuProcessType::DecodeOpus e XApuProcessType::DecodeConvertOpus, os parâmetros XApuDecodeConvertCommand::frameCount e XApuDecodeConvertCommand::firstFrameIndex 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, esse valor deve ser igual a XApuDecodeConvertCommand::frameCount x XApuDecodeConvertActivateCommand::channelCount x sizeof(float) inputData
Tipo: void*
Ponteiro para os dados de entrada para processamento. Esse valor deve ser igual ou maior que XApuConnectOutputParameters::data e menor que XApuConnectOutputParameters::data + XApuConnectInputParameters::dataLength retornados por XApuConnect. Esse buffer deve ser alinhado em 16 bytes. Para XApuProcessType::DecodeOpus e XApuProcessType::DecodeConvertOpus, os dados de entrada devem ser um único pacote Opus (SILK, CELT ou Hybrid) Para XApuProcessType::ConvertPCM, os dados de entrada devem ser PCM float (32 bits). Se o sinalizador XApuConnectOptions::DeinterleavedInput estiver definido, os dados PCM de entrada deverão estar desintercalados. Para entrada desintercalada de XApuProcessType::ConvertPCM, os dados do primeiro canal começam em XApuDecodeConvertCommand::inputData e os dados do segundo canal começam em XApuDecodeConvertCommand::inputData + (XApuDecodeConvertCommand::inputDataLength / 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. 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 e menor que XApuConnectOutputParameters::data + XApuConnectInputParameters::baseDataLength retornados por XApuConnect. Esse buffer deve ser alinhado em 16 bytes. Quando o sinalizador XapuConnectOptions::DeinterleavedOutput 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:
  • 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 e XApuProcessType::ConvertPCM:

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. Para obter mais informações sobre XApuPorcessType, consulte 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

Confira também

XApuEnqueueCommand
XApuResult
XAPU
Last modified on October 6, 2026