ГОСТ Р 53556.2—2012
sign = LSP3»4;
idx = LSP3&OxOf:
if (sign
==
0) {
for (i
=
0: i
<
dim[1)[1J: i+*) {
lsp_current[dim[1](0]+i]
=
lsp_first[dim[1][0]+i)
+
d_tbl[1][idx][i]:
}
}
else {
for (i = 0: i < dim[1][1J: i*+) {
lsp_current[dim[1)(0]+i]
=
lsp_first[dim[1)[0]+i] - d tbl[1][idx][i]:
}
}
Процессдекодирования
VQ
с межкадровым предсказанием
Чтобы получить
LSPs
текущего фрейма
lsp_ current[).
декодированные векторы второй стадиидобав
ляются к вектору
LSPlsp_predicl[].
которые предсказаны издекодированного
LSPs
предыдущего фрейма
lsp_ previous[]
и декодированного в первой стадии вектора
LSP lsp_first[}.
Как в процессе декодирования
VQ
без межкадрового предсказания,
МСВ
для
LSP2
и
LSP3
представляет знакдекодированного вектора, а
остающиеся биты представляют индексдля таблицы
pd_tbl[]
[]Q.
for (i
=
0: i
<
LPCORDER: i++) {
Isp_predictfi] =(1-ratiojtredict)’lsp_firstfi]
♦
ratio_predicnsp_previous[i];
}
sign
=
LSP2»6:
idx = LSP2&0x3f:
if (sign
==
0) {
for (i
=
0: i
<
dim[1][0J.
/++;
{
lsp_currentli] = lsp_predict[i]
+
pd_tbl[0][idx][ij:
}
}
else {
for (i = 0; i
<
dim[1][0J: i++) {
lsp_current[i] = Isp_predict[i] - pd tb1(0][idx][ij;
)
}
sign
=
LSP3»4;
idx = LSP3&0x0f:
if (sign
==
0) {
for (i
=
0: i < dim[1][1J; h+) {
lsp_current[dim[1][0]+i) = Isp_prodict[dim[1][0)+i]
+
pd_tbl[1][idx][i);
}
}
else {
for (i
=
0: i
<
dim(1][1J: h+) {
lsp_current[dim[1)[0]+i) = Isp_predict[dim[1][0]*i] - pd tbl[1][idx][i};
)
}
Стабилизация
LSPs
Декодированные
LSPslsp_current[]
стабилизированы,чтобы гарантировать стабильность фильтра син
теза
LPC.
который извлекается из декодированных
LSPs.
Декодированные
LSPs
упорядочены в порядке
возрастания, имея минимум расстояния междусоседними коэффициентами.
for (i
=
0; i < LPCORDER: i*+) {
if (lsp_current[i]
<
min_gap) Isp current[ij
=
min_gap:
}
for (i
=
0: i
<
LPCORDER-1:
/++>
{
if (lsp_current[i*1}-lsp_current[ij <min_gap)
lsp_currenl(i*1]=lsp_curront[i]*min_gap:}
23