Wasapi Exclusive искажения при ускорении/замедлении [Исправлено]

Автор Evgeniy1990, 20 октября 2017, 19:43:01

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Aleksoid1978

По поводу рассинхрона при изменении параметров - причину нашел, какой то прикол с конвертором 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.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

Цитата: Aleksoid1978Рассинхрон исправлен в 3026.
Проверил SVN r3026 - рассинхрон, во время переключения режимов WASAPI с Exclusive на Shared и обратно с Shared на Exclusive, при ускоренном, или замедленном воспроизведении, - исправлен.

Осталось исправить основную проблему - рассинхрон и треск звука, при ускоренном, или замедленном воспроизведении в режиме WASAPI: Exclusive, при побитовом выводе на звуковой карте ASUS Xonar DG.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

Пока проверил на встроенном Realtek в материнку, он может выводить 96000 - все отлично при ускорении/замедлении.
[merge_posts_bbcode]Добавлено: 2017-10-23 11:11:07[/merge_posts_bbcode]

Подтверждаю баг на ASUS XONAR DG - при выводе в 96000 ускорение/замедление приводит к искажению звука. Причина совершенно не ясна.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

Цитата: Aleksoid1978Подтверждаю баг на ASUS XONAR DG - при выводе в 96000 ускорение/замедление приводит к искажению звука. Причина совершенно не ясна.

Самое интересное то, что при использовании "Sanear Audio Renderer", данного бага, при побитовом выводе, во время ускоренного/замедленного воспроизведения, не наблюдается.

Может быть это тоже как-то связано с некорректной работой временных меток, во время ускоренного/замедленного воспроизведения, или выводом данных?

Попробуйте, пожалуйста, сравнить код нашего "WASAPI: Exclusive" и "Sanear".
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

Кстати - баг не только с 96000, буквально только что качнул с лоста один из сериалов в 720p, звук там AAC стерео 16бит 48000 - так вот при ускорении/замедлении тоже самое, искажение и рассинхронизация. И именно на этом "долбанном" ASUS. Очень странно ...
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

Цитата: 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".
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

Алгоритмы в рендереры одинаковые для любого железа. Но почему такое поведение именно на этом 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.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

Цитата: 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", хотели как раз проверить этот честный вывод, даже была отдельная тема, но проверять тогда было не на чем. Зато теперь у вас есть такая возможность. :)
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

Как только руки дойдут - возьмусь за проверку.

А то щас на работе хватает кодинга ))
[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
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

Цитата: Aleksoid1978Пробуем тестовый билд(вносил изменения на угад) - https://yadi.sk/d/jLO6a2D03NzXF2
Проверил тестовый билд. Пока не помогло, проблемы - рассинхрон и искажения звука остались.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

Цитата: Aleksoid1978Еще одна попытка - обновил билд.
Проверил обновленный тестовый билд. Пока все также, без изменений, проблемы присутствуют.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215