A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Referências

WAVE

Seg

9

Jul

2007


07:18

(9 votos, média 4.56 de 5) 


O chunk de Formato

O chunk de Formato (fmt) contém parâmetros fundamentais para os dados da waveform, tais como a taxa de amostragem (sample rate), bits de resolução e número de canais de áudio.

O chunk de Formato possui os seguintes campos:

ID                           chunkID           ID do chunk
inteiro longo com sinal      chunkSize         Tamanho do chunk
inteiro curto com sinal      FormatTag         Tag de formato
inteiro curto sem sinal      Channels          Canais
inteiro longo sem sinal      SamplesPerSec     Amostras por segundo
inteiro longo sem sinal      AvgBytePerSec     Média de bytes por segundo
inteiro curto sem sinal      BlockAlign        Alinhamento de bloco
inteiro curto sem sinal      BitsPerSample     Bits por amostra

A ID é sempre "fmt " (note o caractere de espaço no final da ID). O campo chunkSize é o tamanho do chunk, descontados os 8 bytes da ID e deste campo. O tamanho do chunk varia de acordo com o "formato" especificado em FormatTag.

Os dados WAVE podem ser armazenados sem compactação. Neste caso, os pontos de amostragem são armazenados como descrito no tópico Sample Points e Sample Frames. Por outro lado, vários tipos de compressão podem ser usados. O campo que indica se foi usado algum tipo de compressão é o FormatTag.

Se for usado algum tipo de compactação, o valor de FormatTag será diferente de 1 e o chunk de formato recebe alguns campos adicionais. Estes contêm informações necessárias para obter e descompactar os dados armazenados. O primeiro destes campos é um inteiro curto sem sinal que indica quantos bytes foram adicionados depois dele mesmo. Além disto, formatos comprimidos precisam de um chunk de Fato contendo um inteiro longo sem sinal indicando o tamanho (em pontos de amostragem) que a waveform precisa ter após ser descompactada. Existem inúmeros formatos comprimidos (na verdade, existem em excesso). Detalhes sobre estes formatos podem ser encontrados no site da Microsoft.

Um FormatTag = 1 indica que os dados não foram compactados e que não há campos adicionais no chunk de Formato.

O campo Channels contém o número de canais de áudio do som. O valor 1 indica som mono, 2 é para som estéreo, 4 para som de quatro canais, etc. Em sons multicanal, os pontos de amostragem são entrelaçados. Um conjunto de pontos de amostragem entrelaçados é chamado de frame de amostragem ou grupo de amostragem.

O campo SamplesPerSec é a taxa de amostragem usada para reproduzir o som, indicada em frames de amostragem por segundo (isto é, em hertz). As três taxas padrão para arquivos não comprimidos (MPC) são 11025, 22050 e 44100 KHz, mas outras taxas podem ser usadas.

O campo AvgBytePerSec indica quantos bytes são reproduzidos por segundo. Este valor pode ser usado por aplicativos para estimar o tamanho do buffer na RAM necessário para evitar problemas de latência durante a reprodução. O valor deste campo deve ser igual ao resultado obtido pela fórmula a seguir (arredondando o resultado para o próximo inteiro):

SamplesPerSec * BlockAlign

O campo BlockAlign deve ser o resultado arredondado para o próximo inteiro obtido através da fórmula

Channels * (BitsPerSample / 8)

O BlockAlign é o tamanho de um frame de amostragem medido em bytes. Por exemplo, um frame de amostragem de um wave mono de 16 bits tem 2 bytes, um frame de amostragem de um wave estéreo de 16 bits tem 4 bytes, etc.

O campo BitsPerSample indica a resolução em bits de um ponto de amostragem. Por exemplo, uma waveform de 16 bits tem um BitsPerSample = 16.

Um arquivo WAVE deve ter um, e apenas um chunk de Formato.

Informações adicionais