Quel type integer est utilisé pour des trames de données MP3?

voix
0

Je suis en train d' écrire une bibliothèque d'analyseur universel pour différents formats binaires à Rust dans le cadre d'un projet personnel. J'ai commencé des recherches sur la structure de fichiers de fichiers MP3. Si je comprends bien, une structure de fichier MP3 se compose d' en- tête et les trames de données. Chaque trame d' en- tête fournit des informations sur les méta la trame de données de procédure. Voici un diagramme et une liste des valeurs autorisées pour les cadres d' en- tête de MP3 que je référencement.

Je comprends le format de l' en- tête de MP3. Ma confusion ou manque d'information, des trames de données entoure MP3. Je ne peux pas sembler trouver une source qui spécifie ce type entier échantillons sont codés comme dans la partie de trame de données d'un fichier MP3. Sont - ils 8 bits, 16 bits, 32 bits, signé, non signé, etc?

Le mieux que je peux penser est, d'utiliser une combinaison de la fréquence de la fréquence d'échantillonnage et le débit pour calculer ce que chaque taille de l'échantillon. Toutefois, cela ne détermine pas si chaque échantillon est un entier signé ou non.

Je ne suis pas d'essayer de décoder ces fichiers, je suis juste essayer de les analyser. J'ai eu un temps étonnamment difficile de trouver ces informations. Toute information ou une personne utile offre peut serait très apprécié.

Créé 14/01/2020 à 00:00
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
2

Bien que cela ne soit pas lié à .mp3 en soi, il pourrait y avoir des informations utiles dans Will C. livre de Pirkle, Design Plugins Effet audio en C ++ .

Il discute de la façon dont le .wav format audio stocke ses informations. Il utilise des entiers signés à partir de -32768 à 32767. Cela représente une plage de 2 ^ 16 dans un format bipolaire, où les correspond exposant à la profondeur de bit ( le plus souvent 16 ou 24).

Une autre chose importante à noter est que si l'inversion de phase est une chose commune dans de nombreuses applications audio, il n'y a pas entier correspondant pour inverser -32768. Pour compenser, il est courant de considérer la valeur comme -32768 -32767. Ce point est important que bien que si vous utilisez la valeur 0 dans votre traitement, ce qui est le plus souvent le cas. Dans le cas contraire, on pourrait étendre la limite supérieure à 32768.

Il fait état qu'il est plus courant pour les applications de traitement audio pour traiter avec des nombres à virgule flottante soit entre 0.0f et 1.0f ou -1.0f et 1.0f. La raison en est que , en raison de l' addition et la multiplication des opérations courantes étant en DSP, nous évitons déborder cette gamme si nous utilisons ces points flottants. Dans le format entier bipolaire, il est trop facile de trouver deux chiffres qui se traduisent par un produit ou d'une somme en dehors de cette plage. Dans la gamme de -1.0f à 1.0f, deux numéros seront toujours pour résultat un produit qui est encore dans cette fourchette. Malheureusement, exige toujours plus de prudence, mais ... eh

Je suis désolé, je n'ai pas plus d'informations sur .mp3 spécifiquement, mais peut-être cela pourrait encore être perspicace.

Bonne chance!

Créé 14/01/2020 à 20:02
source utilisateur

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