MPC-BE forum

MPC-BE => Баг Репорт / The bug report => Архив / Archive => Тема начата: Evgeniy1990 от 10 марта 2018, 07:10:23

Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 10 марта 2018, 07:10:23
Описание проблемы:

Вот это да! Стал я проверять различные MPEG1/2-видео файлы и обнаружил неприятную поломку, связанную с тем, что к графу фильтров не может подключиться встроенный "Audio Switcher" и как следствие - не подключается встроенный "MPC Audio Decoder". Вместо него работают или внешний аудио декодер, например "LAV Audio Decoder", или системные, такие как "MPEG Audio Decoder", или "Microsoft DTV-DVD Audio Decoder".

Рассмотрим 4 различных примера. Все они лежат здесь (https://yadi.sk/d/_Cpw0_L33TCdLG).
В каждом примере поломка выглядит по своему, но суть общая.

Пример №1:

В данном примере напрочь отсутствует встроенный "Audio Switcher" и подключаются только системный (MPEG Audio Decoder), или внешний (LAV Audio Decoder) аудио декодеры.

Пример №2:

В данном примере напрочь отсутствует встроенный "Audio Switcher", но при этом все же каким-то чудом подключился наш встроенный "MPC Audio Decoder".

Пример №3:

Данный пример полностью аналогичен первому примеру - напрочь отсутствует встроенный "Audio Switcher" и подключаются только системный  (MPEG Audio Decoder), или внешний (LAV Audio Decoder) аудио декодеры.

Пример №4:

В данном примере напрочь отсутствует встроенный "Audio Switcher" и подключаются только системные (MPEG Audio Decoder / Microsoft DTV-DVD Audio Decoder) аудио декодеры.

Первоначальный диапазон поиска поломки: [1.5.0.1823 - 1.5.1.2737]
[merge_posts_bbcode]Добавлено: 2018-03-10 05:58:10[/merge_posts_bbcode]

Продолжаю поиски...

Текущий диапазон:  [1.5.1.2237 - 1.5.1.2737]

[1.5.1.2481 - 1.5.1.2737]
[1.5.1.2580 - 1.5.1.2737]
[1.5.1.2660 - 1.5.1.2737]
[1.5.1.2660 - 1.5.1.2710]
[1.5.1.2660 - 1.5.1.2691]
[1.5.1.2675 - 1.5.1.2691]
[1.5.1.2675 - 1.5.1.2685]
[1.5.1.2675 - 1.5.1.2682]


Окончательный диапазон поиска поломки: [1.5.1.2675 - 1.5.1.2682]

[r2682] by v0lt

AudioSwitcher: незначительная корректировка.
    2017-07-01 13:01:33     Tree
[r2681] by v0lt

AudioSwitcher: исправлено "Усиление" ("Gain") после r2680.
    2017-07-01 11:36:00     Tree
[r2680] by v0lt

AudioSwitcher: преобразование формата поставлено после всех других преобразований.
    2017-07-01 11:14:08     Tree
[r2679] by v0lt

Реализована работа опции "Формат вывода" ("Output sample format").
    2017-07-01 09:06:53     Tree
[r2678] by v0lt

AudioSwitcher: реализовано преобразование формата сэмпла. Чистка и рефакторинг кода.
    2017-07-01 09:05:44     Tree
[r2677] by v0lt

В панели настроек "Audio" добавлены контролы для опции "Формат вывода" ("Output sample format").
    2017-07-01 08:38:47     Tree
[r2676] by v0lt

MpaDecFilter: для встроенного в плеер декодера убрано преобразование формате сэмпла (будет реализовано в переключателе). Для внешнего MpaDecFilter.ax преобразование оставлено.

В общем, повлияли изменения в SVN c r2676 по r2682.
[merge_posts_bbcode]Добавлено: 2018-03-10 06:34:06[/merge_posts_bbcode]

О да, это нонсенс какой-то... (о_О)

[merge_posts_bbcode]Добавлено: 2018-03-10 06:41:51[/merge_posts_bbcode]

Понятно, что изменения, начиная с r2676 по r2682 были перенесены на сторону встроенного аудио переключателя, при этом он сам, после переноса данных изменений, напрочь отказывается даже появляться в графе фильтров, а значит, что он даже не подключается к нему, потому что не может и естественно, вслед за ним, не может подключиться встроенный аудио декодер.

Происходит следующее - открывается некий видео файл, в этот момент строится граф фильтров, построение доходит до аудио переключателя и на этом все.  Он просто тупо стоит (висит). Чего стоит и ждет - непонятно вообще... (о_О)

[merge_posts_bbcode]Добавлено: 2018-03-10 06:43:11[/merge_posts_bbcode]

Буду разбираться!
[merge_posts_bbcode]Добавлено: 2018-03-10 06:49:43[/merge_posts_bbcode]

Хотя, стоп, аудио декодер является выстоящим фильтром, он вообще-то должен раньше появляться встроенного аудио переключателя.

Тогда получается так: встроенный аудио декодер не может подключиться и за ним не подключается и аудио переключатель.

Вопрос, что у нас с аудио декодером и аудио переключателем? Я вижу, что где-то конфликт, только вот в чем?

[merge_posts_bbcode]Добавлено: 2018-03-10 07:02:11[/merge_posts_bbcode]

Вот честно, до чего же неудобно сделали. В чем неудобство? Сейчас поясню...

После этих изменений, во встроенном аудио декодере всегда отображается 32-bit Float на выходе.

100% косяк - при переключении "Output sample format", запись должна быть иная, т.е. вместо 32-bit Float должно быть так: 32-bit float -> 32 bit integer им так далее, аналогично и для всех остальных. А у нас "32-bit float" во встроенном аудио декодере вообще всегда.
[merge_posts_bbcode]Добавлено: 2018-03-10 07:07:47[/merge_posts_bbcode]

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

[merge_posts_bbcode]Добавлено: 2018-03-10 07:10:23[/merge_posts_bbcode]

Просто удивительно, статус не меняется, но форматы вывода аудио нормально на лету переключаются.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 10 марта 2018, 07:21:47
Все верно, теперь встроенный аудио-декодер всегда выдает "в максимальном качестве". А уже аудио-переключатель делает(по необходимости) различные обработки и выдает в таком из форматов, которые указаны в настройках.

По поводу описанных багов - у меня всегда присутствует и переключатель и декодер. Не зависимо от того, какой аудио-рендерер выбран.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 10 марта 2018, 07:28:10
Цитата: Aleksoid1978По поводу описанных багов - у меня всегда присутствует и переключатель и декодер. Не зависимо от того, какой аудио-рендерер выбран.

Это у вас так, а у меня не всегда, вот поэтому я обязательно разберусь что не так.

Но эти изменения в SVN с r2676 по r2682 пока остаются сомнительными.
До них у меня, как и у вас, всегда присутствовал и аудио декодер и аудио переключатель.
[merge_posts_bbcode]Добавлено: 2018-03-10 07:28:10[/merge_posts_bbcode]

Цитата: Aleksoid1978Все верно, теперь встроенный аудио-декодер всегда выдает "в максимальном качестве". А уже аудио-переключатель делает(по необходимости) различные обработки и выдает в таком из форматов, которые указаны в настройках.

Вот это и есть - главное неудобство!

Любой пользователь, особенно непродвинутый, решит, что у него всегда строго работает только один единственный Float, хотя это не так.
Название: Audio Switcher поломан [Исправлено]
Отправлено: V0lt от 10 марта 2018, 07:42:02
Поправлю. Декодер всегда выдает в оптимальном качетсве.

Важно не что решит глупый пользователь, а реализация оптимального звукового тракта по качеству и производительности.
[merge_posts_bbcode]Добавлено: 2018-03-10 07:42:02[/merge_posts_bbcode]

Проверил все файлы на системном DS и нашем аудиорендерере. Во всех случаях Audio Switcher присутствует.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 10 марта 2018, 09:43:18
Aleksoid1978 / V0lt

Я разобрался, понял почему возникают эти проблемы, когда аудио переключатель и встроенный аудио декодер не могут подключиться к графу фильтров. Сейчас объясню...

Дело в том, что раньше, до SVN r2676, выходные форматы аудио были на стороне самого встроенного аудио декодера. А уже после SVN r2676, все они были перенесены на сторону аудио переключателя.

Но, при этом, после переноса, появилось одно отличие, которого не было ранее - это количество включенных (активных) выходных форматов аудио по умолчанию.

Так вот, в SVN r2675, по умолчанию был включен только "int16", что собственно было правильно.
А после переноса изменений в SVN r2682, по умолчанию уже стали включены абсолютно все выходные форматы аудио: "int16", "int24", "int32", "Float".

И по умолчанию (изначально), при открытии файлов, запускается именно формат "Float". Все бы ничего, но как всегда, найдется некое "нечто", которое не даст ему нормально работать. И это касается некоторых звуковых карт, особенно дискретных, как самых дорогих, так и более бюджетных.

И вот, пожалуйста, звуковая карта "ASUS Xonar DG", на которой и проявляются данные баги - отсутствие встроенного "Audio Switcher" и вместе с ним встроенного "MPC Audio Decoder".

Причина - это "GX", работающий на звуковой карте "ASUS Xonar DG" по умолчанию.

А теперь - внимание!

Если используется х86-версия "MPC-BE" на 64-битной системе и в самой системе, где он запущен, стоит данная звуковая карта с настройками драйвера по умолчанию, то при открытии любых видео файлов, всегда будет отсутствовать как встроенный "Audio Switcher", так и встроенный "MPC Audio Decoder".

Причина тому - работающая связка: "GX" + "Float".

Приходится выбирать одно из двух, или отключать в самом драйвере этот самый "GX", или в настройках встроенного "Audio Switcher" отключать выходной формат "Float". Иначе не будет ни встроенного аудио переключателя , ни встроенного аудио декодера.

А вот если используется х64-версия "MPC-BE" на 64-битной системе и в самой системе, где он запущен, стоит данная звуковая карта с настройками драйвера по умолчанию, то при открытии любых видео файлов, всегда будут присутствовать и встроенный "Audio Switcher" и встроенный "MPC Audio Decoder".

Вот такие дела...

Я не против, чтобы "Float" работал по умолчанию, но увы, далеко не на всех звуковых картах он будет корректно работать. Все зависит от самой звуковой карты и от разрядности операционных систем и разрядности плееров.

Aleksoid1978

У вас есть такая звуковая карта "ASUS Xonar DG", попробуйте на ней воспроизвести данные проблемы, при тех условиях, которые я написал выше.

Основные условия воспроизведения данных проблем:

1. Звуковая карта ASUS Xonar DG и ей подобные, более дорогие модели
2. Включенный "GX"
3. 64-битная операционная система
4. x86-версия MPC-BE
5. Включенный выходной формат "Float" в настройках встроенного "Audio Switcher".

Я конечно не знаю, можно ли реализовать проверку на наличие поддержки формата Float, при определенных условиях, например, если в драйвере включен "GX", то необходимо исключить запуск выходного формата "Float", если "GX" выключен, то запускать Float.

Было бы здорово, если бы вы смогли реализовать такую проверку, при вышеописанных условиях, т.е. только для x86-версии MPC-BE. На x64-версии MPC-BE проблем с работающей связкой "GX" + "Float" - нет.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 10 марта 2018, 10:03:06
У меня на работе такая же карта, х86 версия и float вывод. Правда я использую встроенный аудио-рендерер. На неделе проверю на DirectSound выводе.
Название: Audio Switcher поломан [Исправлено]
Отправлено: V0lt от 10 марта 2018, 10:40:29
Блин. Лечится такое элементарно - отключением Float в настройках.
Это Я лично объяснял кому-то на forum.doom9.org, люди в курсе и больше вопросов не задают.

Делать все 4-варианта вывода по приоритетам как в видео-декодере можно, но оно даром никому не сдалось, т.к. проблема решается в один клик.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 10 марта 2018, 11:11:10
Цитата: Aleksoid1978У меня на работе такая же карта, х86 версия и float вывод. Правда я использую встроенный аудио-рендерер. На неделе проверю на DirectSound выводе.
Со встроенным аудио-рендерером MPC Audio Renderer проблем нет.
Проблемы только на DirectSound.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 12 марта 2018, 05:00:06
Проверил на ASUS Xonar DG, билд х86, система Win 10 х64 - все отлично, и аудио-переключатель, и аудио-декодер присутствуют.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 12 марта 2018, 07:54:20
Цитата: Aleksoid1978Проверил на ASUS Xonar DG, билд х86, система Win 10 х64 - все отлично, и аудио-переключатель, и аудио-декодер присутствуют.
Как вы так проверяли? У вас "DirectSound" и "GX" были включены?
[merge_posts_bbcode]Добавлено: 2018-03-12 07:54:20[/merge_posts_bbcode]

Aleksoid1978
Посмотрите пожалуйста эту видеозапись. Именно так, как показано в данной видеозаписи, вам необходимо проверить.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 12 марта 2018, 08:27:37
DX вроде бы включено. Правда я недавно поставил не родные драйвера. Но это можно проверить легче, возьму встроенный аудио-рендерер и отрублю поддержку float, посмотрим что получиться. Ессно для тестов.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 12 марта 2018, 09:17:21
Ради интереса, я также проверил поведение на 64-битной Windows 7.

На ней есть встроенный аудио переключатель, но встроенный MPC Audio Decoder не подключается к графу фильтров, если включен "GX". При "GX", формат "Float" не работает хеа x86-версии плеера.

Если заглянуть в статус LAV Audio Decoder, то становится понятно, что при "GX" способен работать только "16bit integer" формат.

Прилагаю еще одну видеозапись (https://yadi.sk/i/zuqiPKEy3TFwNs) с Windows 7.
[merge_posts_bbcode]Добавлено: 2018-03-12 08:33:37[/merge_posts_bbcode]

Цитата: Aleksoid1978DX вроде бы включено. Правда я недавно поставил не родные драйвера. Но это можно проверить легче, возьму встроенный аудио-рендерер и отрублю поддержку float, посмотрим что получиться. Ессно для тестов.
Даже если вы и установили не родные драйвера UniXonar, то это ничего не меняет. На них проблема также присутствует.

Разве что только на UniXonar есть встроенный аудиопереключатель, а на родных драйверах его вообще нет, если верить Windows 7, поскольку на ней у меня как раз стояли именно UniXonar.

Но факт остается фактом.
[merge_posts_bbcode]Добавлено: 2018-03-12 08:40:45[/merge_posts_bbcode]

Что на родных драйверах, что на не родных - UniXonar, в любом случае, при GX, отсутствует "MPC Audio Decoder".
Он не может подключиться к графу из-за того, что в нем включен выходной формат "Float", а он не работает с "GX" в x86-версии плеера.

Windows 10 - еще та система, каких только проблем со звуком на ней у меня не было. Я даже не удивлюсь, если даже поставлю эти не родные UniXonar, после чего, у меня также будет отсутствовать встроенный аудио переключатель вместе со встроенным аудио декодером.
[merge_posts_bbcode]Добавлено: 2018-03-12 09:17:21[/merge_posts_bbcode]

Проверил UniXonar на Windows 10 - да, все именно так, как я и говорил - также отсутсвует и встроенный аудио переключатель и встроенный аудио декодер.

Кстати, интересно то, что у меня на 64-битной Windows 7 и 64-битной Windows 10 стоит одна и та же версия не родных драйверов UniXonar, но при этом, есть одно отличие, на Windows 7 - есть встроенный аудио переключатель, но нет встроенного аудио декодера, а на Windows 10 - нет ни встроенного аудио переключателя, ни встроенного аудио декодера.

Ну, как я и говорил вам ранее, я даже не удивлюсь. Я и не удивился.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 12 марта 2018, 09:32:37
У меня все есть. Но это не важно.
Важно другое - что аудио-переключатель отваливается(естественно) если не может подключиться по своему выходному типу. Надо будет переделать чтобы он выдавал не один тип, а список - согласно настройкам.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 12 марта 2018, 09:48:25
Цитата: Aleksoid1978У меня все есть. Но это не важно.
Важно другое - что аудио-переключатель отваливается(естественно) если не может подключиться по своему выходному типу. Надо будет переделать чтобы он выдавал не один тип, а список - согласно настройкам.
Все верно, основная проблема - это как раз именно отвал аудио переключателя, как вы и сказали.

А со встроенным аудио декодером - ладно уж, буду использовать тогда одно из двух на x86-версии - или отключать "GX" в самом драйвере, или отключать формат "Float" в настройках встроенного аудио переключателя.
[merge_posts_bbcode]Добавлено: 2018-03-12 09:47:31[/merge_posts_bbcode]

Хотя, если возможно, то лучшим вариантом здесь будет некая проверка на наличие поддерживаемого формата, при определенном условии. Допустим, если "Float" не может подключиться, то тогда пусть работает предыдущий формат, просто "32-bit Integer (цельный)", а не "32-bit Float" (с плавающей точкой).

[merge_posts_bbcode]Добавлено: 2018-03-12 09:48:25[/merge_posts_bbcode]

Таким образом, встроенный "MPC Audio Decoder" всегда будет подключаться к графу фильтров.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 12 марта 2018, 10:55:21
Не все так просто ))
[merge_posts_bbcode]Добавлено: 2018-03-12 17:55:21[/merge_posts_bbcode]

Как работают фильтры в DS - они просто создают выходные медиа-типы, а кто там к ним подключиться - это уже их не касается. Вот и получается что float никто не может зацепить. Надо просто добавить тип с 16bit int, как fallback.
Ну или, по хорошему, перечислить все указанные в настройках.
Название: Audio Switcher поломан [Исправлено]
Отправлено: V0lt от 12 марта 2018, 11:59:34
Цитата: Aleksoid1978Ну или, по хорошему, перечислить все указанные в настройках.
А зачем? Ради юзеров, которые что-то включают в драйвере, но при этом им влом выключить одну галку в плеере?
Имхо, проблемы нет.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 12 марта 2018, 13:28:08
Цитата: V0ltА зачем? Ради юзеров, которые что-то включают в драйвере, но при этом им влом выключить одну галку в плеере?Имхо, проблемы нет.
Не мы что-то включаем в драйвере, а сами драйвера уже идут с такими вот включенными опциями, на подобии "GX" .
Лучше сделать так, как предложил Aleksoid1978 - по хорошему.
[merge_posts_bbcode]Добавлено: 2018-03-12 13:22:32[/merge_posts_bbcode]

V0lt, ваши слова прозвучали так, будто мы вот специально что-то включаем, как нефиг делать, но это не так.
"GX" по умолчанию уже включен, после установки драйвера. Да и на других дискретных звуковых картах есть подобные опции, которые также по умолчанию включены. Особенно это касается более дорогих моделей.

[merge_posts_bbcode]Добавлено: 2018-03-12 13:24:28[/merge_posts_bbcode]

Лично мне - не влом выключить одно из двух - или "GX", или "Float", но суть в том, что по умолчанию с настройками драйвера и плеера происходит некорректная работа, а это не есть хорошо.

[merge_posts_bbcode]Добавлено: 2018-03-12 13:28:08[/merge_posts_bbcode]

Не понимаю, что плохого в том, чтобы для так вот звуковых карт, или же специфичных случаев, реализовать более грамотный код?
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 12 марта 2018, 14:15:25
Все таки надо сделать так чтобы переключатель выдавал несколько выходных типов, в зависимости от настроек.
Название: Audio Switcher поломан [Исправлено]
Отправлено: V0lt от 12 марта 2018, 18:07:34
Тогда задачка. Что делать если декодер выдает несколько медиатипов? Как будете сопоставлять их с выходными? Или не будете?
[merge_posts_bbcode]Добавлено: 2018-03-12 18:07:34[/merge_posts_bbcode]

Помню была идея сделать один запасной 16-бит стерео и все.
Название: Audio Switcher поломан [Исправлено]
Отправлено: LongKick64 от 12 марта 2018, 20:59:33
оффтопик
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 17 апреля 2018, 15:04:17
У меня тоже мысль сделать просто доп. 16 бит, но не стерео, а какой есть формат.
[merge_posts_bbcode]Добавлено: 2018-04-17 22:04:17[/merge_posts_bbcode]

Попытался создать на выходе дополнительный формат 16bit. Формат то создать получилось - но блин там все так не просто в коде, поэтому не работает, "не цепляется" аудио-переключатель к этому формату ...

Но есть другая мысль - сделать примерно как в аудио-декодере, проверять возможности последующего фильтра. И на основе этого уже создавать выходной тип, вместе с настройками ессно.
Название: Audio Switcher поломан [Исправлено]
Отправлено: V0lt от 17 апреля 2018, 15:32:43
Aleksoid1978
Ты в декодере пытаешься прикрутить 16-бит? :O
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 17 апреля 2018, 16:38:39
При чем здесь декодер. Я про переключатель говорю.
[merge_posts_bbcode]Добавлено: 2018-04-17 23:38:39[/merge_posts_bbcode]

Нет - так не получиться. Нельзя заранее проверить, жаль.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 13 февраля 2020, 09:14:18
Проверяем тестовый билд. https://yadi.sk/d/iPmS-zad4WarUA
Я в нем сделал fall-back на 16bit, если на текущем формате не удается. Для 100% проверки что вывод будет во float - галку поставить и включить авто-регулировку громкости(тогда аудио-переключатель 100% будет пытаться вывести в float).
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 13 февраля 2020, 11:43:47
Aleksoid1978,
ЦитироватьПроверяем тестовый билд. https://yadi.sk/d/iPmS-zad4WarUA
Я в нем сделал fall-back на 16bit, если на текущем формате не удается. Для 100% проверки что вывод будет во float - галку поставить и включить авто-регулировку громкости(тогда аудио-переключатель 100% будет пытаться вывести в float).
Проверил тестовый билд. Проблема с отсутствующим аудиопереключателем и внешним аудио декодером исправлена, при условии: GX + Float + DirectSound на ASUS Xonar DG.

Интересно...

Надо будет более тщательно проверить на различных драйверах:

1. Официальные с сайта asus.com
2. Daniel Kawakami
3. UniXonar

У Daniel этого бага нет, т.к. там иначе реализован GX, он внутри драйвера и не вынесен как отдельная опция (настройка).

Те, что с сайта asus.com  - на них в вашем тестовом билде баг исправлен, но не работает переключение формата аудио, ни автоматическое, ни ручное, даже если выключить GX.

UniXonar - с ними ерунда какая-то... Плеер пытается вывести звук во Float, при этом не может, перебирает возможные форматы, но так и ничего не находит. В итоге звука нет вообще, как и декодера с рендерером. Очень странно...

Ладно, с UniXonar я еще поиграюсь позже. Сами эти драйверы вообще какие-то нестабильные. Даже при их установке выскакивает ошибка о том, что установщик не может найти или определить звуковую карту ASUS серии Xonar.

Добавлено: 2020-02-13 11:29:55

Aleksoid1978,
Все-таки странно... Переключение форматов аудио то работает, то не работает, то при переключении пропадает вообще звук. Это в вашем тестовом билде. Т.е. основная проблема исправлена, но с переключением форматов, особенно на лету, какой-то рандом творится.


Добавлено: 2020-02-13 11:43:47

Aleksoid1978,
Внимательно понаблюдал за сменой форматов вывода аудио в вашем тестовом билде.

Логика такая:

1. Условие: настройки плеера и аудио драйвера по умолчанию (GX в драйвере включен по умолчанию)

Запускаю некий видео файл и пробую менять форматы вывода аудио.
В итоге - они не меняются на лету, во время воспроизведения.

2. Условие: настройки плеера по умолчанию, в аудио драйвере выключаю только GX

Запускаю некий видео файл и пробую менять форматы вывода аудио.
В итоге - они меняются на лету во время воспроизведения, это очень заметно и слышно, но при этом в аудио декодере, в его статусной строке всегда Float.

Т.е. формат вроде как сменился (изменился), но в статусе аудио декодера все так и осталось без изменений.
Вот в чем странность. Получается, что формат вывода аудио не изменился вообще, хотя было отчетливо слышно его изменение на лету во время воспроизведения.

P.S. Естественно, после включения, или отключения GX необходимо обязательно перезапускать плеер.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 13 февраля 2020, 11:55:30
При чем здесь смена формата аудио и декодер, формат меняется в аудио-переключателе.

Добавлено: 2020-02-13 18:55:30

Надо смотреть на выход в аудио-переключателе после смены. Ну и сравнивать с SVN.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 13 февраля 2020, 12:04:52
Aleksoid1978,
ЦитироватьПри чем здесь смена формата аудио и декодер, формат меняется в аудио-переключателе.
Да я знаю, что формат вывода аудио меняется в аудиопереключателе.

Беру и меняю формат с Float на обычный int32 и вижу, что в статусе аудиодекодера в Output так и остался Float.
Для сравнения проверил в LAV Audio Decoder. Изменил в нем формат с Float на Int32 и в его статусе, в разделе Output именно Int32. А у нас всегда Float.
ЦитироватьНадо смотреть на выход в аудио-переключателе после смены. Ну и сравнивать с SVN.
Ну посмотрел я и ничего не увидел. Что я там должен увидеть? Разве что на слух понять и услышать, что произошла смена формата вывода аудио.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 13 февраля 2020, 12:17:18
Не тормозить - формат вывода в декодере не меняется. Смотреть надо выходной пин в переключателе.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 13 февраля 2020, 12:26:38
Цитата: Aleksoid1978Не тормозить - формат вывода в декодере не меняется. Смотреть надо выходной пин в переключателе.
Проверил выходной пин аудио переключателя.

При смене на Int32 показывает wBitsPerSample: 32
При смене на Int24 показывает wBitsPerSample: 16

Почему 16, а не 24? Странно...
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 13 февраля 2020, 12:45:54
24 бита наверное не поддерживает, проверь в SVN и сравни.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 13 февраля 2020, 13:10:16
Aleksoid1978,
Сравнил с SVN переключение форматов вывода аудио в вашем тестовом билде.

В SVN переключение форматов всегда стабильное.
В тестовом билде - нестабильное. Т.е. то переключает, то не переключает. Это проблема. Причем обратно вообще не переключает.

Я сравнивал SVN r5078 и ваш тестовый билд. Правда разной разрядности, поскольку баг с GX только на x86.
Поэтому проверял и сравнивал работу переключения форматов вывода аудио на х64-SVN билде и вашем тестовом x86.

К сожалению, в тестовом билде есть проблема (баг) с переключением форматов вывода аудио.

Добавлено: 2020-02-13 12:49:40

Aleksoid1978,
Цитировать24 бита наверное не поддерживает, проверь в SVN и сравни.
Проверил SVN-билд. 24 бит поддерживает.

Filter : Audio Switcher - CLSID : {18C16B08-6497-420E-AD14-22D21C2CEAB7}

- Connected to:

CLSID: {601D2A2B-9CDE-40BD-8650-0485E3522727}
Filter: MPC Audio Renderer
Pin: In

- Connection media type:

Audio: PCM 48000Hz 2.0 chn 2304 kbit/s

AM_MEDIA_TYPE:
majortype: MEDIATYPE_Audio {73647561-0000-0010-8000-00AA00389B71}
subtype: MEDIASUBTYPE_PCM {00000001-0000-0010-8000-00AA00389B71}
formattype: FORMAT_WaveFormatEx {05589F81-C356-11CE-BF01-00AA0055595A}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 8
cbFormat: 40

WAVEFORMATEX:
wFormatTag: 0xfffe
nChannels: 2
nSamplesPerSec: 48000
nAvgBytesPerSec: 288000
nBlockAlign: 6
[b]wBitsPerSample: 24[/b]
cbSize: 22 (extra bytes)


Добавлено: 2020-02-13 13:10:16

Aleksoid1978,

Сделал для вас видеозапись (https://yadi.sk/i/Rh_4piqsIYlk9A), чтобы вы точно понимали в чем странность и проблема. Но на всякий случай скажу вам еще раз отличия в работе переключения форматов вывода аудио в SVN и вашем тестовом билде.

1. В тестовом билде, при GX, смена форматов не работает вообще, или отсутствует звук. Работает только если GX выключен.

В SVN при GX все работает нормально.

2. В тестовом билде переключение форматов работает нестабильно, особенно на лету, во время воспроизведения.
Т.е. может переключить, а может и не переключить. Это будет слышно по звуку во время переключения форматов.

В SVN переключение всегда стабильное.

3. В тестовом билде обратно может не переключиться формат вывода аудио, или же просто тупо пропадет сам звук.

В SVN проблем нет.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 13 февраля 2020, 14:27:14
Ну ясно, значит идея утопическая, в аудио-переключателе такое нормально не разрулить.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 13 февраля 2020, 14:33:30
Цитата: Aleksoid1978Ну ясно, значит идея утопическая, в аудио-переключателе такое нормально не разрулить.
И вовсе не утопическая, у вас вполне получилось устранить основную проблему. Единственное осталось - это исправить (подкорректировать) смену выходных форматов аудио.

И еще, я думаю, может быть стоит сравнить наш аудиопереключатель и тот что в MPC-HC.
Просто в MPC-HC данной проблемы с GX нет на х86 билдах.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 13 февраля 2020, 14:50:26
В MPC-HC совершенно нет никакого функционала, который есть у нас - я про аудио-обработку. Сравнивать совершенно некорректно.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 13 февраля 2020, 14:57:24
Цитата: Aleksoid1978В MPC-HC совершенно нет никакого функционала, который есть у нас - я про аудио-обработку. Сравнивать совершенно некорректно.
Значит проблема в нашем функционале обработки аудио.

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

Добавлено: 2020-02-13 14:57:24

Можно попробовать откатить изменения c r2676 по r2682 и проверить. Так как ясно, что какое-то из них работает некорректно.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 13 февраля 2020, 15:41:51
Откатываться уже ессно ничего не будет. А так - раньше вся обработка была в декодере, сейчас в переключателе. И если декодер просто выдавал список доступных форматов - и далее уже фильтры "выбирали" то с чем могут работать(по всей цепочке до аудио-рендерера), то переключатель этого сделать не может. Поэтому он если выводит во float - то в случае отказа со стороны рендерера - получаем файл коннекта и т.д.
Название: Audio Switcher поломан [Исправлено]
Отправлено: V0lt от 13 февраля 2020, 18:54:38
Цитата: Aleksoid1978Проверяем тестовый билд. https://yadi.sk/d/iPmS-zad4WarUA
Я в нем сделал fall-back на 16bit, если на текущем формате не удается.
fall-back?
Повторюсь...
1. Проблемы как таковой нет, она есть только у некоторых юзеров, которым лень выключить одну галку в настройках.
2. Существует стандартное решение в виде дополнительного медиатипа, которое до сих пор не реализовано по причине, что проблемы как таковой нет.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 13 февраля 2020, 19:34:18
V0lt,
Цитировать1. Проблемы как таковой нет, она есть только у некоторых юзеров, которым лень выключить одну галку в настройках.
Лично мне - не лень выключить галочку. Но с другой стороны - это тоже не дело заставлять пользователей лезть в настройки и галочки отключать. Ладно еще, если пользователь опытный, он разберется что к чему, а все остальные рядовые пользователи этого сделать вот так с ходу точно не смогут. Они будут просто говорить, что плеер не видит аудио дорожки, а все из-за отсутствующего аудиопереключателя в графе фильтров.
Цитировать2. Существует стандартное решение в виде дополнительного медиатипа, которое до сих пор не реализовано по причине, что проблемы как таковой нет.
Ну раз проблема все же есть на некоторых звуковых картах, так почему бы не реализовать этот дополнительный медиатип?
Название: Audio Switcher поломан [Исправлено]
Отправлено: V0lt от 13 февраля 2020, 20:50:23
Цитата: Evgeniy1990Ну раз проблема все же есть на некоторых звуковых картах, так почему бы не реализовать этот дополнительный медиатип?
Эта проблема в очень малом количестве звуковых карт. Надо уделить несколько дней на черновик решения, потом еще кучу времени на понимание работает решение у юзера или нет и на отладку. Без карты на руках это долго и нудно. А если учесть, что рабочее решение уже есть, а юзеры просто уперлись, то мотивация становиться близка к нулю.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 14 февраля 2020, 10:47:56
Ну так я и попытался «стандартно» добавить 16 бит как новый медиа-тип, оказалось что это совсем не просто сделать.

Добавлено: 2020-02-14 17:47:56

Другой вариант - не fallback на 16bit, а просто игнор Float(если не удалось на него подключиться) и использование формата из настроек.
https://yadi.sk/d/fyy6ONIsRe-v1g

Дело в том что сделать именно для неподдерживаемого формата fallback на float, а поддерживаемые оставить как есть ... ну блин практически не возможно.

Для удобства проверки не надо иметь такое железо - на встроенном MPC Audio Renderer я просто запретил обработку Float.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 14 февраля 2020, 12:27:41
Aleksoid1978,
ЦитироватьДругой вариант - не fallback на 16bit, а просто игнор Float(если не удалось на него подключиться) и использование формата из настроек.
https://yadi.sk/d/fyy6ONIsRe-v1g
Проверил второй тестовый билд.

Основная проблема исправлена.
При наличии GX, формат Float не работает.
Переключение форматов вывода аудио полностью работает нормально в обе стороны.

В целом, ваш второй вариант (тестовый билд) работает полностью нормально.

А теперь неприятное:
Цитироватьна встроенном MPC Audio Renderer я просто запретил обработку Float.
Зачем? Проблема была только на DirectSound, при наличии GX. На MPC Audio Renderer данной проблемы нет и не было с самого начала, даже после всех переделок встроенного аудио декодера и аудиопереключателя.

Float нормально работает на MPC Audio Renderer, при наличии активного GX.
Так что просьба вернуть обратно для MPC Audio Renderer работу Float-формата при наличии GX.

Добавлено: 2020-02-14 12:27:41

Aleksoid1978,
Если будете вносить ваши изменения, то я еще раз напомню, что они должны быть применены только для x86-билдов, потому что на x64-билдах Float полностью поддерживается и работает нормально при наличии активного GX как на DirectSound, так и на MPC Audio Renderer (WASAPI).
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 14 февраля 2020, 13:24:38
Float я убрал в ТЕСТОВОМ билде для простой проверки изменений :)
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 17 февраля 2020, 03:59:47
Так - "окончательный" вариант https://yadi.sk/d/Ij65L6NYW-tQ8g
Сделал не тупо игнора float в случае если не можем подключиться, а проверка поддерживаемого формата последующего фильтра, думаю так правильнее(мало ли какое дурацкое железо бывает и какие фильтры).
Название: Audio Switcher поломан [Исправлено]
Отправлено: V0lt от 17 февраля 2020, 07:04:18
Зачем все это? Два медиатипа чем не устраивают?
Чувствую будет много кода и сомнительных хаков, которые потом при любой правке будут создавать проблемы.

К медиатипу Float, Int24 и Int32 добавить еще один Int16. Если рендерер не смог подключиться к первому, то подключиться ко второму Int16. Если не смог ничего, то драйвер звуковушки отстой, настраиваем вручную.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 17 февраля 2020, 08:01:20
Не все так просто. Вернее совсем не просто - это вам не аудио-декодер, который отдал список типов и юзает к которому подключились.

Тут еще сложнее - из-за того что мы галки можем во время воспроизведения менять, из-за этого меняется выходной медиа-тип. И вот тут уже не важно какой был тип до этого, смогли ли подключиться к float или 32int и т.д.

А так я сделал опрос поддерживаемых типов и эта проверка будет участвовать уже при формировании выходного типа.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 17 февраля 2020, 08:37:30
Aleksoid1978,
ЦитироватьТак - "окончательный" вариант https://yadi.sk/d/Ij65L6NYW-tQ8g
Сделал не тупо игнора float в случае если не можем подключиться, а проверка поддерживаемого формата последующего фильтра, думаю так правильнее(мало ли какое дурацкое железо бывает и какие фильтры).
К сожалению, стало еще хуже, чем даже ваш самый первый вариант.

В чем хуже?

1. Float не работает даже если выключен GX.
2. Переключение форматов вывода аудио не работает совсем. Один раз переключается только на int16, если снять галочку с Float в самом аудиопереключателе. На остальные вообще не переключается.

Я предлагаю оставить именно ваш второй вариант, как самый стабильный и рабочий.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 17 февраля 2020, 08:41:14
Ага - на DS я не проверил ))
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 17 февраля 2020, 08:52:52
Aleksoid1978,
ЦитироватьАга - на DS я не проверил ))
На MPC Audio Renderer тоже самое, что и на DirectSound в вашем третьем варианте.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 17 февраля 2020, 08:56:50
Обновил последний билд, глюк какой-то был. Проверяем.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 17 февраля 2020, 09:08:12
Цитата: Aleksoid1978Обновил последний билд, глюк какой-то был. Проверяем.
Ничего не изменилось.

Добавлено: 2020-02-17 09:08:12

Aleksoid1978,
В обновленном билде Float заработал без GX, в остальном - без изменений. Т.е. форматы вывода аудио по прежнему не работают. Переключает только на int16, если снять галочку с Float. На остальные форматы int24 и int32 не переключает вообще, они словно вообще не работают.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 17 февраля 2020, 09:13:58
Очень странно - у меня на ура переключаются форматы, на DS и на WASAPI выводе.

Ну раз чето не пошло - ок, закрываем вопрос.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 17 февраля 2020, 19:24:04
Aleksoid1978,
ЦитироватьОчень странно - у меня на ура переключаются форматы, на DS и на WASAPI выводе.
Вы на чем проверяли? Проверять надо на ASUS Xonar DG, сначала при GX, потом без GX.
ЦитироватьНу раз чето не пошло - ок, закрываем вопрос.
Подождите закрывать вопрос. Давайте уж до конца разберемся.

Я скачал ваш обновленный тестовый билд.
Запустил его. Перетащил в него произвольный видео файл.

Проверка при GX (GX включен):

Вижу что:

1. Float не работает, просто игнорируется.
2. Пробую переключать форматы вывода аудио в обратном порядке с Float и до int16 (справа - налево).
В итоге, ничего не переключается.

Проверка без GX (GX выключен):

Вижу что:

1. Float полностью работает.
2. Пробую переключать форматы вывода аудио в обратном порядке с Float и до int16 (справа - налево).
В итоге, отключил галочку с Float, по логике должен быть и работать int32, но на выходном пине аудиопереключателя у меня показывает wBitsPerSample: 16 .

Добавлено: 2020-02-17 19:24:04

Aleksoid1978,
Сделал для вас видеозапись (https://yadi.sk/d/KMIyinZZi9FKNA) проверки вашего тестового билда. Посмотрите пожалуйста. Я проверял на свежей установленной Windows 10.
Возможно вы проверяли на других драйверах?

P.S. Также, на всякий случай, я залил для вас свой произвольный видео файл (https://yadi.sk/d/pJkdyY9R0k7q8A), на котором проверял работу вашего обновленного тестового билда. Скачайте его и проверьте пожалуйста переключение форматов вывода аудио на нем.
Интересно, будет ли переключать?
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 18 февраля 2020, 02:43:40
Пробуем - https://yadi.sk/d/Bnf5DeTlvQAObg
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 18 февраля 2020, 05:27:19
Aleksoid1978,
ЦитироватьПробуем - https://yadi.sk/d/Bnf5DeTlvQAObg
Проверил ваш тестовый билд.

1. Основная проблема с отсутствием встроенного аудио переключателя исправлена.
2. Переключение форматов вывода аудио также исправлено, полностью работает нормально.

Результаты проверки:

Проверка при GX (GX включен):

Вижу что:

1. Float игнорируется, работает int16
2. Отключаю галочку с Float, работает int32.
3. Отключаю галочку с int32, работает int24
4. Отключаю галочку с int24, работает int16
5. Аналогично и в обратном порядке, все форматы вывода аудио работают (я проверил каждый из них)

Проверка без GX (GX выключен):

Вижу что:

1. Float полностью работает нормально
2. Отключаю галочку с Float, работает int32.
3. Отключаю галочку с int32, работает int24
4. Отключаю галочку с int24, работает int16
5. Аналогично и в обратном порядке, все форматы вывода аудио работают (я проверил каждый из них)

Итоговый вывод:

Вот теперь смело можно сказать - это ПОБЕДА! ;) Все проблемы полностью устранены! :)
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 18 февраля 2020, 05:50:43
Единственное что странно - то что int16 когда float не пашет. А у меня, если float не поддерживается, то работает формат согласно настройкам, к примеру int32 если галка на нем стоит.

Запусти Debug билд и дай мне его вывод при GX(когда float не пашет).
https://yadi.sk/d/q2GugTbUML6TLg
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 18 февраля 2020, 06:39:46
Aleksoid1978,
ЦитироватьЕдинственное что странно - то что int16 когда float не пашет. А у меня, если float не поддерживается, то работает формат согласно настройкам, к примеру int32 если галка на нем стоит.
Да, странно конечно, хотя я уже решил, что это вы так сделали, типа если Float игнорируется, то работает строго int16, а оказывается нет. Ошибся.
ЦитироватьЗапусти Debug билд и дай мне его вывод при GX(когда float не пашет).
https://yadi.sk/d/q2GugTbUML6TLg
Сделал для вас лог-файл (https://yadi.sk/d/q2xF2ARQbTR15w).

Добавлено: 2020-02-18 06:39:46

Aleksoid1978,
Также, на всякий случай, прилагаю выходной пин аудио переключателя.
Filter : Audio Switcher - CLSID : {18C16B08-6497-420E-AD14-22D21C2CEAB7}

- Connected to:

CLSID: {79376820-07D0-11CF-A24D-0020AFD79767}
Filter: Default DirectSound Device
Pin: Audio Input pin (rendered)

- Connection media type:

Audio: PCM 48000Hz 2.0 chn 1536 kbit/s

AM_MEDIA_TYPE:
majortype: MEDIATYPE_Audio {73647561-0000-0010-8000-00AA00389B71}
subtype: MEDIASUBTYPE_PCM {00000001-0000-0010-8000-00AA00389B71}
formattype: FORMAT_WaveFormatEx {05589F81-C356-11CE-BF01-00AA0055595A}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 8
cbFormat: 18

WAVEFORMATEX:
wFormatTag: 0x0001
nChannels: 2
nSamplesPerSec: 48000
nAvgBytesPerSec: 192000
nBlockAlign: 4
wBitsPerSample: 16
cbSize: 0 (extra bytes)
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 18 февраля 2020, 08:10:01
Да я все вижу. Короче все не просто, очень не просто ))

Добавлено: 2020-02-18 15:10:01

Красиво, чтобы в случае если аудио-рендерер или другой следующий фильтр не поддерживает текущий формат, выбирать из тех что указаны в настройках - не получиться. В таком случае будет всегда(ну почти всегда) fallback 16bit.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 18 февраля 2020, 15:35:54
Aleksoid1978,
ЦитироватьКрасиво, чтобы в случае если аудио-рендерер или другой следующий фильтр не поддерживает текущий формат, выбирать из тех что указаны в настройках - не получиться. В таком случае будет всегда(ну почти всегда) fallback 16bit.
В таком случае, я предлагаю остановиться на вашем последнем четвертом победном варианте.
В целом, он полностью рабочий и исправный. Переключение форматов вывода аудио также работает исправно, пускай и некрасиво, главное что работает и переключает.

Если при GX, снять галочку с Float, то будет работать Int32, затем Int24 и Int16, красиво по цепочке.

Ведь логично же, если Float не смог подключиться, выполняется fallback на int16, что собственно и происходит в моем случае, когда при GX работает сразу же int16, а не int32.

Да, я знаю и прекрасно понимаю, что вы хотели, чтобы при игнорировании Float, работал сразу int32 и далее по цепочке в одну и в другую стороны. Но пусть будет хотя бы так, как есть сейчас. Это в любом случае гораздо лучше, чем вообще сидеть без встроенного аудио переключателя, да еще и с внешним аудио декодером.

Мы уже добились и достигли Победы!

Лично я очень доволен вашей работой и вашими идеями (различными тестовыми вариантами), так как я в вас верил и прекрасно знал, что рано или поздно вы все же найдете решение данной проблемы и вам это удалось!

Меня очень даже устраивает последний результат. Я, как говорится, разберусь, что к чему.

Самое главное, что с настройками плеера и звукового драйвера по умолчанию больше не будет отсутствовать встроенный аудио переключатель и всегда работать только лишь внешний аудио декодер. Именно этого мы и добивались, особенно для простых рядовых пользователей, которые вот так сходу, в отличие от нас, вряд ли бы смогли понять и разобраться что к чему. Как я уже говорил вам ранее, они бы просто стали жаловаться на то, что у них или отсутствуют аудио дорожки, или плеер не переключает аудио дорожки. В этом я уж точно уверен.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Aleksoid1978 от 19 февраля 2020, 02:24:34
Пробуем https://yadi.sk/d/A4eEd2IcQhl9dQ
Должен не int16 - а согласно галкам.
Название: Audio Switcher поломан [Исправлено]
Отправлено: Evgeniy1990 от 19 февраля 2020, 06:20:11
Aleksoid1978,
ЦитироватьПробуем https://yadi.sk/d/A4eEd2IcQhl9dQ
Должен не int16 - а согласно галкам.
Проверил пятый тестовый билд.

Теперь работает строго согласно галочкам в настройках аудио переключателя.

Результаты проверки:

DirectSound:

При GX, вместо Float, работает сразу Int32 и далее по цепочке в одну и другую стороны.
Без GX, работает Float и далее по цепочке в одну и другую стороны.

MPC Audio Renderer (WASAPI):

При GX, вместо Float, работает сразу Int32 и далее по цепочке в одну и другую стороны.
Без GX, вместо Float, работает сразу Int32 и далее по цепочке в одну и другую стороны.

Понятно, что вы пока просто отключили в коде Float для MPC Audio Renderer, для удобства проверки.

Итоговый вывод:

В общем, теперь уж точно окончательно добили (устранили) проблему с переключением форматов вывода аудио, при наличии активного GX. ;)

P.S. Останется только вернуть Float для MPC Audio Renderer (WASAPI), чтобы он работал как при наличии активного GX, так и без него.