Какой целочисленный тип используется для фреймов данных MP3? - PullRequest
1 голос
/ 14 января 2020

Я пишу универсальную библиотеку синтаксического анализатора для различных двоичных форматов в Rust как часть личного проекта. Я начал исследовать файловую структуру файлов MP3. Насколько я понимаю, структура файла MP3 состоит из заголовка и фреймов данных. Каждый кадр заголовка предоставляет метаинформацию о последующем кадре данных. Вот диаграмма и список допустимых значений для кадров заголовка MP3, на которые я ссылаюсь.

Я понимаю формат заголовка MP3. Мое замешательство или отсутствие информации окружают фреймы данных MP3. Кажется, я не могу найти источник, который указывает, какие целочисленные типы семплов закодированы, как в части кадра данных файла MP3. Являются ли они 8-битными, 16-битными, 32-битными, со знаком, без знака и т. Д. c?

Лучшее, что я могу придумать, - это использовать комбинацию частоты дискретизации и битрейта для расчета того, что каждая выборка размер должен. Однако это не определяет, является ли каждый образец целым числом со знаком или без знака.

Я не пытаюсь декодировать эти файлы, я просто пытаюсь их проанализировать. Мне было удивительно трудно найти эту информацию. Будем весьма благодарны за любую информацию или полезные советы.

1 Ответ

2 голосов
/ 14 января 2020

Хотя это не относится к .mp3 как таковым, потенциально может быть некоторая полезная информация в Will C. Книга Пиркла, Проектирование плагинов аудиоэффектов в C ++ .

Он рассказывает о том, как аудиоформат .wav хранит свою информацию. Используются целые числа со знаком от -32 768 до 32 767. Это представляет диапазон 2 ^ 16 в биполярном формате, где показатель степени соответствует глубине в битах (чаще всего 16 или 24).

Еще одна важная вещь, которую следует отметить, - это то, что в то время как фазовая инверсия является распространенным явлением во многих аудио приложениях нет соответствующего целого числа для инвертирования -32,768. Чтобы компенсировать это, обычно значение -32,768 трактуется как -32,767. Это имеет значение только при использовании значения 0 при обработке, что чаще всего имеет место. В противном случае можно расширить верхний предел до 32 768.

Он заявляет, что для приложений обработки звука более распространено иметь дело с числами с плавающей запятой либо между 0.0f и 1.0f, либо -1.0f и 1.0f. Причина в том, что из-за того, что сложение и умножение являются общими операциями в DSP, мы избегаем переполнения этого диапазона, если мы используем эти числа с плавающей запятой. В биполярном целочисленном формате слишком легко найти два числа, которые приводят к произведению или сумме за пределами этого диапазона. В диапазоне от -1,0f до 1,0f любые два числа всегда приводят к продукту, который все еще находится в этом диапазоне. К сожалению, дополнение все еще требует осторожности, но ...

Извините, у меня нет конкретной информации о .mp3s конкретно, но, возможно, это все еще может быть проницательным.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...