ГОСТ Р 54712―2011
4.1.4.2 Декодирование звука. Уровень III
Декодирование уровня III при использовании низких частот дискретизации выполняется аналогич-
но декодированию Уровня III в ГОСТ Р 54711 при следующих различиях.
1. При низких частотах дискретизации фрейм Уровня III содержит только одну гранулу, в отличие
от ГОСТ Р 54711, где фрейм Уровня III состоит из двух гранул. Переменная ’gr
’
больше не существует.
Число отсчетов на фрейм — 576. В связи с этим константа, которая используется для вычисления дли-
ны фрейма, и алгоритм дополнения нулями должны быть изменены для Уровня III в соответствии со
следующей таблицей:
Значения констант для Уровня III
Константа
ГОСТ Р 54711Настоящий стандарт
slots_per_frame
frame_size
14472
1152 576
11
iir
iil
lrsb
sblr
sbl0sbr
lr0sb
2. Если выбран режим intensity stereo, то максимальное значение интенсивностной позиции укажет
на недопустимую позицию. Полосы масштабных коэффициентов в ГОСТ Р 54711 с недопустимой интен-
сивностной позицией должны декодироваться согласно уравнениям MS, в соответствии с ГОСТ Р 54711,
5.5.5.2, если MS stereo включен, или оба канала независимы, если MS stereo не включен.
3. Как и в ГОСТ Р 54711, последняя полоса масштабных коэффициентов, для которой не применя-
ется интенсивностное кодирование, равна последней полосе масштабных коэффициентов правого ка-
нала, не являющейся полностью нулевой, и для которой соответствующий масштабный коэффициент
не указывает на недопустимую интенсивностную позицию. Как в ГОСТ Р 54711, декодирование нижней
границы при intensity stereo выполняется индивидуально для каждого окна в случае коротких блоков
(block_type == ’10’). Это означает, что, как и в ГОСТ Р 54711, 5.3.4, вычисление границы интенсивно-
сти применяется к значениям каждого короткого окна и допускается индивидуальное декодирование
intensity stereo для короткого окна.
4. Шаги 4 и 5 описанного процесса декодирования для декодирования intensity stereo изменены:
шаг 4R := L * k ;
шаг 5L := L * k.
Значения k и k вычисляются по переданному масштабному коэффициенту / is_pos следующим
образом:
if (is_pos == 0) k = 1,0 k = 1,0
else i
f
(is_pos % 2 == 1) k = i
(is_pos +1)/2
k = 1,0
elsek = 1,0k = i
is_pos /2
Коэффициент декодирования intensity stereo i0 определяется по intensity_scale (1/√2 for intensity_
scale == 1, else 1/√√2). Значение intensity_scale определяется из значения scalefac_compress правого
канала:
intensity_scale = scalefac_compress % 2
5. Масштабные коэффициенты
Масштабные коэффициенты декодируются в соответствии с slen1, slen2, slen3 и slen4 и
nr_of_sfb1, nr_of_sfb2, nr_of_sfb3, nr_of_sfb4, которые определяются из значений scalefac_compress.
Количество битов, используемых для кодирования масштабных коэффициентов, называется
part2_length и вычисляется следующим образом:
part2_length = nr_of_sfb1*slen1 + nr_of_sfb2*slen2 + nr_of_sfb3*slen3 + nr_of_sfb4*slen4
Масштабные коэффициенты передаются в четырех разделах. Количество масштабных коэффи-
циентов в каждом разделе (nr_of_sfb1, nr_of_sfb2, nr_of_sfb3 и nr_of_sfb4), длина масштабных коэффи-
циентов в каждом разделе (slen1, slen2, slen3 и slen4) и префлаг декодируются по scalefac_compress
согласно следующей процедуре:
if (!(((mode_extension == ’01’) || (mode_extension == ’11’)) && (ch==1))){
if (scalefac_compress < 400 ) {
slen1 = (scalefac_compress >> 4) / 5
slen2 = (scalefac_compress >> 4) % 5
slen3 = (scalefac_compress % 16) >>2
slen4 = scalefac_compress % 4
prefl
ag
=
0