MPC-BE forum

MPC-BE => Обсуждение / Discussion => Тема начата: V0lt от 31 мая 2017, 05:45:49

Название: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: V0lt от 31 мая 2017, 05:45:49
Многоканальные AC3 дорожки специально делают тихими, чтобы при микшировании в стерео не было клипинга.

Многоканальные TrueHD дорожки идут изначально громкими. Это приводит к тому, что при простом матричном микшировании в стерео получается заметный клипинг. Лечится нормализацией матрицы микширования, но у этого метода есть недостатки.

Так же есть сообщения, что автоматическая регулировка громкости (АРГ) также может создавать клипинг на громких треках. У меня есть некоторые сомнения по этому поводу. Этот момент необходимо будет перепроверить на громком стерео.
[merge_posts_bbcode]Добавлено: 2017-05-30 13:40:09[/merge_posts_bbcode]

В общем, что делать пока непонятно. Вручную тыкать опции в зависимости от громкости многоканальных треков - дурацкое решение.

Как вариант разрулить через АудиоПереключатель.
Например, если в АудиоПереключателе включена АРГ, то говорить аудио рендереру, чтобы тот использовал нормализованную матрицу микширования.

Еще есть идея с микшированием TrueHD в стерео в самом декодере. Речь идет о параметрах микширования зашитыми в TrueHD-поток. Способ так же работает для DD, DD+ и DTS.
[merge_posts_bbcode]Добавлено: 2017-05-30 22:36:06[/merge_posts_bbcode]

Реализация микширования в декодере:
Если в настройках плеера выбрать "Микшировать каналы в Стерео", то он через спец. метод говорит декодеру, чтобы тот по возможности декодировал в стерео. Если декодер поддерживает такое режим, то на выходе будет стерео. Если нет, то декодер выдает как есть,  и микшированием будет заниматься аудиопереключатель.

[merge_posts_bbcode]Добавлено: 2017-05-30 23:01:56[/merge_posts_bbcode]

1-й тестовый билд
Билд хорошо работает, если задать "Микшировать каналы в Стерео" до открытия файла.
На лету может тупить и не переключать, если в графе несколько декодеров (например, если открыть MKV с кучей дорожек).
[merge_posts_bbcode]Добавлено: 2017-05-31 05:45:49[/merge_posts_bbcode]

2-й тестовый билд
Исправлена работа с несколькими декодерами в графе.
PS: после переключения на лету возможно потребуется поиск по полосе прокрутки.

3-й тестовый билд
Исправлено переключение микшера декодера на лету.

4-й тестовый билд
Добавлен галка "Запросить стерео у декодера" ("Request stereo from the decoder").
PS: Возможен конфликт, если в системе установлен MpaDecFilter.ax.

Опция "Запросить стерео у декодера" введена в r2616.
Название: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: Aleksoid1978 от 31 мая 2017, 14:05:37
А может ну его нафиг "умный" микс в стерео ?? Ну добавить галку в декодер, типа "Downmix to stereo(AC3/DTS/TrueHD)". А то все эти лишние навороты ...
Название: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: V0lt от 31 мая 2017, 20:41:08
Галка в плеере, галка в декодере - неудобно. А так управление микшированием будет в одном месте.
В коде ничего такого сложного нет. Осталось лишь заставить декодер на лету переключаться.
Название: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: Aleksoid1978 от 01 июня 2017, 02:26:43
Смотри как обрабатывается в аудио-переключателе изменение настроек, переменная m_bOutputFormatChanged.

Делаешь похожее в декодере и все.
Название: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: V0lt от 01 июня 2017, 12:20:19
В общем сделал переключение на лету.
В начале думал сделать в методе класса CMpaDecFilter, но т.к. хватет вызова Init(codec, NULL), то сделал внутри CFFAudioDecoder.

Ссылка в первом сообщении.
Название: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: Aleksoid1978 от 01 июня 2017, 16:10:31
А вот что интересно - всегда ли, в том же TrueHD, присутствует этот самый стерео поток(обычно в самой первой substream - судя по коду ffmpeg декодера). И что будет если нет нужной информации - ffmpeg декодер выдаст так же стерео на выходе или оставит как есть. Да и вообще - такая информация в потоке она 100% обязательна или на усмотрения энкодера.
[merge_posts_bbcode]Добавлено: 2017-06-01 23:07:19[/merge_posts_bbcode]

Судя по коду ffmpeg TrueHD декодера - не факт что прям на 100% всегда будет присутствовать стерео данные. Вот что написано в комментах:
Set the layout for each substream. When there\'s more than one, the first substream is Stereo.

[merge_posts_bbcode]Добавлено: 2017-06-01 23:10:31[/merge_posts_bbcode]

Выложи сам патч - гляну по коду. Ну ты же знаешь - я такой дотошный, может какиенить моменты найду или косяки.
Название: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: V0lt от 01 июня 2017, 21:49:35
Хмм.
Твой ролик с прыгающими шариками в качетсве теста никуда не годиться. Там клипинг в самом файле после декодирования в FFmpeg получается.
(http://jpegshare.net/thumbs/20/0d/200d93793c27e0b54f2c2d05380d3a4e.jpg) (http://jpegshare.net/20/0d/200d93793c27e0b54f2c2d05380d3a4e.jpg.html) (http://jpegshare.net/thumbs/6c/72/6c729e3a21980f024ac35740adcf6b99.jpg) (http://jpegshare.net/6c/72/6c729e3a21980f024ac35740adcf6b99.jpg.html)
Причем клипинг есть даже когда амплитуда за пределы не вышла (см. первую картинку).
Надо чего-нибудь покачественнее.
[merge_posts_bbcode]Добавлено: 2017-06-01 21:49:35[/merge_posts_bbcode]

6zc.thd нормальный. С ним наши микшеры (в переключателе и рендерере) трещат, а стерео из декодера без треска. Т.е. способ работает.

На AC3 тише становиться. Но скорее всего будет громче, чем если мы задействуем нормализацию. Т.к. по стандарту LFE канал не подмешивают, и ,соотвественно, доля остальных будет выше.

В общем надо подумать, обсудить. Есть кое-какие идеи.
Патч выложил там же, где сборки лежат.
Название: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: Aleksoid1978 от 02 июня 2017, 02:07:34
А может действительно в настройке аудио воткнуть галку(которая будет видна только если выбрали микширование в стерео) "Пытаться микшировать в декодере" ?? Так и сравнивать будет удобнее.
Название: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: V0lt от 03 июня 2017, 09:03:42
Добавил галку "Запросить стерео у декодера" ("Request stereo from the decoder").

PS: Возможен конфликт, если в системе установлен MpaDecFilter.ax.
Название: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: Angel от 05 июня 2017, 16:11:13
а можно добавить функцию детекта MpaDecFilter.ax и вывода соотв. сообщения об этом?
или это сильно замедлит открытие файлов?
Название: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: V0lt от 06 июня 2017, 16:23:52
Angel
Я обошел конфликт с MpaDecFilter.ax и ввел опцию "Запросить стерео у декодера" в r2616.
[merge_posts_bbcode]Добавлено: 2017-06-06 16:23:52[/merge_posts_bbcode]

Aleksoid1978
Код используемого нами "автоматической регулировки громкости" по-быстрому не понять.
Поэтому Я решил посмотреть, чего есть для регулировки громкости в FFmpeg:
alimiter - Audio lookahead limiter
acompressor - Audio compressor
compand - Compress or expand audio dynamic range
dynaudnorm - Dynamic Audio Normalizer
loudnorm - EBU R128 loudness normalization

С теми, что выделены можно экспериментировать. Нужны небольшие сэмплы с одновременно тихими и громкими участками.
Название: От: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: Pa3yMucT от 20 января 2023, 22:30:38
При включении "Автоматическая регулировка громкости" и "Повышать громкость" независимо от аудио формата  и рендерера происходит клиппинг на уровнях от 20 и выше (не говоря про дефолтные 75), при 15 клиппинг отсутствует, но громкость при этом заметно ниже чем в MPC-HC с его дефолтной нормализацией и усилением 400% и отсутствующим при этом клиппинге, хотя в отличиях от MPC-HC вы указываете "Улучшенная автоматическая регулировка громкости (взамен аудионормализиции)". Вот показательный пример https://disk.yandex.ru/i/5XV1wv-xxoDHyw
Название: От: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: Aleksoid1978 от 21 января 2023, 02:55:52
Ну в MPC-HC совершенно другой алгоритм нормализации.
По поводу нашего алгоритма - а есть возможность "сдампить" PCM данные выхода с аудиокарты, есть вроде бы какие то виртуальные кабеля или что-то такое. Так можно было бы сравнить с оригиналом в аудио-редакторе.

Вот просто у меня все отлично на дефолтных 75%.
Название: От: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: Pa3yMucT от 22 января 2023, 00:45:47
Сдампить я не знаю как, да и навряд ли проблема в моем железе, поскольку эта проблема проявляется на двух разных материнках с разными встройками от реалтек. Вы мой пример по ссылке пробовали и у вас нет щелчков на 5, 12, 13, 18, 19 секундах?
Название: От: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: Aleksoid1978 от 22 января 2023, 01:45:23
Вот была уже похожая тема - https://mpc-be.org/forum/index.php?topic=507.0
В самом последнем сообщении можно сказать "подведен итог".
Название: От: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: MPCfan от 22 января 2023, 07:45:06
Цитата: Pa3yMucT от 22 января 2023, 00:45:47Сдампить я не знаю как, да и навряд ли проблема в моем железе, поскольку эта проблема проявляется на двух разных материнках с разными встройками от реалтек. Вы мой пример по ссылке пробовали и у вас нет щелчков на 5, 12, 13, 18, 19 секундах?
Также обладаю реалтеком ALC271X с Dolby Home. Проверил ваш сэмпл. Да, щелчки есть именно на 5, 12, 13, 18, 19 секундах при включенной авторегулировке громкости. На 18 секунде щелчек есть всегда при любых настройках, даже с Lav audio. В потплеере те же щелчки с включенной нормализацией. Проблема решается отключением усиления громкости или полностью отключить авторегулировку. Зачем она? У реалтека есть своя технология выравнивания громкости и она работает на порядок лучше, звук гораздо громче и насыщенней.
Название: От: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: Pa3yMucT от 22 января 2023, 19:49:28
В этой теме: https://mpc-be.org/forum/index.php?topic=507.15 уже нашли решение. Да и на 18 секунде действительно всегда есть щелчек независимо от настроек. А что за технология выравнивания громкости у реалтека, в "Диспетчере Rеaltek HD" не увидел ничего подходящего?
Название: От: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: MPCfan от 22 января 2023, 20:18:19
Цитата: Pa3yMucT от 22 января 2023, 19:49:28В этой теме: https://mpc-be.org/forum/index.php?topic=507.15 уже нашли решение. Да и на 18 секунде действительно всегда есть щелчек независимо от настроек. А что за технология выравнивания громкости у реалтека, в "Диспетчере Rеaltek HD" не увидел ничего подходящего?
Непосредственно сам драйвер реалтека называет это тонкомпенсация > https://disk.yandex.ru/i/oRvILy1Arhz_UA
В ПО Dolby Home так и называется выравнивание громкости > https://disk.yandex.ru/i/P8pwD9UPFXIspA
Название: От: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: Pa3yMucT от 22 января 2023, 23:51:03
Спасибо за наводку, действительно тонкомпенсация отличная штука, только нужно учитывать, что она вмешивается в звуковой тракт глобально, т.е. во всех приложениях, а не только в видеоплеере, что может не всех устраивать. Вижу, что в Dolby Home есть пресеты предполагаю, что в ней можно выбирать в каких приложениях работать?
Название: От: TrueHD.Клипинг при микшировании и автоматической регулировки громкости
Отправлено: MPCfan от 23 января 2023, 05:41:12
Да, в первом случае - глобально, во втором автоматом - нет, конечно. Только пресет выбрать вручную, какой нужно.