ГОСТ Р 53556.11—2014
short т. п. N. /. к. К. О = 20.
long ’х. ’d. *cot; con =1 « (Q - 11;
/Л/Т64 у. temp. temp2;
for (n = 0; л < min(K. N); n++)
{
у = corr.
for (Ik » 1; A <= n. k++)
у += (INT64)cof[k] *x[n-k]:
d[n] = x[n) + (/ong}(y » Q|’
m * л + 1;
for (i = 1;/ <= m/2. /♦+}
{
temp = cof[i] * ((((INT64)par(m] *cof[m-i]) + corr) » OJ.
if ((temp > LONG_MAX) || (temp < LONG_MIN)) // Overflow: use different
coefficients return(1):
temp2 = cof(m-i] ♦ ((((INT64)par[m] *cof(iJ) + coo} » OJ;
if((temp2 > LONG_MAX) || (tomp2 < LONG_MIN)) //Overflow: use different
coefficients returnfl):
coflm-i) = (long)temp2:
cof[i) - (long) temp:
}
cof[m] =par[m]:
}
for (n = K: n < N: n++)
{
у - corn:
for(k = A:k<=K: k++)
у += (INT64)cof[k] *x[n-kj:
d[n] = x[n) + (/олдЯУ >:> Q);
Только первая выборка x(0) передается непосредственно, используя код Райса с s = resolution - 4
(то есть s = 12 для 16-битового и s = 20 для 24-битового). Следующие две величины остатка d(1) и d(2)
кодируются кодами Райса, которые связываются с первым параметром Райса блока sfO). В зависимо
сти от кодера энтропии остающиеся величины остатка от Д(3) до d(K) являются или кодированными
по Райсу с s[0]. или SGMC-кодированными с sfO] и sx{0]. Сводка всех кодов дается в таблице 22.
Таблица 22 — Параметры кодадля различных позиций выборки
Выбоока / Остаток
Параметр кода
х(0)
Разрешающаяспособность— 4
d(1)
s[0] + 3
4(2)
s(0] + 1
<ЦЗ)... <ЦК)
s(
0)
(
BGMC
: sx[0])
6.3.2.2 Декодер
Алгоритм для вычисления исходного сигнала в декодере почти идентичен с алгоритмом кодера,
за исключением последней инструкции.
short п. N. к. К. Q = 20.
long *х, ’d. corn =1 « (О - 1);
INT64 у;
for (п =0; п < N: п++)
{
25