ГОСТ Р 53556.4—2013
производительности)должен быть в состоянии проанализировать элемент расширения DRC. Возможность
декодировать и применитьданные DRC является дополнительной для декодера High EfficiencyAAC Profile.
Если это будет реализовано, то обрисованная здесь реализация должна использоваться.
Следующий псевдо код и уравнения показывают, как факторы DRC сохраняются для использования
в домене SBR QMF. Границы полос DRC квантуются, чтобы соответствовать разрешающей способности по
частоте блока фильтров SBR QMF. Чтобы гарантировать надлежащую обратную совместимость, нужно
рассмотреть задержку между синтезом МОСТи синтезом QMF. Параметры DRC. применявшиеся к подвы
боркам SBR QMF. должны быть задержаны на тоже самое количество времени как сигнал между синтезом
МОСТи синтезом QMF.
Факторы DRC сохранены в матрице factorQMF[lJ[kJ. где Т указывает какая подвыборка QMFсоответ
ствует значениям. Так как границы полосы DRC относятся к 1024 линиям МОСТ(или 960 линий МОСТдля с
960-кадрированием), границы отображаются всоответствующие границы в 32 поддиапазонах более низ кой
части SBR QMF.
Для коротких последовательностей окон ААС не используется никакая интерполяция факторов DRC.
Для других последовательностей окон ААС факторы DRC интерполируются в течение долгого времени,
чтобы избежать шума. Для DRC. используемого с декодером High Efficiency ААС. возможно сообщить
временную границу между факторами DRC. Следовательно существует возможность управлять переход
ным поведением DRC без необходимости полагаться на короткие последовательности окон ААС. Это вы
полняется с элементом данных drcjnterpolatton^scheme.
Полосы, покрытые данными DRC, охватывают только частотный диапазон ААС MDCT, то есть, до
половины частоты дискретизацииААС. Данные DRCдля частотногодиапазона, которые выше этой полови
ны частоты дискретизации выходного сигнала, те же. что и для самой высокой переданной полосы DRC.
fldefine FRAME_SIZE 1024 Г Change to 960 for960-framing.V
fldefine NUM_QMF_SUBSAMPLES (FRAME_SIZEA2)
fldefine NUM_QMF SUBSAMPLESJ2 (FRAME_SIZE64)
flif1/* 1024 FRAMING V
static float offset(8) = {0. 4. 8. 12.16. 20. 24. 28;;
flelse Г 960 FRAMING V
static float offset{6] = /0. 4, 8,11,15,19. 23. 26;;
flendif
for(i= 0 ; i < 64; i**){
for (j = 0;j < NUM_QMF_SUBSAMPLES;j++){
factorOMF(j][i] = factorQMF[NUM_QMF SUBSAMPLES ♦ j][ij;
}
previousFactors[iJ= factorQMF(2’NUM_QMF_SUBSAMPLESA]fi];)
bottom = 0;
drc_num_bands = 1;
if (drc_bands_present)
drc_num_bands +=drc_band_incr;
if (!drc_bands_present)
drc_band_topt0) = FRAME_SIZE/4 -1;
for (bd = 0; bd < drc_num_bands; bd*+) {
top = 4 * (drc_band_top[bd] + Л);
/* Decode DRC gain factor V
if (dyn_mg_sgn[bd))
factor = 2f’(-ctr11’dyn_rng_ctl[bdp24); /* compress V
else
factor = 2*(ctrf2‘dyn_mg_ctl(bd)/24); /* boost V
/* Ifprogram reference normalization is done in the digital domain, modify
*factorto perform normalization.
* prog_ref_level can alternatively be passed to the system formodification
* of the levelin tho analog domain. Analog levelmodification avoids problems
* with reduced DAC SNR (ifsignal is attenuated) or clipping (if signalis boosted) 7
factor *= 0.5/’((target_level-prog_ref_level)/24);
/* Truncate bottom and top to be a multiple of NUM_QMF_SUBSAMPLES.V
93