ГОСТ Р 53556.2—2012
Для режима нормальной задержки:
if (vuv1
==
0 && vuvO
==
0) {
for (i
=
0; i
<
WAVE_LEN/2;
pha2[i]=0.5’Pr(float)random()/(fioat)RND_MAX;
}
else {
for (i = 0: i < WAVE_LEN/2; i*+)
pha2(i)
=
pha1[i]
+
0.5’(w0Uw02)TFRM;
}
Для режима малой задержки:
if (vuv1
==
0 && vuvO
==
0) {
for (i = 0: i < WAVE_LEN/2: i++)
pha2(i]
=
O.S*PI’(float)random()/(float)RND_MAX:
}
else {
for (i
=
0: i
<
WAVE_LEN/2; i++) {
pha2[i] =phalfi] * 0.5’(w01+w02)*i’(FRM-LD_LEN)
+
*v01YLD_LEN:
}
На конечной границе интервала декодирования имеется спектр с
sond2
гармониками, чьи величины
равны
ат_
/?[/) (1
й
/ <
send2),
а значения фазы равны
pha2
[/] (1
й i < scnd2).
Добавление нулей к этим
массивам приводит к новым массивам с компонентами
WAVE_LENf2
(= 64) в пределах от 0 до
п.
Если
sertd2
больше чем 63. используются первые 64 значения
ofат_
Л[/] и
pha2[i],
128 точек
IFFT
применены к
этим массивам значений величин и фазы с ограничением, которое дает в результате вещественные числа.
Теперь есть форма волны передискретизации за период одного шага.
wavo2
[/) (0
<.i< WAVE_LEN).
WAVE_LEN
(= 128)отсчеты используются, чтобы выразить период одного шага формы волны. Так как
фактическое значение задержки шага равно
pch2,
скорость передискретизации
ovsr2
равна
ovsr2
=
WAVE_LEN/pch2.
Аналогично скорость передискретизации
ovsr\
для формы волны за период одного шага на началь
ной границе интервала декодирования. wave1[], равна
ovsrl
=
WAVE_LEN/pch1.
Проверка непрерывности шага
Когдаотношениефундаментальныхчастот. |(iv02 - vv01)/ iv02|. меньше чем
WDEVI
(=
0.1).
то переход
шага непрерывен. В таком случае фундаментальные частоты и величины гармониклинейно интерполиру
ются между началом иокончанием интервала декодирования. Иначе, это расцененивается как прерывис
тый переход шага, а фундаментальные частоты и величины гармоник не интерполированы линейно. В
этом случаедобавляются независимо синтезируемые периодические формы волны, используя
соответствую щие высовые функции.
Циклическое расширение и операция передискретизации (непрерывный переход шага)
Формы волны за период одного шага.
wave1[]
и
wave2[],
циклически расширены соответственно,
чтобы иметь достаточную длину вдомене с чрезвычайной передискретизацией.
Длина сверхдискретизироеанной формы волны, необходимая чтобы восстановить форму волны дли
ны
FRM(=
160) при оригинальной частотедискретизации (8 кГц), составляет не менее /р12.
Для режима нормальной задержки:
/р/2 =
ceii(FRM
’0.5
’(overl+ovsr2)):
Ipl2r
=
floor(FRM’0.5’(ovsr1 *ovsr2
)+
0.5);
st = WAVE_LEN -
(Ip12r%WAVE_LEN);
for (i
=
0; i < 1р12; i++)
{
out1[i]
=
wave1[i%WAVE_LEN};
out2[i] =
wa vo2[(st*i)%WAVE_LEN];
}
35