ГОСТ Р 53556.7—2013
r_dec = tan (pi/2’тах (0. envRdec-0,5) / ((\ «decbits)-1))Л).2
Эти параметры огибающей действительны для гармонических линий, а также для отдельных ли
ний. Таким образом, параметры огибающей envTmax, envRatk. envRdec должны быть деквантованы,
даже если numLine == 0.
Для каждой линии к предыдущего фрейма
к = 0 .. prevNumLine-1
флаг продолжения предыдущей линии читается из HILNbasicFrame ():
prevLineContFlag [к]
Если prevLinoContFlag [к] == 1. тогда линия к предыдущего фрейма продолжается в текущем
фрейме. Если prevLineContFlag [к] == 0, тогда линия к предыдущего фрейма не продолжается.
В текущем фрейме сначала параметры всех продолжающихся линий кодируются, сопровождае
мые параметрами новых линий. Поэтому флаг продолжения линии и предшественник линии определя
ются прежде, чем декодировать параметры линии:
/ = 0;
for (к = 0; к <prevNumUne: к *+)
if (prevLineContFlag [kj) {
linePred [i] = к:
UneContFlag [i +*] = 1;
}
while (i <numLine)
UneContFlag [i ++/ = 0;
Параметры новых линий кодируются с увеличивающимся индексом частоты, используя схему
дифференциального кодирования. Поэтому единожды для каждого фрейма требуется следующая ини
циализация:
lastNLFreq =0.
Для каждой линии i текущего фрейма
i = 0. numLine-1
параметры линии теперь декодируются из INDIbasicPara ().
Если envFlag = = 1. тогда флаг огибающей линии читается из INDIbasicPara Q:
ImeEnvFlag р]
Если UneContFlag [i)~ 1.тогда параметры продолжающейсялиниидекодируютсяизINDIbasicPara()
на базе амплитуды и индекса частоты ее предшественника в предыдущем фрейме:
ILFreqlndex [i] = prevILFreqlndex pinePredp]] * DILFreq pj:
ILAmplIndex [i] = prevILAmplIndex pinePred p]] + DILAmpI p];
Если UneContFlag p] == 0, тогда параметры новой линии декодируются из INDIbasicPara ():
if (питLine-1-i <7)
ILFreqlnc р] = SDCdocode (maxFindex-lastNLFreq. sdcILFTable [numLine-1-i]);
else
ILFreqlnc p] = SDCdecode (maxFindex-lastNLFreq. sdcILFTable [7]);
ILFreqlndex [i] = lastNLFreq * ILFreqlnc p]:
lastNLFreq = ILFreqlndex [я]:
if (HILNquantMode) {
ILAmpIRelp) = SDCdecode (50. sdcILATable);
ILAmplIndex p] = maxAmplIndex * ILAmpIRel p]:
)
else {
ILAmpIRelp) = SDCdecode (25. sdcILATable);
ILAmplIndex p] = maxAmplIndex * 2‘ILAmpIRelp):
}
Индексы параметров линии сохраняются для декодирования параметров линии следующего
фрейма:
34