ГОСТ Р 53556.4—2013
В выделенных уровнях большого шага устраняется чередование, и они связываются, чтобы
полностью отобразить все мелкоструктурныеданные BSAC. Затемдекодируются связанные потоки битов,
используя синтаксис (bsac_raw_data_block) для мелкоструктурной масштабируемости, чтобы создать вос
становленный сигнал.
Чтобы описать процесс реконструкции, переданной по ES полезной нагрузки, необходимы некоторые
переменные справки и массивы. Эти переменные справки зависят от уровней. numOfLayor. numOfSubFrame,
layer length и frameJength и должны быть созданы для того, чтобы отобразить bsac_raw_data_block () каж
дого подфрейма из полезных нагрузок.
Псевдокод, показанный ниже, описывает:
- как вычислить Layertength [i] [к], длину уровня большого шага, который располагается в точно
отрегулированных аудиоданных bsac_raw_data_block 0 /-го подфрейма:
- как подсчитать LayerOffset[i][к], который указывает стартовую позицию уровня большого шага /-го
фрейма, который располагается в полезной нагрузке к-го ES (bsac_payload());
- как вычислить LayorStadByte [i][k]. который указывает стартовую позицию уровня большого шага,
который располагается в точно отрегулированных аудиоданных bsac_raw_dala_block ()/-го подфрейма
for (к = 0; к < numOfLayer; к *■*■) {
LayerStartByte[0][k] = 0;
for (i = 0; / < numOfSubFrame: i++) {
if (k == (numOfLayer-У)) {
LayerEndBytep)[k) = fnamejengthp):
} else {
LayerEndByte[i][k) = LayerStartByte[iJ[k] ♦ layerjength[kj:
if (frame_lengthp] < LayerEndBytep][k])
LayerEndByte [i][k] = framejengthji):
}
LayorStadBytep + 1][k) = LayerEndByte[i][k):
LayerLength[i][k) = LayerEndByte[i)[k) - LayorStartByto[i][k];
}
}
for (k = 0; к < numOfLayer к *+) {
LayerOffset{0][k] = 0;
for (i = 0; / < numOfSubFrame; i++) {
LayerOffsetfi + 1](k) = LayorOffset[i][k] * LayerLength[i](k];
}
}
где frame_iength [ij— длина потока битов /-го фрейма, который получается из элемента синтаксиса
frameJength и layerJength {iJ— средняя длина уровней большого шага в полезной нагрузке ES /-го уровня
и получается из Audio DecoderSpecificInfo.
5.2.6 2 Декодирование bsac_raw_data_block ()
5.2.6.2.1 Определения
5.2.6.2.1.1 Элементыданных
bsac_raw_data_block ()
bsac_base_element ()
framejength
bsac_header()
header_length
блок необработанных данных, который содержит кодированные аудиоданные,
соответствующую информацию и другие данные. bsac_raw_data_block () вос
новном состоит из bsac_base_element{) и нескольких bsacjayer_element (). Там
существует модуль, который определяет, есть ли у потока битов BSAC расши
ренная часть.
синтаксический элемент потока битов базового уровня, содержащего кодиро-
ванные аудиоданные, соответствующая информация и другиеданные,
длина фрейма включая заголовки в байтах,
содержит общую информацию, используемую для BSAC.
длина заголовков, включая frameJength. bsac_header() и general_header()в бай
тах. Фактическая длина равна (header_length+7)байтов. Однако, если header_
length равно 0. это значит, что фактическая длина меньше или равна 7 байтам.
Если hoaderjongth равно 15. это значит, что фактическая длина больше или рав на
(15+7) байтов и должна быть вычислена посредством декодирования заго
ловков.
73