RIFF (Resource Interchange File Format)
Essa visão geral descreve o RIFF (Formato de Arquivo de Intercâmbio de Recursos), que é usado em arquivos .wav. RIFF é o formato típico 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 partes.
Identificadores FOURCC
O tipo de dados em uma parte é indicado por um identificador de código de quatro caracteres (FOURCC). UM FOURCC é um inteiro sem sinal de 32 bits criado pela concatenação de quatro caracteres ASCII usados para identificar tipos de partes em um arquivo RIFF. Por exemplo, o FOURCC "abcd" é representado em um sistema little-endian como 0x64636261. FOURCCs podem conter caracteres de espaço, portanto, " 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 do formato de áudio.
A tabela a seguir mostra os identificadores FOURCC que podem ser esperados nos formatos de áudio com suporte do XAudio2.
Formatar | Identificadores FOURCC | Informações adicionais |
---|---|---|
PCM | "RIFF", "fmt", "data" | |
ADPCM | "RIFF", "fmt", "data", "smpl", "wsmpl" | Consulte Visão geral do ADPCM para obter uma descrição dos identificadores FOURCC específicos do ADPCM. |
Os identificadores FOURCC "RIFF", "fmt" e "data" são comuns a todos os formatos com suporte. A tabela a seguir descreve os identificadores FOURCC encontrados em todos os formatos com suporte.
Identificador FOURCC | Descrição |
---|---|
"RIFF" | Parte RIFF padrão que contém um tipo de arquivo com o valor de "WAVE" ou "XWMA" nos quatro primeiros bytes de sua seção de dados e as outras partes no arquivo no restante de sua seção de dados. |
"fmt" | Contém o cabeçalho de formato do arquivo de áudio. Os dados nessa parte correspondem a uma das seguintes estruturas: WAVEFORMATEX, WAVEFORMATEXTENSIBLE ADPCMWAVEFORMAT. |
"data" | Contém dados de áudio para o arquivo de áudio. No XAudio2, o conteúdo da parte de dados será lido em um buffer e passado para uma voz de origem como o membro pAudioData de uma estrutura de XAUDIO2_BUFFER . |
Chunks
Um arquivo RIFF consiste em uma parte RIFF que contém zero ou mais partes.
A parte DO RIFF tem a seguinte forma:
"RIFF", fileSize, fileType, data
Quando "RIFF" é o código LITERAL FOURCC "RIFF", fileSize é um valor de 4 bytes que fornece 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 o seguinte formato:
chunkID, chunkSize, data
Quando chunkID é um FOURCC que identifica os dados contidos na parte, chunkSize é um valor de 4 bytes que fornece o tamanho da seção de dados da parte e os dados são zero ou mais bytes de dados. Os dados são sempre adicionados ao limite word mais próximo. chunkSize fornece o tamanho dos dados válidos na parte. Ele não inclui o preenchimento, o tamanho de chunkID ou o tamanho de chunkSize.
Tópicos relacionados