Краткое описание проблемы:
Обнаружил поломку в работе аппаратного деинтерлейса на интерлейсных MPEG-2-видео файлах в софте и DXVA.
Условия:
1. Любые интерлейсные MPEG-2-видео файлы
2. Видео-рендерер: VMR-9 RL
3. Опция "Режим VMR Mixer" для работы аппаратного деинтерлейса
Алгоритм воспроизведения:
1. Выбрать VMR-9 RL
2. Включить опцию "VMR Mixer"
3. Запустить любой интерлейсный MPEG-2-видео файл
Фактический результат: при воспроизведении наблюдается сильная нагрузка, пропуски кадров, частота кадров = 36 - 38 FPS, вместо реальных 50, если видео файл имел изначально 25 FPS.
Ожидаемый результат: любые интерлейсные MPEG-2 видео файлы должны воспроизводится нормально на VMR-9 RL, если включен режим VMR Mixer.
Скриншот: https://yadi.sk/i/O1MIFrN_sDsCf
Проверь на другом декодере, на обычном vmr9.
Мы ничего там не трогали да и вообще-то не управляем этим процессом.
[merge_posts_bbcode]Добавлено: 2016-06-03 18:14:24[/merge_posts_bbcode]
Проверь на другом формате, том же H264.
Цитата: Aleksoid1978Проверь на другом декодере, на обычном vmr9.
Мы ничего там не трогали да и вообще-то не управляем этим процессом.
[merge_posts_bbcode]Добавлено: 2016-06-03 18:14:24[/merge_posts_bbcode]
Проверь на другом формате, том же H264.
Я нашел интервал и изменения из-за которого возникла поломка.
Вот интервал:
[1508 - 1510]В
SVN r1508- бага нет.
В
SVN r1510 - поломка уже присутствует.
[merge_posts_bbcode]Добавлено: 2016-06-03 11:48:28[/merge_posts_bbcode]
Поломалась работа именно на VMR-9 RL, поскольку были переделки флага Rotation.
Начиная с SVN r1509 и выше из-за этих переделок теперь некорректно работает аппаратный деинтерлейс на данном видео-рендерере.
Не на WinXP тоже ??
[merge_posts_bbcode]Добавлено: 2016-06-03 20:16:59[/merge_posts_bbcode]
Проверил на Win10 - все хорошо.
http://i.imgur.com/MaKQoTj.jpg
А этого и достаточно :)
Aleksoid1978Поломалось только на Windows XP.
Дело в том, что мы теперь имеем обратную ситуацию, если раньше была огромная нагрузка при работе флага Rotation, то теперь наоборот, при работе аппаратного деинтерлейса у нас высокая нагрузка, особенно на сам плеер, его интерфейс, если попробовать развернуть видео файл на полный экран, а затем свернуть, то также видно, как он ломается, а изображение с трудом подстраивается под него.
Цитата: Aleksoid1978А этого и достаточно.
Что значит достаточно? Давайте все-таки устраним поломку, тем более перед выходом релиз-версии.
Aleksoid1978
Хочешь прикол? :)
(http://s017.radikal.ru/i406/1606/6a/3eda39abfcedt.jpg) (http://s017.radikal.ru/i406/1606/6a/3eda39abfced.png)
Частота не удваивается, а увеличиваться вплоть до частоты обновления монитора.
Не знаю почему так.
Проверил на Windows 7 видео-рендерер VMR-9 RL+ VMR Mixer на некоторых интерлейсных видео файлах.
Реально, бред какой-то, частота скачет, как безумная, изображение "рвется".
Это я проверил на ATI HD5770.
[merge_posts_bbcode]Добавлено: 2016-06-03 13:38:28[/merge_posts_bbcode]
И эта "страшная" поломка идет с SVN r1509. Я уж думал, сейчас BSOD словлю, частота улетает за 75 -80 FPS.
Я проверил на Win10. У меня еще правда включен VSync - но на любом интерлейс файле все как положено частота удваивается.
Если надо - дайте свои файлы, покажите настройки раздела видео. Я сравню и проверю у себя.
Но я как-то за это не переживаю - потому что на Win7 и выше нормальный человек не будет использовать VMR7/9, а после релиза и вовсе не будет всех этих рендереров. А что там с WinXP - не особо волнует. Может и жестко - но зато честно.
[merge_posts_bbcode]Добавлено: 2016-06-03 20:44:43[/merge_posts_bbcode]
Если уж так сильно надо - для релиза убрать все эти переделки с поворотом для VMR9r да и все.
Цитата: Aleksoid1978Я проверил на Win10. У меня еще правда включен VSync - но на любом интерлейс файле все как положено частота удваивается.
Если надо - дайте свои файлы, покажите настройки раздела видео. Я сравню и проверю у себя.
Но я как-то за это не переживаю - потому что на Win7 и выше нормальный человек не будет использовать VMR7/9, а после релиза и вовсе не будет всех этих рендереров. А что там с WinXP - не особо волнует. Может и жестко - но зато честно.
[merge_posts_bbcode]Добавлено: 2016-06-03 20:44:43[/merge_posts_bbcode]
Если уж так сильно надо - для релиза убрать все эти переделки с поворотом для VMR9r да и все.
Я предлагаю откатить изменения с поворотом для VMR-9 RL, ибо поломка довольно серьезная.
V0lt, может быть вы сможете разобраться в чем дело? Ведь вам все же удалось исправить ситуация для Rotation.
Настройки все стандартные, единственное - это включен режим VMR Mixer.
Что значит - честно? Это подло просто напросто.
Ну вам-то естественно плевать на XP, но зато другим пользователям - нет, им будет очень обидно.
Не ожидал, что у вас такое отношение будет к проекту.
Лично я за то, чтобы придерживаться элементарного правила "если что-то поломалось, то это надо исправить" и неважно где и на какой системе, до тех пор, пока поддержка XP присутствует, все поломки, согласно правилу, должны быть исправлены.
По поводу WinXP - ну пользуйся версией та что работает. И вот еще что заметил - проверил на H.264 нет искажений частоты. А вот на MPEG2 да есть - но только на 25i, другие те что есть у меня - 23i/29i корректно.
[merge_posts_bbcode]Добавлено: 2016-06-03 21:06:02[/merge_posts_bbcode]
Вернее так - не каждый сэмпл с 25i так косячит. Есть H264 выдает правильные 50, есть - поднимает до частоты монитора. И H.264 тоже, вот такое странное поведение.
[merge_posts_bbcode]Добавлено: 2016-06-03 21:07:10[/merge_posts_bbcode]
И что еще значит "согласно правилам" - кто их устанавливал ?? А если разработчик не может или просто не хочет - что дальше ?? Все - конец света наступит ...
От поворота ничего не должно измениться. Это как шейдер кадра (до ресайза) добавить.
Тем более на MPEG-2 файлах поворота даже близко нет.
Цитата: V0ltОт поворота ничего не должно измениться. Это как шейдер кадра (до ресайза) добавить.
Тем более на MPEG-2 файлах поворота даже близко нет.
Но ведь видно же, что эти изменения с поворотом, все же вызвали поломку.
[merge_posts_bbcode]Добавлено: 2016-06-03 14:30:38[/merge_posts_bbcode]
Цитата: Aleksoid1978И что еще значит "согласно правилам" - кто их устанавливал ?? А если разработчик не может или просто не хочет - что дальше ?? Все - конец света наступит ...
Их никто не устанавливал, просто нужно поддерживать развитие проекта в стабильном состоянии, т.е. все найденные поломки стараться исправлять, тогда стабильность работы проекта будет гарантирована.
Ведь, в первую очередь, важна именно стабильность работы, чтобы все работало корректно и грамотно.
И именно к стабильности, в первую очередь, необходимо стремиться.
А если следовать вашей логике - "поломали и плевать", то естественно никакую стабильность мы в итоге не получим, проект просто будет "тонуть" в этих поломках.
Цитата: V0ltОт поворота ничего не должно измениться. Это как шейдер кадра (до ресайза) добавить.
Тем более на MPEG-2 файлах поворота даже близко нет.
Ну ты попробуй, ради интереса, полностью убрать тот код что добавил для VMR9r и проверь.
V0lt
Проблема в коде для флага поворота в проектном файле: "MainFrm.cpp"
Именно этот код и вызывает поломку, а также и высокую нагрузку на плеер и его интерфейс, т.е. оболочку основного окна.
Убрал VSync - теперь fps на 25i ровно в раза больше чем надо, 50 -> 100 :)
Причем такое ТОЛЬКО на 25i, да и то не на всех ...
[merge_posts_bbcode]Добавлено: 2016-06-03 22:27:33[/merge_posts_bbcode]
Все - выяснил 100% на чем косячит. Если соотношение сторона у видео потока "разное". Как пример - 720х576 16:9 или 1440х1080 16:9.
Дело вот в этом куске кода
if (VideoSize != m_nativeVideoSize) {
m_aspectRatio.SetSize(arx, ary);
AfxGetApp()->m_pMainWnd->PostMessage(WM_REARRANGERENDERLESS);
}
На таких файлах он выполняется на каждый кадр - а не должен. Сравнение не корректное.
[merge_posts_bbcode]Добавлено: 2016-06-03 22:45:11[/merge_posts_bbcode]
Исправлено в 1559.