ГОСТ Р 53556.10-2014
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
Звуковое вещание цифровое
КОДИРОВАНИЕ СИГНАЛОВ ЗВУКОВОГО ВЕЩАНИЯ С СОКРАЩЕНИЕМ ИЗБЫТОЧНОСТИ ДЛЯ ПЕРЕДАЧИ ПО ЦИФРОВЫМ КАНАЛАМ СВЯЗИ
ЧАСТЬ III (MPEG-4 AUDIO)
Передискретизация аудио
Sound broadcasting digital. Coding of signals of sound broadcasting with reduction of redundancy for transfer on digital communication channels. Part III (MPEG-4 audio). Oversampled audio
ОКС 33.170
Дата введения 2015-01-01
Предисловие
1 РАЗРАБОТАН ТК 480 "Связь"
2 ВНЕСЕН Техническим комитетом по стандартизации N 480 "Связь"
3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 18 апреля 2014 г. N 386-ст
4 Настоящий стандарт разработан с учетом основных нормативных положений международного стандарта ИСО/МЭК 14496-3:2009* "Информационные технологии. Кодирование аудиовизуальных объектов. Часть 3. Аудио" (ISO/IEC 14496-3:2009 "Information technology - Coding of audio-visual objects - Part 3: Audio", NEQ) [1]
5 ВВЕДЕН ВПЕРВЫЕ
6 ПЕРЕИЗДАНИЕ. Июль 2020 г.
Правила применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
1 Область применения
Стандарт описывает алгоритм кодирования без потерь MPEG-4 для передискретизированных аудиосигналов.
2 Термины и определения
В этом стандарте используются следующие термины и определения:
|
|
Audio Channel | Поток битов DSD, предназначенный для одного громкоговорителя. |
Audio Frame | Фрейм (кадр), содержащий аудиоданные. |
Audio Channel Number | Порядковый номер, присвоенный звуковому каналу. Номера звуковых каналов присваиваются непрерывно, начиная с единицы. |
Frame | Блок данных, принадлежащий определенному временному коду. Время воспроизведения фрейма составляет 1/75 с. |
Reserved | Все поля, маркированные Reserved (Зарезервировано), резервируются для будущей стандартизации. Все поля Reserved должны быть обнулены. |
Silence Pattern | Сгенерированная в цифровой форме кодограмма DSD со следующими свойствами:
у всех аудиобайтов одно и то же значение;
каждый аудиобайт должен содержать 4 бита, равные нулю, и 4 бита, равные единице. |
Direct Stream Digital | Однобитовое передискретизированное представление аудиосигнала. |
Direct Stream Transfer | Метод кодирования без потерь, используемый для сигналов DSD в компакт-диске аудио высшего качества. |
Half Probability | Половинная вероятность определяет для каждого звукового канала в аудиофрейме, кодируются ли первые биты DSD арифметически, используя значения Ptable, или используя вероятность, равную 1/2. |
Mapping | Отображение определяет для каждого сегмента фильтр прогноза и таблицу вероятности. |
Prediction Filter | Фильтр прогноза является трансверсальным фильтром, используемым, чтобы предсказать значение следующего бита DSD. Фильтр прогноза характеризуется порядком прогноза и коэффициентами. |
Probability Table | Таблица вероятности содержит вероятность того, что для данного вывода фильтра прогноза значение бита DSD предсказывается ошибочно. |
Sampling Frequency | Частота дискретизации сигнала DSD должна быть 64 * 44,1 кГц, 128 * 44,1 кГц или 256 * 44,1 кГц. |
Segmentation | Каждый звуковой канал в аудиофрейме может быть разделен на сегменты. |
3 Условные обозначения
3.1 Арифметические и битовые операции
|
|
a>>b | Сдвиг а вправо на b битов. Новые биты msb устанавливаются в ’0’. |
a<<b | Сдвиг а влево на b битов. Новые биты Isb устанавливаются в ’0’. |
a|b | Поразрядное ИЛИ для а и b. |
a&b | Поразрядное И для а и b. |
min(a, b) | Наименьшее значение из а и b. |
max(a, b) | Наибольшее значение из а и b. |
mod b | Значение b по модулю. |
trunc(a) | Значение а, округленное в меньшую сторону. |
|a| | Абсолютное значение а. |
a = = b | Оценить, равны ли а и b. |
a!=b | Оценить, не равны ли а и b. |
a=b | Переменная а устанавливается в значение b. |
a++ | а = а +1 |
a- = b | а = а - b |
a + = b | а = а + b |
3.2 Упорядочивание разрядов
Графическое изображение всех многоразрядных величин является таким, что старший значащий бит (msb) расположен слева, а младший значащий бит (Isb) - справа. Рисунок 1 определяет позицию двоичного разряда в байте.
|
Рисунок 1 - Упорядочивание бита в байте
3.3 Последовательность разрядов
Во всех местах, где используется последовательность битов, применяется нотация со старшим значащим разрядом на первом месте.
3.4 Десятичная запись
Всем десятичным величинам предшествуют пробел или индикатор диапазона (..), когда включено в диапазон. Старшая значащая цифра находится слева, младшая значащая цифра - справа.
3.5 Порядок битов DSD
Первый выбранный бит DSD сохраняется в старшем значащем бите байта.
3.6 Полярность DSD
Бит DSD, равный единице, означает "плюс". Бит DSD, равный нулю, означает "минус".
3.7 Шестнадцатеричная нотация
Всем шестнадцатеричным значениям предшествует $. Старший значащий полубайт располагается слева, младший значащий полубайт - справа.
3.8 Диапазон
Constant_1.. Constant_2 обозначают диапазон от и включая Constant_1 до и включая Constant_2, с инкрементами 1.
3.9 Until
Until используется в рисунках, чтобы указать, что для позиции байта структуры используются до, но не включая данное значение.
В позиции байта В1 выражение "until В2" определяет байты В2-В1. В позиции байта В1 выражение, "until esc" определяет число байтов от В1 до и включая последний байт текущего сектора. Позиция байта определяется относительно начала текущего или предыдущего сектора.
4 Основные типы
4.1 BsMsbf
Последовательность битов, старший значащий бит сначала, должна интерпретироваться как строка битов.
4.2 Char
Закодированный однобайтовый символ. NUL (нулевой) символ ($00) не разрешен для Char.
4.3 SiMsbf
Последовательность битов должна интерпретироваться как целое число со знаком.
4.4 UiMsbf
Последовательность битов должна интерпретироваться как целое число без знака.
4.5 Uintn
Закодированный двоичный файл n битов, численное значение без знака.
4.6 Uint8
Двоично закодированное 8-битовое численное значение без знака. Значение Uint8 должно записываться в однобайтовом поле.
4.7 Uint16
Двоично закодированное 16-битовое численное значение без знака. Значение Uint16, представленное шестнадцатеричным представлением $wxyz, должно записываться в двухбайтовом поле как $wx $yz (старший значащий байт сначала).
4.8 Uint32
Двоично закодированное 32-битовое численное значение без знака. Значение Uint32, представленное шестнадцатеричным представлением $stuvwxyz, должно записываться в четырехбайтовом поле как $st $uv $wx $yz (старший значащий байт сначала).
5 Полезные нагрузки для аудиообъекта
5.1 Конфигурация декодера (DSTSpecificConfig)
Таблица 1 - Синтаксис Audio_Frame ()
|
5.2 Полезная нагрузка потока битов
Таблица 2 - Синтаксис Audio_Frame ()
|
Таблица 3 - Синтаксис DSD
|
Таблица 4 - Синтаксис DST
|
Таблица 5 - Синтаксис сегментации
|
Таблица 6 - Синтаксис сегментов
|
Таблица 7 - Синтаксис Channel_Segmentation
|
Таблица 8 - Синтаксис отображения
|
Таблица 9 - Синтаксис отображений
|
Таблица 10 - Синтаксис Channel_Mapping
|
Таблица 11 - Синтаксис Half_Probability
|
Таблица 12 - Синтаксис Arithmetic_Coded_Data
|
Таблица 13 - Синтаксис Filter_Coef_Sets
|
Таблица 14 - Синтаксис Probability_Tables
|
6 Семантика
6.1 Аудиопотоки
Аудиопоток содержит аудиосигнал DSD (простой DSD или DST-кодированный DSD). Аудиопоток является конкатенацией всех аудиофреймов в потоке байтов.
6.1.1 Данные потока битов дискретизированного DSD
Для каждого звукового канала восемь последовательных битов выборки группируются в один аудиобайт. Старший значащий бит аудиобайта является первым битом выборки этого байта.
6.1.2 Структура аудиопотока
У кодированных аудиофреймов DST существует переменная длина. Эталонная модель декодера DST определяется в разделе 7.
6.1.3 Audio_Frame
Audio_Frame (аудиофрейм) содержит кодированную DST или просто DSD - аудиоинформацию для одного фрейма. Максимальный размер Audio_Frame равен размеру кодированного просто DSD Audio_Frame плюс один байт. Синтаксис Audio_Frame определяется в таблице 1.
N_Channels является числом используемых звуковых каналов.
6.2 DSD содержит аудиоданные для одной Audio_Frame простого DSD. Синтаксис DSD определяется в полезной нагрузке потока битов
Channel_Nr является номером звукового канала.
Frame_Length является длиной аудиофрейма в байтах на звуковой канал. Frame_Length может быть вычислено исходя из частоты дискретизации по формуле
Частота дискретизации может быть: 64*44100 Гц, 128*44100 Гц или 256*44100 Гц. Соотношение между Frame_Length и частотой дискретизации дается в таблице 15.
Таблица 15 - Соотношение Frame_Length и частоты дискретизации
|
|
Частота дискретизации, Гц | Frame_Length, байт |
64*44100 | 4704 |
128*44100 | 9408 |
256*44100 | 18816 |
DSDDST_Coded сигнализирует, кодирован ли поток битов DSD или DST. Если DSDDST_Coded = % 0 - это DSD-кодированный поток, а если DSDDST_Coded = % 1 - DST-кодированный.
6.2.1. DSD_Byte
DSD_Byte [Channel_Nr] [Byte_Nr] содержит сигнал DSD, как определено в 6.1.1.
6.2.1.1 DST
DST содержит аудиоданные для кодированного Audio_Frame одного DST. Синтаксис DST определяется в таблице 4.
6.2.1.1.1 Processing_Mode
Если бит Processing_Mode устанавливается в единицу, Audio_Frame содержит DST_X_Bit и сигнал DSD в форме кодирования без потерь. Если бит Processing_Mode обнуляется, Audio_Frame содержит DST_X_Bit и сигнал DSD без кодирования без потерь.
6.2.1.1.2 DST_X_Bit
Если Frame_Format DST_Coded, то каждый Audio_Frame содержит один бит DST_X_Bit. При кодировании DST_X_Bit должен быть обнулен. Декодер должен проигнорировать контент DST_X_Bit.
6.2.1.1.3 Зарезервировано
Это значение должно быть установлено в ноль.
6.2.1.1.4 DSD
См. 6.1.1.
6.2.1.1.5 Сегментация
Для каждого звукового канала аудиофрейм делится на один или более сегментов для фильтров и один или более сегментов для Ptables. Каждый сегмент может использовать различные фильтры прогноза/Ptable. Синтаксис сегментации определяется в таблице 5.
Filter_Segmentation
Для каждого звукового канала аудиофрейм делится на один или более сегментов для фильтров прогноза. Каждый сегмент может использовать различные фильтры прогноза. Переменные Nr_Of_Segments[ ] и Segment_Length[ ] [ ] из Segment_Alloc, используемые для Filter_Segmentation, упоминаются как Filters.Nr_Of_Segments[Channel_Nr] и Filters.Segment_Length[Channel_Nr][1..Filters.Nr_Of_Segments[Channel_Nr]], где Channel_Nr = 1.. N_Channels.
Ptable_Segmentation
Для каждого звукового канала аудиофрейм делится на один или более сегментов для Ptables. Каждый сегмент может использовать различные Ptable. Переменные Nr_Of_Segments[ ] и Segment_Length[ ] [ ] из Segment_Alloc, используемые для Ptable_Segmentation, упоминаются как Ptables.Nr_Of_Segments[Channel_Nr] и Ptables.Segment_Length[Channel_Nr][1..Ptables.Nr_Of_Segments[Channel_Nr]], где Channel_Nr = 1.. N_Channels.
Filter_And_Ptable_Segmentation
Для каждого звукового канала аудиофрейм делится на один или более сегментов. Каждый сегмент может использовать различные комбинации Prediction Filter и Ptable. Для каждого звукового канала должны быть истиной следующие уравнения:
Filters.Nr_Of_Segments[Channel_Nr] = Ptables. Nr_Of_Segments[Channel_Nr] = Nr_Of_ Segments[Channel_Nr]
Filters.Segment_Length [Channel_Nr] [ ] = Ptables. Segment_Length [Channel_Nr] [ ] = Segment_Length [Channel_Nr] [ ],
где Channel_Nr = 1.. N_Channels.
6.2.1.1.5.1 Same_Segmentation
Если Same_Segmentation равно единице, Ptables и фильтры прогноза используют одну и ту же сегментацию. Если Same_Segmentation является нулем, разделение для аудиофрейма для фильтров прогноза независимо от разделения для Ptables.
6.2.1.1.5.2 Segment_Alloc
Segment_Alloc определяет сегментацию для фильтров прогноза и/или Ptables. Синтаксис Segment_Alloc определяется в таблице 6.
Для каждого звукового канала переменные Nr_Of_Segments и Segment_Length [1.. Nr_Of_Segments] из Channel_Segmentation упоминаются как Nr_Of_Segments [Channel_Nr] или Segment_Length [Channel_Nr] [1.. Nr_Of_Segments [Channel_Nr]].
Resolution_Read указывает, было ли считано разрешение из Channel_Segmentation. Resolution_Read устанавливается в истину в Channel_Segmentation первого звукового канала больше чем с одним сегментом. Если фильтры прогноза и Ptables используют независимую сегментацию, они также используют независимое Resolution_Read. Channel_Nr является локальной индексной переменной. N_Channels является числом используемых звуковых каналов.
6.2.1.1.5.2.1 Same_Segm_For_AII_Channels
Если Same_Segm_For_AII_Channels равно единице, сохраняется только сегментация для первого звукового канала и Channel_Segmentation ()[Channel_Nr] = Channel_Segmentation () для всех звуковых каналов. Если Same_Segm_For_AII_Channels является нулем, аудиофрейм делится на сегменты, независимые для каждого звукового канала.
6.2.1.1.5.2.2 Channel_Segmentation
Channel_Segmentation определяет сегментацию фильтров прогноза и/или Ptables. Синтаксис Channel_Segmentation определяется в таблице 7.
В синтаксисе Channel_Segmentation используются переменные Nr_Of_Segments, Start[1.. Nr_Of_Segments], Segment_Length [1.. Nr_Of_Segments].
Nr_Of_Segments является числом сегментов для текущего звукового канала. Максимальное количество сегментов является MAXNRSEGS. MAXNRSEGS должно быть 4 для Filter_Segmentation, 8 для Ptable_Segmentation и 4 для Filter_And_Ptable_Segmentation.
Resolution_Read указывает, была ли считана переменная Resolution в этом или предыдущем Channel_Segmentation. Resolution_Read устанавливается в истину в Channel_Segmentation первого звукового канала с больше чем одним сегментом. Если Prediction Filters и Ptables используют независимую сегментацию, они также используют и независимое Resolution_Read.
Segment_Length [Seg_Nr] содержит длину сегмента в байтах,
где:
1 <= Seg_Nr<= Nr_Of_Segments.
Start[Seg_Nr] является стартовой позицией в байтах Segment[Seg_Nr].
6.2.1.1.5.2.2.1 End_Of_Channel_Segm
Если End_Of_Channel_Segm является нулем, будет следовать одно или более значений для Scaled_Length. Если End_Of_Channel_Segm равно единице, структура Channel_Segmentation заканчивается.
6.2.1.1.5.2.2.2 Resolution
Каждое значение Scaled_Length умножается на Resolution (разрешение), чтобы получить длину сегмента в байтах. Разрешение сохраняется только однажды, в начале первого звукового канала с больше чем одним сегментом. Если у всех звуковых каналов имеется только один сегмент, Resolution не кодируется.
Разрешение должно быть в диапазоне от 1 до Frame_Length - MINSEGLEN. MINSEGLEN должно составлять 128 байтов для Filter_Segmentation, 4 байта для Ptable_Segmentation и 128 байтов для Filter_And_Ptable_Segmentation.
6.2.1.1.5.2.2.3 Scaled_Length
Для каждого сегмента, кроме последнего, значение Scaled_Length кодируется. Длина сегмента в байтах вычисляется по следующей формуле:
Segment_Length [Seg_Nr] = Resolution * Scaled_Length [Seg_Nr],
где 1 <= S_Nr<Nr_Of_Segments.
Минимальная длина сегмента каждого Segment является MINSEGLEN .
Для получения доступа к полной версии без ограничений вы можете выбрать подходящий тариф или активировать демо-доступ.