Использование элемента управления динамическим диапазоном
[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Она была заменена средствами чтения источника и модуля записи приемников. Средство чтения источника и модуль записи приемников оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде средство чтения исходного кода и модуль записи приемников вместо пакета SDK для Windows Media Format 11, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Динамический диапазон аудиосодержимого — это, по сути, разница между наименьшим и максимальным объемом громкости. Если динамический диапазон содержимого слишком велик, пользователи могут многократно настраивать громкость во время воспроизведения. Например, фильмы часто имеют высокий динамический диапазон. Часто, когда громкость регулируется таким образом, чтобы диалог можно было понять во время тихих сцен, другие части фильма с музыкой или звуковыми эффектами громче, чем требуется.
Кодеки Windows Media Audio 9 Professional и Windows Media Audio 9 Без потери поддерживают функцию управления динамическим диапазоном. Во время кодирования кодек вычисляет пиковые и средние значения амплитуды в содержимом, а объект записи сохраняет эти значения в метаданных потока по завершении кодирования. При необходимости приложение также может записывать целевые значения в виде метаданных, которые приложения проигрывателя и декодер могут использовать в качестве подсказок при воспроизведении файла. Во время воспроизведения приложение может указать уровень управления динамическим диапазоном для применения к звуковому потоку.
Медиаплеер Windows реализует управление динамическим диапазоном в качестве функции "Тихий режим".
Когда следует использовать элемент управления динамическим диапазоном
Элемент управления динамическим диапазоном может изменять звук содержимого. По этой причине не следует настраивать приложение для автоматического использования управления динамическим диапазоном. Вместо этого предоставьте пользователям возможность включать или отключать динамическое управление диапазоном по мере необходимости.
Использование элемента управления динамическим диапазоном
Во время воспроизведения динамическое управление диапазоном активируется с помощью параметра вывода g_wszDynamicRangeControl. Используйте IWMReaderAdvanced2::SetOutputSetting для настройки параметра. Нулевое значение (значение по умолчанию) указывает, что динамический диапазон не следует изменять. Значение 1 или 2 сигнализирует кодеку о необходимости управления динамическим диапазоном, где 1 — это умеренный уровень сжатия динамического диапазона, а 2 — высокий уровень сжатия динамического диапазона.
Во время кодирования или воспроизведения можно присвоить целевому кодеку значения PCM для пикового и среднего уровней, задав атрибуты WM/WMADRCPeakTarget и WM/WMADRCAverageTarget соответственно. Эти значения хранятся в виде атрибутов метаданных и должны быть доступны с помощью методов интерфейса IWMHeaderInfo3 . При кодировании аудиопотока с помощью профессионального кодека или кодека без потерь атрибуты WM/WMADRCPeakReference и WM/WMADRCAverageReference автоматически устанавливаются на пиковый и средний уровни исходного содержимого. Целевым значениям по умолчанию присваиваются те же значения, что и для ссылок.
Декодер во время воспроизведения вычисляет динамический диапазон на основе выбранного уровня элемента управления динамическим диапазоном и целевых значений (если они указаны). Возможные диапазоны показаны в следующей таблице.
Параметры | Диапазон доставленного звука |
---|---|
g_wszDynamicRangeControl = 0 (любые целевые значения) | Тот же диапазон, что и исходное содержимое. |
g_wszDynamicRangeControl = 1 (целевые значения, равные ссылочным значениям) | Средний уровень поддерживается, а пиковые значения ограничиваются средним значением +12 дБ. |
g_wszDynamicRangeControl = 2 (целевые значения равны ссылочным значениям) | Средний уровень поддерживается, а пиковые значения ограничиваются средним значением +6 дБ. |
g_wszDynamicRangeControl = 1 (указаны целевые значения) | Средний уровень, заданный для целевого среднего значения, и пиковые значения, ограниченные целевым пиковой величиной. |
g_wszDynamicRangeControl = 2 (указаны целевые значения) | Средний уровень, заданный для целевого среднего значения и пиковых значений, ограниченных медианой целевого среднего и целевого пиковых значений. |
Обратите внимание, что элемент управления динамическим диапазоном является функцией только декодирования и существует только в виде метаданных в самом файле. Эти параметры не влияют на содержимое, хранящееся в файле, если вы специально не проинструктируете декодер для их использования. Пакет SDK для формата Windows Media не предоставляет методов изменения динамического диапазона звуковых данных во время кодирования.
Связанные темы