Тема: "WASAPI Exclusive" - треск и рассинхрон, при ускоренном / замедленном воспроизведении.
Описание проблемы:
При использовании режима "WASAPI: Exclusive", при увеличенной, или уменьшенной скоростях воспроизведения различных видео файлов, можно получить трекс и рассинхрон, поскольку в ускоренном / замедленном режиме, сам звук воспроизводится быстрее / более ускореннее, чем медленнее заявленной увеличенной / уменьшенной скоростях воспроизведения.
То есть, допустим стоит 1.2х, а по факту и слуху - гораздо выше. Отсюда и треск и рассинхрон.
Или наоборот, допустим стоит 0.5х, а по факту и слуху - чуть более ускоренее, нежели замедленнее.
Условия проявления:
1. Треск и рассинхрон проявляются только на встроенном "MPC Audio Renderer" и только в режиме "WASAPI: Exclusive".
2. Особенно хорошо заметно их проявление на видео файлах, содержащих аудио дорожки с частотой выше 48000 Гц (например: 96000 Гц, или 84100 Гц), но это не значит, что их нет на аудио с частотой 48000 Гц и ниже.
Алгоритм воспроизведения (для увеличения скорости воспроизведения):
1. Скачать этот видео файл: https://yadi.sk/d/b6gbyTui3NwBJd
2. В настройках плеера выбрать "MPC Audio Renderer"
3. В настройках "MPC Audio Renderer" выбрать режим "WASAPI: Exclusive"
4. Запустить скаченный видео файл
5. Во время его воспроизведения, увеличить скорость до 1.2х и т.д. выше
Алгоритм воспроизведения (для уменьшения скорости воспроизведения):
1. Скачать этот видео файл: https://yadi.sk/d/b6gbyTui3NwBJd
2. В настройках плеера выбрать "MPC Audio Renderer"
3. В настройках "MPC Audio Renderer" выбрать режим "WASAPI: Exclusive"
4. Запустить скаченный видео файл
5. Во время его воспроизведения, уменьшить скорость до 0.5х и т.д. ниже
Фактический результат:
После увеличения, или наоборот, уменьшения скорости воспроизведения, на данном видео файле будут заметны треск и рассинхрон, во время его воспроизведения.
Ожидаемый результат:
После увеличения, или наоборот, уменьшения скорости воспроизведения, на данном видео файле не должно быть треска и рассинхрона.
Рассинхрона не заметил. Есть искажения звука из-за алгоритма изменяющего скорость звука с сохранением тональности.
Цитата: V0ltРассинхрона не заметил. Есть искажения звука из-за алгоритма изменяющего скорость звука с сохранением тональности.
У меня есть рассинхрон, причем стоит скорость 1.2х, а звук мчится вперед так, что скорость словно гораздо выше.
Отсюда и рассинхрон, т.е. звук бежит быстрее кадров видео.
И в обратную сторону - также. Скорость 0.5х, а звук все-равно бежит быстрее видео.
По поводу тональности - согласен.
Обратите пожалуйста внимание на эту
видеозапись с рассинхроном.
На ней очень хорошо видно, что при скорости всего-то 1.2х, звук мчится и ускоряется просто молниеносно, что совершенно не соответствует скорости 1.2х. И в обратную сторону уменьшения - точно также.
Да и сам звук, при ускоренном воспроизведении, совершенно неестественный, трещащий и режущий какой-то.
Проверил - рассинхрона нет, скорость изменяется как положено. Искажений нет.
Цитата: Aleksoid1978Проверил - рассинхрона нет, скорость изменяется как положено. Искажений нет.
В том-то и дело, что это только у вас. У меня совершенно не так. Проверял на внешней аудиокарте "ASUS Xonar DG".
Я для того и сделал краткую видеозапись, чтобы вы просто обратили внимание, что проблема действительно есть.
В общем, я нашел причину - это опция "
Использовать побитовый вывод".
Если она
включена, то присутствует рассинхрон, звук мчится быстрее видео, даже быстрее скорости 1.2х.
И, естественно, появляется треск (искажения) и звук становится режущим.
Если она
выключена, то рассинхрона нет, скорость меняется, как положения, искажений нет. Т.е. ситуация, как у вас.
В общем, необходимо исправить работу ускоренного воспроизведения, при наличии активной опции "Использовать побитовый вывод." на внешних дискретных аудио картах, наподобие "ASUS Xonar DG".
P.S. На "Sanear Audio Renderer", при использовании режима "WASAPI: Exclusive" и опции побитового вывода "Allow bitstreaming", данной проблемы рассинхрона и искажений звука, при ускоренном, или замедленном воспроизведении нет.
[merge_posts_bbcode]Добавлено: 2017-10-21 05:05:44[/merge_posts_bbcode]
И еще одна проблема:
Если, при ускоренном воспроизведении, переключиться с режима Exclusive на Shared, будет также просто рассинхрон.
И обратно с Shared на Exclusive - аналогично рассинхрон.
Проверьте у себя этот случай, пожалуйста.
А вот в моем случае, если при этом используется "побитовый вывод", который у меня работает некорректно, то при ускоренном воспроизведении, при переключении с одного режима на другой, просто полностью пропадает звук.
Ну ты можешь отправить мне свою внешнюю звуковушку, я проверю и если так оно и есть - постараюсь исправить. А так что - исправлять то и нечего если я не могу воспроизвести.
Цитата: Aleksoid1978Ну ты можешь отправить мне свою внешнюю звуковушку, я проверю и если так оно и есть - постараюсь исправить. А так что - исправлять то и нечего если я не могу воспроизвести.
Проверьте пожалуйста еще одну проблему, которую я описал вам выше. Думаю, что у вас получится ее воспроизвести.
Если, при ускоренном воспроизведении, переключиться с режима Exclusive на Shared, будет также просто рассинхрон.
И обратно с Shared на Exclusive - аналогично рассинхрон.
Ну сразу логичный вопрос - а нафига вообще переключаться на лету с одного режима на другой, да еще и на ускоренном воспроизведении ?? :)
P.S. Покажи статус рендерера при побитовом выводе и без, есть одна мысль.
Цитата: Aleksoid1978Ну сразу логичный вопрос - а нафига вообще переключаться на лету с одного режима на другой, да еще и на ускоренном воспроизведении ?? :)
Ну ведь вы же, в свое время, сделали специально такую возможность переключения на лету между двумя режимами WASAPI - Shared и Exclusive, при обычном воспроизведении (обычной скорости 1.0х), я думаю, что для удобства, особенно это удобно для тестирования, не нужно каждый раз перезапускать видео файл. :)
И тут - аналогично, только уже при ускоренном, или замедленном воспроизведении.
Думаю, что лишним не будет, тем более, что тогда будут доступны все способы воспроизведения, а не только обычное, со скоростью 1.0х. А это - плюс для нашего "MPC Audio Renderer". :)
Цитата: Aleksoid1978P.S. Покажи статус рендерера при побитовом выводе и без, есть одна мысль.
Пожалуйста: Статус рендерера, при побитовом выводе:
https://yadi.sk/i/NQOvlTvP3NwbPuСтатус рендерера, без него:
https://yadi.sk/i/5S-aVhSz3NwbQ4
Ну как я и предполагал, косяк ускоренного воспроизведения при работе с 96 частотой, наверняка либо какой-то баг на стороне ffmpeg фильтра, или изменения работы.
Если можешь - собери debug версию, поускоряй в ней и выложи потом debug лог, возможно там будет что-то полезное.
По поводу рассинхрона - посмотрю как будет время, все там не просто.
Цитата: Aleksoid1978Ну как я и предполагал, косяк ускоренного воспроизведения при работе с 96 частотой, наверняка либо какой-то баг на стороне ffmpeg фильтра, или изменения работы.
Если можешь - собери debug версию, поускоряй в ней и выложи потом debug лог, возможно там будет что-то полезное.
Скорее всего косяк при работе с высокими частотами аудио, начиная с 84100 Гц и выше, особенно с 96000 Гц и выше.
Хорошо, я тогда соберу Debug-билд, поускоряю, в общем, сделаю прогонку, после чего - выложу вам Debug-лог.
Проверил у себя при выводе 96000 - все отлично, никаких искажений/рассинхрона.
По поводу рассинхрона при ускоренном воспроизведении и смены типа вывода - есть такое, посмотрю.
Цитата: Aleksoid1978Проверил у себя при выводе 96000 - все отлично, никаких искажений/рассинхрона.
По поводу рассинхрона при ускоренном воспроизведении и смены типа вывода - есть такое, посмотрю.
Пожалуйста, сделал два лог-файла:
Лог №1:
https://yadi.sk/i/BUDM62sL3NwcxZЛог №2:
https://yadi.sk/i/vhfSUuiR3Nwcxo
Цитата: Evgeniy1990Цитата: Aleksoid1978Проверил у себя при выводе 96000 - все отлично, никаких искажений/рассинхрона.
По поводу рассинхрона при ускоренном воспроизведении и смены типа вывода - есть такое, посмотрю.
Пожалуйста, сделал два лог-файла:
Лог №1: https://yadi.sk/i/BUDM62sL3NwcxZ
Лог №2: https://yadi.sk/i/vhfSUuiR3Nwcxo
Ничего подозрительного. Так что хрен его знает - у меня на 96000 все отлично с ускорением/замедлением.
Цитата: Aleksoid1978Ничего подозрительного. Так что хрен его знает - у меня на 96000 все отлично с ускорением/замедлением.
Очень странно, ибо проблемы присутствуют.
Тогда пока остается только это:
По поводу рассинхрона при ускоренном воспроизведении и смены типа вывода - есть такое, посмотрю.
По поводу рассинхрона при изменении параметров - причину нашел, какой то прикол с конвертором ffmpeg, он просто игнорирует входные временные метки и всегда начинает с нуля. Почитаю поподробнее про работу, возможно так и есть либо я как то не так передаю параметры.
[merge_posts_bbcode]Добавлено: 2017-10-22 20:13:04[/merge_posts_bbcode]
Короче что-то мне не нравиться как оно работает, тупо игнорятся временные метки подаваемые на вход. По крайней мере для аудио фильтров.
Подумываю даже о замене ffmpeg на что-то другое.
[merge_posts_bbcode]Добавлено: 2017-10-22 21:51:46[/merge_posts_bbcode]
Рассинхрон исправлен в 3026.
Цитата: Aleksoid1978Рассинхрон исправлен в 3026.
Проверил SVN r3026 - рассинхрон, во время переключения режимов WASAPI с Exclusive на Shared и обратно с Shared на Exclusive, при ускоренном, или замедленном воспроизведении, - исправлен.
Осталось исправить основную проблему - рассинхрон и треск звука, при ускоренном, или замедленном воспроизведении в режиме WASAPI: Exclusive, при побитовом выводе на звуковой карте ASUS Xonar DG.
Пока проверил на встроенном Realtek в материнку, он может выводить 96000 - все отлично при ускорении/замедлении.
[merge_posts_bbcode]Добавлено: 2017-10-23 11:11:07[/merge_posts_bbcode]
Подтверждаю баг на ASUS XONAR DG - при выводе в 96000 ускорение/замедление приводит к искажению звука. Причина совершенно не ясна.
Цитата: Aleksoid1978Подтверждаю баг на ASUS XONAR DG - при выводе в 96000 ускорение/замедление приводит к искажению звука. Причина совершенно не ясна.
Самое интересное то, что при использовании "Sanear Audio Renderer", данного бага, при побитовом выводе, во время ускоренного/замедленного воспроизведения, не наблюдается.
Может быть это тоже как-то связано с некорректной работой временных меток, во время ускоренного/замедленного воспроизведения, или выводом данных?
Попробуйте, пожалуйста, сравнить код нашего "WASAPI: Exclusive" и "Sanear".
Кстати - баг не только с 96000, буквально только что качнул с лоста один из сериалов в 720p, звук там AAC стерео 16бит 48000 - так вот при ускорении/замедлении тоже самое, искажение и рассинхронизация. И именно на этом "долбанном" ASUS. Очень странно ...
Цитата: Aleksoid1978Кстати - баг не только с 96000, буквально только что качнул с лоста один из сериалов в 720p, звук там AAC стерео 16бит 48000 - так вот при ускорении/замедлении тоже самое, искажение и рассинхронизация. И именно на этом "долбанном" ASUS. Очень странно ...
Верно, баг с любой частотой.
Основные условия:1. Режим "WASAPI: Exclusive Mode"
2. Побитовый вывод, когда частота на входе равна частоте на выходе
3. Ускоренное/замедленное воспроизведение
Причем, проблема не в звуковой карте и даже не в ее драйвере, а именно в нашем коде "MPC Audio Renderer", поскольку при использовании внешнего "Sanear", ее нет.
[merge_posts_bbcode]Добавлено: 2017-10-23 06:23:47[/merge_posts_bbcode]
Вполне возможно, что для дискретных звуковых карт, алгоритм обработки, при таких условиях, несколько иной, нежели чем для интегрированных звуковых карт наподобие "Realtek HD/AC\'97".
Алгоритмы в рендереры одинаковые для любого железа. Но почему такое поведение именно на этом ASUS - не понятно, ибо что на Realtek, на Nvidia - все отлично.
Причина совершенно не ясна.
[merge_posts_bbcode]Добавлено: 2017-10-23 15:12:41[/merge_posts_bbcode]
Выяснил - косячит только ЕСЛИ вывод в 24bit, а именно такой режим поддерживает ASUS XONAR, у него честный 24bit вывод. Если выводить 16bit или float(юзать Shared режим) - то все ок.
Поэтому я и не смог воспроизвести ни на realtek ни на Nvidia - у них у всех режим 24bit padded to 32bit.
Цитата: Aleksoid1978Выяснил - косячит только ЕСЛИ вывод в 24bit, а именно такой режим поддерживает ASUS XONAR, у него честный 24bit вывод. Если выводить 16bit или float(юзать Shared режим) - то все ок.
Поэтому я и не смог воспроизвести ни на realtek ни на Nvidia - у них у всех режим 24bit padded to 32bit.
Так вот в чем дело. Теперь ясно, почему на звуковых картах "ASUS XONAR" проявлялся этот косяк, потому что они могут выводить честный 24 bit. Значит, действительно, есть косяк в коде нашего "MPC Audio Renderer", связанный с выводом честного 24 bit.
[merge_posts_bbcode]Добавлено: 2017-10-23 10:34:10[/merge_posts_bbcode]
P.S. А вам повезло. Теперь у вас есть звуковая карточка с поддержкой вывода честного 24 bit. :)
Помню, что вы раньше, когда писали код для "MPC Audio Renderer", хотели как раз проверить этот честный вывод, даже была отдельная тема, но проверять тогда было не на чем. Зато теперь у вас есть такая возможность. :)
Как только руки дойдут - возьмусь за проверку.
А то щас на работе хватает кодинга ))
[merge_posts_bbcode]Добавлено: 2017-10-23 20:25:18[/merge_posts_bbcode]
Походу где то в конвертации 32 - 24 бита косяки
[merge_posts_bbcode]Добавлено: 2017-10-23 20:46:46[/merge_posts_bbcode]
Пробуем тестовый билд(вносил изменения на угад) - https://yadi.sk/d/jLO6a2D03NzXF2
Цитата: Aleksoid1978Пробуем тестовый билд(вносил изменения на угад) - https://yadi.sk/d/jLO6a2D03NzXF2
Проверил тестовый билд. Пока не помогло, проблемы - рассинхрон и искажения звука остались.
Еще одна попытка - обновил билд.
Цитата: Aleksoid1978Еще одна попытка - обновил билд.
Проверил обновленный тестовый билд. Пока все также, без изменений, проблемы присутствуют.
Исправлено в 3033.