ГОСТ Р 53556.2—2012
Для режима малой задержки:
Ipl2 =ceH((FRM-LD_LEN)*0,5*(over1+ovsr2)+LD_LEN‘ovsr1);
Ipl2r
=
floor((FRM-LD_LEN)
*
0.5’(ovsr1+ovsr2)+LD_LEN‘ovsr1+0.5);
st = WAVE_LEN - (Ip12r%WAVE_LEN)
iflatl = floor(ovsr1’LD_LEN+0.5)
iflat2
=
fk>or(ovsr2’LD_LEN+0.5)
for
17=
0: i
<
Ip12+iflat2+10. i*+) {
out1[i] = wave1[i%WAVE_LEN):
out2[i]
=
wave2[(st+i)%WAVE_LEN],
}
У этих двух форм волны, oufin и
out
2[], есть тот же самый «псевдо» период шага (
=WAVE_LEN
[samp/e]). и они выравниваются. Так простое добавление этих двух форм волны, используя треугольные
окна производит форму волны оо*3[].
Для режима нормальной задержки:
for (i
=
0: i
<
Ip12, i++)
out3[iJ=out1[i]*( float) (Ip12-i)/(ftoat)lp12 +
out2[i)‘(float)i/(float)lp12;
Для режима малой задержки:
for (i
=
0; i < iflatl: i++)
out3[i) = out1[i):
for (i = iflatl: i < Ip12; i++)
out3[i]
=
out 1[i)‘(float) (Ip12-i)/(float)(Ip12-iflat1)
+out2{i]’(float)(i-flat1)/(ftoat)(lp12-iflat1):
for (i
=
Ip12: i
<
Ip12+ifiat2: i++)
out3[i] = out2[i).
Наконец. ouf3(] должен быть передискретизирован так. чтобы получающаяся форма волны могла
быть выражена в оригинальной частоте дискретизации {8 кГц). Эта операция возвращает форму волны из
домена «псевдо» шага в домен фактического шага. Операция передискретизации:
sv
И =
out
3 (Г(/)] (0< /
<FRM).
где
H i).
Ц оге П*
ovsr2
Функция
f(i)
отображает время индекса / из оригинальной частоты дискретизации {8 кГц) к индексу
времени в
ovor-samplodrato
при условии, что фундаментальныечастоты. иЮ1 и и02. линейно интерполиро
ваны. С тех пор
f(i)
doesnot возвращают целочисленное значение. su[/] получен, линейно интерполируя
out3
[/(/) ] и
out3 [f(i)
].
Для нормального режима задержки:
sv(01 = out3[0);
ffi
=
0;
for (i = t i < FRM; i++) {
ovsrc - ovsrl’(fk>at)(FRM-i)/(float)FRM +
over2’(fk>at)i/(ffoat)FRM.
ffi += ovsrc;
ffim
=
floor(ffi);
ffip = ceil(ffi);
if (ffim
==
ffip)
svfi]
=
out3[(int)ffip);
else
sv[i]
=
(ffi-ffimyout3[(int)ffip] + (ffip-
ffi)*out3[(int)fHm]:
}
Для режима малой задержки:
sv[0] = out3[iflat 1];
ffi
=
0;
for (i = 1. i < FRM: i++) {
36