ГОСТ Р 53556.2—2012
ovsrc =
ovsr1‘(fioat)(FRM-LD_LEN-i)/(float)(FRM-LD_LEN)
♦
over2’(fk>at)i/(float)(FRM-LD_LEN):
ffi
♦=
ovsrc;
ffim = fioor(ffi);
ffip
=
ceil(ffi):
if (ffim
==
flip)
svfij
=
out3[(int)ffip+iflat1]:
else
sv[i]
=
(fli-flim),out3[(int)ffip*iflat1)
+
(ffip-ffi)*out3[(int)ffim+iflat 1};
}
Циклическое расширение и операция передискретизации (прерывистый переход шага)
Формы волны за один период шага,
v/av
о1[] и ivave2() циклически расширены, чтобы иметьдостаточ
нуюдлину вдомене передискретизации. И на начальной и на конечной границах интервала декодирования
получены циклически расширенные формы волны,
out
1[) и
ои(2[].
1р1- ceii(FRM’ovsrl);
Ip2= ceil(FRM’ovsr2);
Ip2r
=
f!oor(FRM’ovsr2+0.5):
st
=
WAVE_LEN
-
(Ip2r%WAVE_LEN)
Для режима нормальной задержки:
for (i
=
0: i
<
Ip1: i++)
out1[iJ = wave1[i%WAVE_LEN]:
for (i
=
0: i < Ip2: i++)
out2[i]
=
wavc2((st+i)%WAVE_LEN)
Для режима малой задержки:
iflatl
=
floor(ovsr1’LD_LEN+Q,5):
iflat2
=
floor(ovsr2’LD_LEN+0.5):
for (I
=
0: i
<
IpUiflatUW : i++)
outlfi]
=
wave1[i%WAVE_LEN]:
for (i
=
0; i < Ip2+iflat2+10: /++)
out2[iJ
=
wave2[(st*i)%WAVE_LEN].
где
Ip
1и /р2— длина передискретизированных форм волны, необходимая чтобы восстановить форму
волны длиной
FRM
(=160) при первоначальной частоте дискретизации (8 кГц).
Эти две формы волны. оиМ (] и
ои(2
(]. передискретиэируются независимо, используя тотже самый
метод линейной интерполяции как вслучае «непрерывного перехода шага».
Для режима нормальной задержки:
sv1[0]
=
out1(0):
ffi
=
0:
for (i
=
1. i
<
FRM
. C++)
{
ffi
+=
ovsrl;
ffim
=
floor(ffi);
ffip
=
ceil(ffi);
if (ffim
==
fftp)
sv1[i]
=
out1[(int)ffip}:
else
sv1[ij = (ffi-ffim)"out1[(int)ffip]
♦
(ffip-ffi)’out1((int)ffim];
}
sv2[0]
=
out2[0]:
ffi - 0;
for (i
=
1; i < FRM:
/+♦)
{
ffi
+=
ovsr2:
ffim - floor(ffi);
ffip = ceil(ffi):
if (ffim
==
ffip)
sv2[i]
=
out2[(int)ffip):
37