Informática Numaboa - Referências
WAVE
Seg 9 Jul 2007 07:18 |
- Detalhes
- Categoria: Formatos padrão
- Atualização: Terça, 21 Abril 2009 20:17
- Autor: vovó Vicki
- Acessos: 10633
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.