6.2.1. Определения
6.2.1.1 Функции данных
raw_data_stream () | Последовательность блоков raw_data_block(). |
raw_data_block () | Блок необработанных данных, который содержит аудиоданные за период времени, соответствующий 1024 отсчетам, относящейся к ним информации и других данных. Имеется семь синтаксических элементов, идентифицируемых по элементу данных id_syn_ele. Элементы audio_channel_element () в одном raw_data_stream () и одном raw_data_block() должны иметь одну и только одну частоту дискретизации. В raw_data_block () возможно появление того же самого синтаксического элемента несколько раз, однако element_instance_tag должны иметь различные 4 бита, за исключением data_stream_element() и fill_element(). Поэтому в одном raw_data_block() может быть от 0 до максимум 16 случаев появления любого синтаксического элемента, за исключением data_stream_element() и fill_element (), где это ограничение не применяется. Если встречаются несколько data_stream_element() с одинаковым element_instance_tag, они являются частью одного потока данных. У fill_element () нет element_instance_tag (так как контент не требует последующей ссылки), и может встретиться любое число раз. Конец блока raw_data_block() обозначается специальным id_syn_ele (TERM), который встречается в raw_data_block() лишь единожды (таблица 12). |
single_channel_element () | Сокращенно SCE. Синтаксический элемент потока битов, содержащий кодированные данные для единственного звукового канала. single_channel_element() в основном состоит из individual_channel_stream(). В блоке необработанных данных может присутствовать до 16 таких элементов, у каждого из которых должен быть уникальный element_instance_tag (таблица 13). |
channel_pair_element () | Сокращенно CPE. Синтаксический элемент потока битов, содержащий данные для пары каналов. channel_pair_element () состоит из двух individual_channel_stream() и дополнительнной информации об объединенном кодировании. Эти два канала могут иметь общую служебную информацию. Элемент channel_pair_element() имеет те же самые ограничения, что и single_channel_element, element_instance_tag, и число появлений (таблица 14). |
coupling_channel_element () | Сокращенно ССЕ. Синтаксический элемент, который содержит аудиоданные для спаренного канала. В спаренном канале представлена информация об одном блоке многоканальной интенсивности или диалогах многоязычных программ. Правила для количества coupling_channel_element() и instance_tag аналогичны правилам для single_channel_element() (таблица 22). См. 10.3. |
lfe_channel_element () | Сокращенно LFE. Синтаксический элемент, который содержит канал с низкой частотой дискретизации. Правила для числа lfe_channel_element() и instance_tag аналогичны правилам для single_channel_element () 's (таблица 23). См. 6.4. |
audio_channel_element () | Общее обозначение для single_channel_element (), channel_pair_element (), coupling_channel_element () и Ife_channel_element (), |
program_config_element () | Сокращенно PCE. Синтаксический элемент, который содержит данные конфигурации программы. Правила для числа program_config_element () и element_instance_tag аналогичны правилам для single_channel_element () (таблица 25). PCE должны следовать перед всеми другими синтаксическими элементами в raw_data_block(). См. 6.5. |
fill_element () | Сокращенно FIL. Синтаксический элемент, который содержит данные заполнения. Может присутствовать любое число элементов, которые могут встретиться в любом порядке в raw_data_block (таблица 26). См. 6.7. |
data_stream_element () | Сокращенно DSE. Синтаксический элемент, который содержит данные. Снова, есть 16 element_instance_tags. Однако нет ограничения на количество data_stream_element() ни с каким instance_tag, в то время как единственный поток данных может продолжаться через многократный data_stream_element() с тем же самым instance_fag (таблица 24). См. 6.5.3. |
byte_alignment () | Выравнивание относительно первого бита raw_data_block(). |
6.2.1.2 Элементы данных
id_syn_ele | Элемент данных, который идентифицирует синтаксический элемент или конец raw_data_block() (таблица 12): |
Таблица 36 - Идентификация синтаксических элементов
ID | Код | Сокращение | Синтаксический элемент |
ID_SCE | 0x0 | SCE | single_channel_element() |
ID_CPE | 0x1 | CPE | channel_pair_element() |
ID_ССЕ | 0x2 | ССЕ | coupling_channel_element() |
ID_LFE | 0x3 | LFE | Ife_channel_element() |
ID_DSE | 0x4 | DSE | data_stream_element() |
ID_PCE | 0x5 | PCE | program_config_element() |
ID_FIL | 0x6 | FIL | fill_element() |
ID_END | 0x7 | TERM |
element_instance_tag | Уникальный тег для всех синтаксических элементов, кроме fill_element(). Все синтаксические элементы, содержащие теги, могут встречаться более одного раза, но, за исключением data_stream_element(), должны иметь уникальный element_instance_tag в каждом raw_data_block(). Этот тег также используется для указания на синтаксические элементы аудио в single_channel_element(), channel_pair_element(), Ife_channel_element(), data_channel_element() и coupling_channel_element() в program_config_element() и обеспечивает возможность использования до 16 независимых program_config_element() (таблицы 13, 14, 22, 23, 24, 25, 26). |
6.2.2 Требования к буферу
6.2.2.1 Минимальный входной буфер декодера
Следующие правила используются для вычисления максимального количества битов во входном буфере как для потока битов в целом, для любой данной программы, так и для любого данного SCE/CPE/CCE:
Входной размер буфера составляет 6144 бита на SCE или независимо переключаемого ССЕ, плюс 12288 битов на СРЕ (6144*NCC). Размеры общего буфера и отдельного буфера ограничиваются так, чтобы предел буферизации мог быть вычислен для всего потока битов, всей программы или для отдельного audio_channel_element(), позволяя декодеру разбивать многоканальный поток битов на отдельные моно и стерео потоки битов, которые декодируются отдельными моно и стерео декодерами соответственно. Все биты для LFE или зависимого ССЕ должны выделяться исходя из общих требований к буферу, основанных на независимых ССЕ, SCE и СРЕ. Кроме того, все биты, требуемые для любых DSE, PCE, FIL, фиксированных заголовков, переменных заголовков, byte_alignment и CRC, должны быть также выделены исходя из тех же самых общих требований к буферу.
6.2.2.2 Резервуар битов
Управление резервуаром битов осуществляется в кодере. Максимальный резервуар битов в кодере зависит от NCC и средней скорости передачи. Максимальный размер резервуара битов для каналов с постоянной скоростью передачи может быть вычислен путем вычитания среднего числа битов на блок из минимального входного размера буфера декодера. Например, при 96 кбит/с для сигнала стерео на частоте дискретизации 44,1 кГц среднее число битов на блок (mean_framelength) (96000 bit/s/44100 1/s* 1024) = 2229,1156.... Это приводит к максимальному размеру резервуара битов (max_bit_reservoir) INT (12288 битов - 2229,1156 ...) = 10058. Для каналов с переменной скоростью передачи кодер должен работать так, чтобы требования к входному буферу не превышали минимальный входной буфер декодера.
Состояние резервуара битов (bit_reservoir_state) передается в поле buffer_fullness либо как состояние резервуара битов, округленного до целого значения (adif_buffer_fullness), либо как состояние резервуара битов, разделенного на NCC, разделенного на 32 и округленного до целого значения (adts_buffer_fullness).
bit_reservoir_state последующих фреймов может быть получен следующим образом:
bit reservoir_state[frame] = bit_reservoir_state[frame - 1] + mean_framelength - framelength[frame].
Framelengths должны быть выбраны так, чтобы следующее условие выполнялось:
0 bit_reservoir_state[frame]<max_bit_reservoir.
6.2.2.3 Максимальная скорость передачи