ГОСТ Р 53556.3—2012
Т а б л и ц а 77 — Размерность вектора первой стадии
LSP
Индекс вектора разбиения
i
Размерность вектора:
Oim(0]j/]
0
5
1
5
Т а б л и ц а 78 — Размерность вектора второй стадии
LSP
Индекс вектора разбиения:
f
Размерность вектора:
0
5
1
5
В первой стадии вектор
LSP
первой стадии
lsp_first(]
декодируется путем просмотра таблицы
lsp_tbl[][][).
for(i = 0: i
<
dim[0][0):
/♦+)
{
lsp_first[i]
=
Isp tbl[0][lpcjndices[0)][i);
}
for(i - 0: i
<
dim[0][1};
/♦+)
{
lsp_first[dim[0)[0)+i] = lsp_tbl[1)[lpc_indices[1]][i]:
}
Во второй стадии естьдва типа процессовдекодирования, а именно, процессдекодирования
VQ
без
межфреймового предсказания и
VQ—
с межфреймовым предсказанием.
Ipc_indices[
4] указывает, какой
процессдолжен быть выбран (см. таблицу 79).
Т а б л и ц а 79 — Процесс декодирования для второй стадии
Индекс
LPC. Ipc_indices
[4]
Процесс декодирования
0
VO без межфреймового предсказания
1
VQ с межфреймовым предсказанием
Процесс декодирования
VQ
без межфреймового предсказания
Чтобы получить
LSPs
текущего фрейма
lsp_current[),
декодированные векторы во второй стадии до
бавляются к декодированному вектору
LSP
первой стадии
lsp_first[],
МСВ для
lpc_indices[]
представляет
знакдекодированного вектора, а остающиеся биты представляют индексдля таблицы
d_tbl[][][].
sign = lpc_indices(2] » 6:
idx
=
lpcjndices[2} & 0x3f:
if(sign==0)
{
for (i
=
0: i
<
dim[1J[0J; i*+)
{
lsp_curront[i] - lsp_firstfi] + d_tbl[0][idxj[i].
}
}
else
{
for (i
=
0: i < dim[1](0J: i*+)
{
lsp_current(i]
=
lsp_first[i]- d_tbl[0)[idx][i);
)
}
sign = lpc_indices[3) »
5;
idx =
lpc_indices[3) & 0x1 f:
if(sign==0)
{
for(i = 0: i
<
dim[1][1]; i++)
{
lsp_curront[dim(1][0]+i]
=
lsp_first(dim(1 ][0]+i]
+
d tbl[1][idx][i};
}
32