48
Диапазон, обеспечиваемый информацией о динамическом диапазоне, указан в таблице 41.
Процесс управления динамическим диапазоном применяется к спектральным данным spec[i] одного фрейма непосредственно перед банком фильтров синтеза. В случае EIGHT_SHORT_SEQUENCE window_sequence индекс i интерпретируется как указатель на составной массив из 8*128 частотных линий, соответствующих 8 коротким преобразованиям.
Следующий псевдокод приводится в качестве примера, демонстрируя один метод использования одного набора информации управления динамическим диапазоном с целевым звуковым каналом. Константы ctrll и ctrl2 являются константами сжатия (обычно между 0 и 1, нуль соответствует отсутствию сжатия), которые могут дополнительно использоваться, чтобы масштабировать характеристики сжатия динамического диапазона для уровней, больших или меньших контрольного уровня программы соответственно. Константа target_level описывает уровень на выходе, требуемый пользователем, выраженный в том же масштабе как progreflevel. bottom = 0; drc_num_bands = 1; if (drc_bands_present) drc_num_bands + = drc_band_incr; else drc_band_top [0] = 1024/4 - 1; for (bd = 0;bd <drc_num_bands;bd ++) { top = 4 * (drc_band_top [bd] + 1);
/* Декодировать коэффициент усиления DRC */ if (dyn_rng_sgn [bd])
factor = 2 Л (-ctrl1*dyn_rng_ctl[bd]/24);/* компрессирование */ else
factor = 2 л (ctrl2*dyn_rng_ctl [bd]/24);/* усиление */
/* Если нормализация выполняется для цифрового сигнала
* коэффициент должен быть изменен. prog_ref_level может быть передан системе для изменения уровня аналогового сигнала. Аналоговое изменение уровня лишено проблем с уменьшенным отношением СИГНАЛ-ШУМ ЦАП или клиппированием */
factor *= 0.5 л ((target_level-prog_ref_level)/24);
/* Применить коэффициент усиления */ for (i = bottom; i < top; i++) spec [i]*= factor; bottom = top.
Следует учесть соотношение между управлением динамическим диапазоном и спаренными каналами.
Зависимо переключаемые спаренные каналы всегда объединяются с их целевыми каналами как спектральные коэффициенты до DRC обработки и синтезирующей фильтрации этих каналов. Поэтому сигнал зависимо переключаемых спаренных каналов, который связывается с определенным целевым каналом, будет подвергнут DRC обработке целевого канала.
Так как независимо переключаемые спаренные каналы связываются с их целевыми каналами во временном пространстве, каждый независимо переключаемый спаренный канал будет подвергнут DRC обработке и последующей синтезирущей фильтрации, отдельно от его целевых каналов. Это позволяет независимо переключаемому спаренному каналу иметь отдельную DRC обработку при необходимости.
- Персистентность DRC информации
В начале потока вся DRC информация для всех каналов устанавливается в значение по умолчанию: контрольный уровень программы, равный контрольному уровню декодера, одна полоса DRC, без изменения усиления DRC. Если эти данные не перезаписываются, это остается в силе.
Есть два случая для персистентности DRC информации, которая была передана:
Контрольный уровень программы дается для каждой звуковой программы и сохраняется до тех пор, пока не будет передано новое значение (разумно периодически передавать значение во избежание ошибки).
Другая DRC информация сохраняется для каналов. Следует учесть что, если канал исключается соответствующим битом маски exclude_mask[], то никакая информация не передается для этого канала в dynamic_range_info (). Маска должна быть передана в каждом фрейме, где есть исключение каналов.
Правила сохранения поканальной DRC информации:
Если в данном фрейме данного канала нет DRC информации, используется информацию из предыдущего фрейма. (Это означает, что одна настройка может быть в силе в течение долгого времени, хотя уместно периодически передавать DRC информацию во избежание ошибки).
Если DRC информация для этого канала появляется в текущем фрейме, имеет место такая последовательность: вся DRC информация для канала заменяется значениями по умолчанию (одна полоса DRC, без изменений усиления DRC для этой полосы), затем информация заменяется соответствующими переданными значениями.
- Расширение полосы частот (SBR)
Элементы заполнения, содержащие extension_payload с extension_type EXT_SBR_DATA или