Индикатор GPU, при софтовом декодировании.
Описание проблемы:
После переделки инициализации аппаратных декодеров, индикатор GPU стал проявляться там, где его быть не должно, т.е. при софтовом декодировании. Это касается только тех видео файлов, которые имеют нечетное разрешение видео.
Алгоритм воспроизведения:
1. Скачать этот видео файл (https://disk.yandex.ru/i/BY8PH1fK2wQYmw)
2. Запустить его
Фактический результат:
Будет присутствовать индикатор (иконка) GPU, при софтовом выходном формате: YV24.
Ожидаемый результат:
Не должен присутствовать индикатор (иконка) GPU, при софтовом выходном формате: YV24.
P.S. Прилагаю также скриншот (https://disk.yandex.ru/i/42_lF3I__YTvfQ), на всякий случай.
Хм, у меня нет иконки GPU. Но в любом случае - это чисто проблема дизайна, просто не перерисовывается тулбар, попробуйте просто немного "ресайзить" окно и иконка должна исчезнуть.
Я подумаю как можно принудительно "отрисовывать" тулбар при изменении HW/soft декодировании.
Проблема со значком со стороны плеера, т.к. определять режим декодера через хуки - очень ненадежный метод.
Можно решить проблему со стороны декодера, выдавая корректный размер. Но подобное Я делал лишь на уровне экспериментов.
Еще можно прикрутить функцию, когда декодер будет выдавать информацию о своем режиме работы.
PS: В багрепорте не прописано: включен ли декодер D3D11, какой видеорендерер, включен ли режим D3D11 в рендерере. Надо написать в первом сообщении.
Тут дело совсем не в хуках, а то что декодер "переходит" в софт чуть позже чем отрисовывается тулбар и рисует/не рисует GPU индикатор. У меня на DX11 + D3D11 декодер нет значка.
Сами режимы - HW/софт корректно задаются, с этим нет никаких проблем. Но "код" по работе с этой информацией никак не привязан ни к основному окну, ни к тулбару - поэтому и такой "рассинхрон" в информации.
Могу попробовать так - отсылать основному окну сообщение а оно уже будет обрисовывать тулбар.
Aleksoid1978
По хукам определяется только факт выполнения конкретной функции и параметры, которые были переданы и получены. После чего делается предположение о том, что декодер будет работать в аппаратном режиме. Это именно предположение, поэтому о 100% надежности речи не идет.
Речь вообще не про то.
Цитата: Aleksoid1978 от 27 марта 2021, 11:41:46Могу попробовать так - отсылать основному окну сообщение а оно уже будет обрисовывать тулбар.
Будет очень странно делать костыль в видеорендерере ради "проблемы"
с кривым файлом, которая наблюдается только у
Evgeniy1990.
Я за доработку декодера. Но лучше вообще забить на этот файл.
Evgeniy1990,
Интересный у вас файл. Иконки GPU нет ни на intelhd4000, ни на gt730m, 100% софт-декодер подключается c MPC-VR. C MadVR и EVR подключается всегда DXVA2.
MPCfan
Файл совершенно неинтересный, он просто кривой. Вместо того чтобы выкинуть его, Evgeniy1990 уже в третий раз находит с ним "баги".
Почему файл кривой можно понять, прочитав статью Recommended 8-Bit YUV Formats for Video Rendering (https://docs.microsoft.com/ru-ru/windows/win32/medfound/recommended-8-bit-yuv-formats-for-video-rendering) и разобравшись в особенности форматов YUV 4:2:0 на примере NV12.
Народ, я же написал - тут дело не в декодере или в рендерере, чисто визуальная- тулбар не перерисовывался вот GPU и мог остаться
Aleksoid1978
У меня проблемы нет.
Через EVR-CP проигрывается аппаратно, значок GPU присутсвует.
Через MPC VR проигрывается программно, значок GPU отсутствует.
when using LAV splitter, the damaged file can be played in hw decoding with mpc VR
at least on intel, that's so.
У меня проблем тоже нет.
V0lt,
ЦитироватьВместо того чтобы выкинуть его, Evgeniy1990 уже в третий раз находит с ним "баги".
Да, он хоть и кривой, но в тоже время является еще и специфическим. А это уже отдельная категория видео файлов. Вот поэтому я периодически их проверяю. Такие файлы нужно беречь.
Aleksoid1978,
ЦитироватьНо в любом случае - это чисто проблема дизайна, просто не перерисовывается тулбар, попробуйте просто немного "ресайзить" окно и иконка должна исчезнуть.
ЦитироватьНарод, я же написал - тут дело не в декодере или в рендерере, чисто визуальная- тулбар не перерисовывался вот GPU и мог остаться
"Проблема дизайна..." Да уж, вот чего я действительно не ожидал услышать. Если бы это была визуальная проблема, я бы наверняка об этом написал бы в своем первом посте (баг-репорте).
V0lt,
ЦитироватьУ меня проблемы нет.
Через EVR-CP проигрывается аппаратно, значок GPU присутсвует.
Через MPC VR проигрывается программно, значок GPU отсутствует.
MPCfan,
ЦитироватьИнтересный у вас файл. Иконки GPU нет ни на intelhd4000, ни на gt730m, 100% софт-декодер подключается c MPC-VR. C MadVR и EVR подключается всегда DXVA2.
Aleksoid1978,
ЦитироватьУ меня проблем тоже нет.
Браво! Теперь я скажу свое слово - у меня тоже проблем нет, но только на видеокартах от NVIDIA.
На ATI/AMD-видеокартах, на данном видео файле, будет присутствовать индикатор (иконка) GPU, при софтовом декодировании.
Aleksoid1978,
Цитироватьтут дело не в декодере или в рендерере, чисто визуальная-
Если бы это было именно так... Посмотрите
краткую видеозапись (https://disk.yandex.ru/i/7k-Bm0A2axWWiw).
Хорошо, проблема не дизайна. Но у меня ее нет, так что помочь не могу. Да и это такая мелочь.
P.S. Обновляемся и проверяем.
Aleksoid1978,
ЦитироватьP.S. Обновляемся и проверяем.
Собрал и проверил SVN r6131. К сожалению, ваши изменения не помогли. Индикатор GPU так и остался на этом видео файле, при софтовом декодировании.
А это вообще странно, т.к. теперь на этом файле декодер даже не пытается создавать DXVA2/D3D11 декодирование. Даже и не знаю откуда оно там появляется :)
https://yadi.sk/i/EMpLKPAgzdJJbw В данном случае с этим файлом всё корректно?
Мне кажется, здесь какой-то бред. Просто с этим файлом у драйверов разных вендоров крышу сносит.
MPCfan,
Цитироватьhttps://yadi.sk/i/EMpLKPAgzdJJbw В данном случае с этим файлом всё корректно?
У вас, в данном случае, все корректно, т.к. у вас используется DXVA2-CB Direct.
ЦитироватьМне кажется, здесь какой-то бред. Просто с этим файлом у драйверов разных вендоров крышу сносит.
Дело вовсе не в драйверах, а в нашем встроенном MPC Video Decoder. В отличие от LAV Video Decoder, с ним включается индикатор GPU на ATI/AMD-видеокартах. От используемых конфигураций тут не зависит.
Aleksoid1978,
ЦитироватьА это вообще странно, т.к. теперь на этом файле декодер даже не пытается создавать DXVA2/D3D11 декодирование. Даже и не знаю откуда оно там появляется
Логи не помогут?
MPCfan,
С LAV Video Decoder никаких проблем нет. Он корректно выдает используемые аппаратные режимы декодирования.
Пример 1, включен DXVA2 Native, при воспроизведении Active decoder: avcodec, индикатора GPU нет - все правильно и корректно.
Пример 2, включен DXVA2 CB-Direct, при воспроизведении Active decoder: dxva2cb, индикатор GPU есть - все правильно и корректно.
Evgeniy1990,
У меня точно также с Lav, но и со встроенными всё корректно, в смысле со значком GPU
MPCfan,
Теперь наш встроенный MPC Video Decoder:
Пример 1, включен DXVA2 (H.264), при воспроизведении Active decoder: avcodec (YV24), индикатор GPU есть - неправильно и некорректно.
Пример 2, выключен DXVA2 (H.264), при воспроизведении Active decoder: avcodec (YV24), индикатора GPU нет - все правильно и корректно.
Вот в чем разница. Т.е. у нас индикатора GPU не будет только лишь в том случае, если мы сами выключим DXVA2 для H.264 на видеокартах ATI/AMD Radeon.
Да блин забейте уже на это.
Если кто не хочет забить - отладчик в руки и вперёд, хватит уже форум забивать:)
MPCfan,
Наш встроенный видео декодер, конкретно на ATI/AMD-видеокартах, любой выходной формат принимает как аппаратный DXVA2, но только на таких вот специфических видео файлах и естественно включает индикатор GPU, что логично, раз он так считает и принимает. Но так быть не должно. Это совершенно неправильно.
При включенном DXVA2 для H.264 и выходном формате YV24 не должно быть индикатора GPU.
Кстати я знаю откуда значок, надо выключить превью. После переделки декодера теперь DXVA опции не контролируются из основной программы и для превью оно включается :)
Aleksoid1978,
ЦитироватьКстати я знаю откуда значок, надо выключить превью. После переделки декодера теперь DXVA опции не контролируются из основной программы и для превью оно включается
Ха, точно. Если я выключу превью, то индикатора GPU не будет. :)
Молодцы, вы нашли причину проявления индикатора GPU, при софтовом декодировании, - это превью.
Aleksoid1978,
Но я заранее (изначально) знал, что данная проблема была связана с переделкой нашего встроенного видео декодера.
До переделки, было все корректно.
Решим, ничего страшного :)
Aleksoid1978,
Ваши слова " Тут дело совсем не в хуках, а то что декодер "переходит" в софт чуть позже чем отрисовывается тулбар и рисует/не рисует GPU индикатор" точно определяют поведение иконки GPU в данном случае > https://yadi.sk/i/V2Mq62wvLV30eg
Парадоксально, но это ещё один нюанс с отрисовкой, который нельзя поймать с FastStone Capture. Только внешней камерой.
Нюанс проявляется с EVR и MadVR, и только со встроенными фильтрами. C Lav фильтрами иконка не отрисовывается.
Цитата: MPCfan от 28 марта 2021, 12:34:14
Aleksoid1978,
Ваши слова " Тут дело совсем не в хуках, а то что декодер "переходит" в софт чуть позже чем отрисовывается тулбар и рисует/не рисует GPU индикатор" точно определяют поведение иконки GPU в данном случае > https://yadi.sk/i/V2Mq62wvLV30eg
Парадоксально, но это ещё один нюанс с отрисовкой, который нельзя поймать с FastStone Capture. Только внешней камерой.
Нюанс проявляется с EVR и MadVR, и только со встроенными фильтрами. C Lav фильтрами иконка не отрисовывается.
Я так понимаю это тот сэмпл, который HEVC 10-bit. Вот про это я и говорил - в будущем, получается для встроенного декодера, переделаю. При обновлении "DXVA статуса" - наличие иконки GPU будет корректно перерисовываться.
Aleksoid1978,
Да, именно он самый. А ему подобных(кривых) в раздачах оказывается не так уж и мало.
В r6137 прикрутил к декодеру свойство "decode_mode":
0 - nothing
1 - software
2 - dxva2
3 - d3d11
...
Теперь есть возможность в любой момент со 100% точностью узнавать режим декодера.
V0lt, Aleksoid1978,
Собрал и проверил SVN r6137. Теперь нет индикатора GPU, при софтовом декодировании, при наличии использования превью.
Вы молодцы! Устранили сразу две проблемы (http://forum.ru-board.com/topic.cgi?forum=5&topic=50690&start=480#11), точнее убили одним выстрелом сразу двух зайцев. :)