Formato de arquivo de intercâmbio de recursos (RIFF)
Esta visão geral descreve o Resource Interchange File Format (RIFF), que é usado em arquivos .wav. RIFF é o formato típico a partir do qual os dados de áudio para XAudio2 serão carregados.
RIFF
Um arquivo RIFF é composto por várias seções discretas de dados chamadas pedaços.
Identificadores FOURCC
O tipo de dados em um bloco é indicado por um identificador de código de quatro caracteres (FOURCC). Um FOURCC é um inteiro não assinado de 32 bits criado pela concatenação de quatro caracteres ASCII usados para identificar tipos de bloco em um arquivo RIFF. Por exemplo, o FOURCC "abcd" é representado em um sistema little-endian como 0x64636261. FOURCCs podem conter caracteres de espaço, então "abc" é um FOURCC válido. Os arquivos de áudio usam códigos FOURCC para identificar partes de formato de áudio, partes de dados de áudio e quaisquer outras partes específicas para o formato de áudio.
A tabela a seguir mostra os identificadores FOURCC que podem ser esperados nos formatos de áudio suportados pelo XAudio2.
Os identificadores FOURCC "RIFF", "fmt" e "data" são comuns a todos os formatos suportados. A tabela a seguir descreve os identificadores FOURCC encontrados em todos os formatos suportados.
Identificador FOURCC | Descrição |
---|---|
"RIFF" | Bloco RIFF padrão contendo um tipo de arquivo com o valor de "WAVE" ou "XWMA" nos primeiros quatro bytes de sua seção de dados e os outros blocos no arquivo no restante de sua seção de dados. |
"FMT" | Contém o cabeçalho de formato para o arquivo de áudio. Os dados neste bloco correspondem a uma das seguintes estruturas: WAVEFORMATEX, WAVEFORMATEXTENSIBLE ADPCMWAVEFORMAT. |
"dados" | Contém dados de áudio para o arquivo de áudio. No XAudio2, o conteúdo do bloco de dados será lido em um buffer e passado para uma voz de origem como o pAudioData membro de uma estrutura XAUDIO2_BUFFER. |
Chunks
Um arquivo RIFF consiste em um bloco RIFF contendo zero ou mais outros blocos.
O bloco RIFF tem a seguinte forma:
"RIFF", fileSize, fileType, dados
Onde "RIFF" é o código FOURCC literal "RIFF", fileSize é um valor de 4 bytes que dá o tamanho dos dados no arquivo, e fileType é um FOURCC que identifica o tipo de arquivo específico. O valor de fileSize inclui o tamanho de fileType FOURCC mais o tamanho dos dados a seguir, mas não inclui o tamanho do "RIFF" FOURCC ou o tamanho de fileSize. Os dados consistem em partes em qualquer ordem.
Outras partes têm a seguinte forma:
chunkID, chunkSize, data
Onde chunkID é um FOURCC que identifica os dados contidos no bloco, chunkSize é um valor de 4 bytes que dá o tamanho da seção de dados do bloco e os dados são zero ou mais bytes de dados. Os dados são sempre acolchoados no limite WORD mais próximo. chunkSize fornece o tamanho dos dados válidos no bloco. Ele não inclui o preenchimento, o tamanho de chunkIDou o tamanho de chunkSize.
Tópicos relacionados