ГОСТ Р 53556.4—2013
/* Decoder transmitted coefficients for one TNS fitter V
tns_docode_coef( order. coef_res_bits. coef_compress. coef[J. a[])
{
Г Some internal tables 7
sgn_mask[J = { 0x2. 0x4. 0x8}:
neg_mask[] = { -0x3. ~0x7. -Oxf}:
/* size used for transmission V
coef_res2 = coef_res_bits - coef_compress;
s_mask = sgn_mask[ coef_res2 - 2 ); /* mask for sign bit V
n_mask = neg_mask[coef_res2 -2 ]; Г mask for padding neg. values V
/* Conversion to signed integer V
for (i = 0; i < order; i++)
tmp[i] = (coof[i] & s_mask) ? (coef[i) | n_mask): coefp]:
/* Inverse quantization V
Iqfac = CfT « (coef_res_bits-1)) - 0.5) / (p/2.0):
iqfac_m = (C\ « (coef_res_bits-1)) + 0.5) / (p/2.0);
for (i = 0; I < order; i+*) {
tmp2[i] = sin( tmpfi] / ((tmp[i] >= 0J ? iqfac : iqfac_m) );
}
}
/* Conversion to LPC coefficients У
:
1
Г loop only while i<m V
Ф ) =
1
for (m =
1
; m <= order. m++) {
for (i = ; / < m: i++) {
bfi] = a[i) + tmp2[m-‘\] * a[m-i);
Г loop only while i<m V
}
for (i - 1; / < m: i++) (
a[i] = bfi]:
}
a[m) = tmp2[mA];
Г
changed V
tns_ar_filter( spectrumfj. size. inc. lpc[J. order)
{
- Simple all-pole filter oforder "order*defined by
y(n) = x(n) • 1рс[1)У(п-1) -... ■lpc[order)*y(n-order)
- The state variables of the fitter are initialized to zero every timo
- The output data is written overthe input data (‘in-place operation")
- An input vectorof "size" samples is processed and the index increment to the next data sample is given
by "inc"
}■
Этот псевдокод использует интерпретацию .С’-стиля массивов и векторов, то есть если cooffw][М ](i)
описывает коэффициенты для всех окон и фильтров. coef[w] [fitt] является указателем на коэффициенты
одного определенного окна и фильтра. Коэффициент идентификатора используется в качествеформально
го параметра в функции tns_decode_coef().
6.9.4М а кс и м а л ь н ы й п о р я д о к
TNS
и ш и р и н а п о л о с ы
Значениедля константы МАХ_ TNS_ODERзависит отаудио объектного типа и работы с окнами, табли
ца 156 определяет МАХ_TNS_ORDERв зависимости от этих параметров.
Т а б л и ц а 156 — Определение
TNS_MAX_ORDER
в зависимости от
Л О Т
и работы с окнами
Работа сокнами
Короткие окна
Длинные окна
А О Т 1 (AACM ain)
7
20
Другое
ЛО Т
используя
TNS
7
12
152