ГОСТ Р 53556.3—2012
}
for (i
=
0: i
<
lpc_order- 1:i**)
(
if(lsp_current[i*1}-lsp_current[i)
<
min_gap)
{
lsp_currentfi*1] =lsp_current[i]+mir>_gap.
}
)
for (i
=
0: i
<
lpc_order: i++)
{
if(lsp_current[i]> 1-win gap)
{
lsp_current[i]
=
1-min_gap:
}
}
for (i
=
!pc_order -1 :1> 0: i
-
•)
{
if(lsp_current[i]-Jsp_current[i-1]
<
min_gap)
{
Isp currentp-1]
=
lsp_current[i]-min_gap:
}
}
где
lpc_order
= 20 и
min_gap =
1.0/256.0
5.6.2.5 Интерполяция
LSPs
Декодированные
LSPslsp_current[]
интерполированы линейно в каждом подфрейме, используя
LSPs
предыдущего фрейма
lsp_previous[].
for(п
=
О:п< nrof_subframes; п++)
{
ratio_sub=(n+1)/nrof_subframes
for (i
=
0: i
<
lpc_order: i++)
{
lsp_subframe[n][i]
=
((1-
ratio_sub) 4sp_previous[i)+ratio sub4sp_current[i))).
}
}
5.62.6Преобразование
LSP
в
LPC
Интерполированные
LSPs
преобразуются в
LPCs
с использованием вспомогательной функции
Convert2ipc().
for(n -0 :n < nrof_subframes: n++)
{
Convort2lpc (lpc_ordor, lsp_subframe[n].
int_Qlpc_coefficients * n‘lpc_order)):
}
5.6.2.7 Сохранение коэффициентов
После вычисления коэффициентов
LPC
текущие
LSPs
должны быть сохранены в памяти, так как они
используются для интерполяции в следующем фрейме.
for (i
=
0: i
<
lpc_order: i++)
{
Isp_pravious[i]
=
lsp_currentfi]:
}
Сохраненные
LSPsIsp_previous()
должны быть инициализированы как описано ниже, когда инициали
зируется весь декодер.
for (i
=
0; \ < lpc_order; i++)
{
lsp_provious[i] = (i+1)
/
(Ipc order
+
1):
}
41