Que tipo integer é usado para quadros de dados MP3?

votos
0

Eu estou escrevendo uma biblioteca de analisador universal para vários formatos binários em Rust, como parte de um projeto pessoal. Eu comecei a pesquisar a estrutura dos arquivos MP3. Pelo que entendi, uma estrutura de arquivos MP3 consiste em quadros de cabeçalho e dados. Cada quadro de cabeçalho contém informações meta sobre o quadro de dados de processo. Aqui está um diagrama e uma lista de valores permitidos para os quadros de cabeçalho MP3 que eu estou fazendo referência.

Eu entendo o formato do cabeçalho MP3. Minha confusão, ou falta de informação, envolve quadros de dados MP3. Eu não consigo encontrar uma fonte que especifica qual tipo inteiro amostras são codificados como na parte de quadro de dados de um arquivo MP3. Estão 8 bits, 16 bits, 32 bits, assinado, não assinados, etc?

O melhor que eu posso pensar é, para usar uma combinação de frequência taxa de amostragem e taxa de bits para calcular o que cada tamanho da amostra deveria. No entanto, isso não determina se cada amostra é um inteiro assinado ou não assinado.

Eu não estou tentando decodificar esses arquivos, eu só estou tentando analisá-los. Eu tive um tempo surpreendentemente difícil encontrar esta informação. Qualquer informação ou útil alguém oferecer pode seria muito apreciado.

Publicado 14/01/2020 em 00:00
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Embora este não está relacionado com .mp3 , por si só, não poderia haver alguma informação útil no livro de Will C. Pirkle, Projetando Áudio Efeito Plugins em C ++ .

Ele discute a maneira pela qual o .wav formato de áudio armazena suas informações. Ele usa números inteiros a partir de -32.768 a 32.767 assinado. Isto representa uma gama de 2 ^ 16 em um formato bipolar, onde o expoente corresponde à profundidade de bits (mais vulgarmente 16 ou 24).

Outra coisa importante a se notar é que enquanto inversão de fase é uma coisa comum em muitas aplicações de áudio, não há inteiro correspondente para inverter -32.768. Para compensar, é comum para tratar o valor -32.768 -32.767 como. Isso só importa que se você estiver usando o valor 0 em seu processamento, que é o caso mais frequente. Caso contrário, pode-se estender o limite superior a 32.768.

Ele faz afirmar que é mais comum para aplicações de processamento de áudio para lidar com números de ponto flutuante, quer entre 0.0f e 1.0f ou -1.0f e 1.0f. A razão é que, devido à adição e multiplicação sendo operações comuns em DSP, evitamos transbordando que faixa se usarmos estes pontos flutuantes. No formato inteiro bipolar, é muito fácil encontrar dois números que resultam em um produto ou fora soma desse intervalo. Na gama de -1.0f para 1.0f, quaisquer dois números irá sempre resultar em um produto que ainda está dentro desse intervalo. Infelizmente, além ainda requer cautela, mas eh ...

Me desculpe, eu não tenho mais informações sobre .mp3s especificamente, mas talvez isso ainda poderia ser perspicaz.

Boa sorte!

Respondeu 14/01/2020 em 20:02
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more