Какой самый дальний резервуар MP3 может быть из кадра, ссылающегося на него?

Сжатые данные кадра MP3 могут быть меньше, чем пространство, доступное в кадре. Когда это происходит, мы называем доступное пространство резервуаром.

Когда будущий кадр слишком велик и не может поместиться в пространство, доступное в одном кадре, он может использовать резервуар для своего излишка. Это обеспечивает постоянную скорость передачи битов и, тем не менее, переменную длину сжатия, включая длину, которая слишком велика для обычного кадра.

Что мне интересно, так это то, как далеко может быть резервуар от текущего кадра?

Например, в следующем я показываю 8 кадров. Текущий кадр (CF) и 7 кадров перед ним.

+----+----+----+----+----+----+----+----+
| -7 | -6 | -5 | -4 | -3 | -2 | -1 | CF |
+----+----+----+----+----+----+----+----+

Скажем, CF - кадр 100 000, может ли он использовать резервуар, все еще доступный в кадре 0?

Или есть ли такой предел, как 255 кадров назад?

1 ответ

Решение

Насколько я знаю, нет определенного ограничения количества кадров, но есть контрольный предел в 4088 бит (511 байт). Таким образом, точный предел кадра битового резервуара зависит от битрейта.

Я нашел эту информацию в Техническом FAQ LAME:

Данные MP3 для кадра N не сохраняются в кадре N, но могут быть распределены по нескольким кадрам. В типичном случае данные для кадра N будут иметь 20%, которые хранятся в кадре N-1, и 80%, хранящиеся в кадре N. Если кодер создает большой битовый резервуар, данные для кадра N могут фактически сохраняться 4088 биты обратно в битовый поток. Затем, если возникает очень трудный для кодирования фрагмент, кодировщик может свободно использовать обычные биты для этого кадра плюс до 4088 дополнительных. Полученные данные будут занимать несколько кадров. Начальное отрицательное смещение в битовом потоке для данных, связанных с данным кадром в байтах, задается main_data_begin.

Другие вопросы по тегам