MPC-BE forum

MPC-BE => Баг Репорт / The bug report => Архив / Archive => Тема начата: Evgeniy1990 от 27 марта 2021, 09:38:05

Название: Индикатор GPU, при софтовом декодировании [Исправлено]
Отправлено: Evgeniy1990 от 27 марта 2021, 09:38:05
Индикатор GPU, при софтовом декодировании.

Описание проблемы:

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

Алгоритм воспроизведения:

1. Скачать этот видео файл (https://disk.yandex.ru/i/BY8PH1fK2wQYmw)
2. Запустить его

Фактический результат:

Будет присутствовать индикатор (иконка) GPU, при софтовом выходном формате: YV24.

Ожидаемый результат:

Не должен присутствовать индикатор (иконка) GPU, при софтовом выходном формате: YV24.

P.S. Прилагаю также скриншот (https://disk.yandex.ru/i/42_lF3I__YTvfQ), на всякий случай.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 27 марта 2021, 10:02:44
Хм, у меня нет иконки GPU. Но в любом случае - это чисто проблема дизайна, просто не перерисовывается тулбар, попробуйте просто немного "ресайзить" окно и иконка должна исчезнуть.

Я подумаю как можно принудительно "отрисовывать" тулбар при изменении HW/soft декодировании.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: V0lt от 27 марта 2021, 10:12:43
Проблема со значком со стороны плеера, т.к. определять режим декодера через хуки - очень ненадежный метод.

Можно решить проблему со стороны декодера, выдавая корректный размер. Но подобное Я делал лишь на уровне экспериментов.
Еще можно прикрутить функцию, когда декодер будет выдавать информацию о своем режиме работы.

PS: В багрепорте не прописано: включен ли декодер D3D11, какой видеорендерер, включен ли режим D3D11 в рендерере. Надо написать в первом сообщении.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 27 марта 2021, 10:21:05
Тут дело совсем не в хуках, а то что декодер "переходит" в софт чуть позже чем отрисовывается тулбар и рисует/не рисует GPU индикатор. У меня на DX11 + D3D11 декодер нет значка.
Сами режимы - HW/софт корректно задаются, с этим нет никаких проблем. Но "код" по работе с этой информацией никак не привязан ни к основному окну, ни к тулбару - поэтому и такой "рассинхрон" в информации.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 27 марта 2021, 11:41:46
Могу попробовать так - отсылать основному окну сообщение а оно уже будет обрисовывать тулбар.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: V0lt от 27 марта 2021, 12:10:48
Aleksoid1978
По хукам определяется только факт выполнения конкретной функции и параметры, которые были переданы и получены. После чего делается предположение о том, что декодер будет работать в аппаратном режиме. Это именно предположение, поэтому о 100% надежности речи не идет.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 27 марта 2021, 12:12:45
Речь вообще не про то.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: V0lt от 27 марта 2021, 13:48:22
Цитата: Aleksoid1978 от 27 марта 2021, 11:41:46Могу попробовать так - отсылать основному окну сообщение а оно уже будет обрисовывать тулбар.
Будет очень странно делать костыль в видеорендерере ради "проблемы" с кривым файлом, которая наблюдается только у Evgeniy1990.

Я за доработку декодера. Но лучше вообще забить на этот файл.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: MPCfan от 27 марта 2021, 14:20:12
Evgeniy1990,
Интересный у вас файл. Иконки GPU нет ни на intelhd4000, ни на gt730m, 100% софт-декодер подключается c MPC-VR. C MadVR и EVR подключается всегда DXVA2.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: V0lt от 27 марта 2021, 14:34:29
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.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 27 марта 2021, 14:59:32
Народ, я же написал - тут дело не в декодере или в рендерере, чисто визуальная- тулбар не перерисовывался вот GPU и мог остаться
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: V0lt от 27 марта 2021, 15:18:53
Aleksoid1978
У меня проблемы нет.
Через EVR-CP проигрывается аппаратно, значок GPU присутсвует.
Через MPC VR проигрывается программно, значок GPU отсутствует.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: wanezhiling от 27 марта 2021, 15:28:14
when using LAV splitter, the damaged file can be played in hw decoding with mpc VR

at least on intel, that's so.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 27 марта 2021, 15:55:34
У меня проблем тоже нет.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Evgeniy1990 от 27 марта 2021, 22:01:42
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).
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 28 марта 2021, 03:30:54
Хорошо, проблема не дизайна. Но у меня ее нет, так что помочь не могу. Да и это такая мелочь.

P.S. Обновляемся и проверяем.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Evgeniy1990 от 28 марта 2021, 09:03:01
Aleksoid1978,
ЦитироватьP.S. Обновляемся и проверяем.
Собрал и проверил SVN r6131. К сожалению, ваши изменения не помогли. Индикатор GPU так и остался на этом видео файле, при софтовом декодировании.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 28 марта 2021, 09:36:17
А это вообще странно, т.к. теперь на этом файле декодер даже не пытается создавать DXVA2/D3D11 декодирование. Даже и не знаю откуда оно там появляется :)
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: MPCfan от 28 марта 2021, 10:09:43
https://yadi.sk/i/EMpLKPAgzdJJbw В данном случае с этим файлом всё корректно?
Мне кажется, здесь какой-то бред. Просто с  этим файлом у драйверов разных вендоров крышу сносит.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Evgeniy1990 от 28 марта 2021, 10:16:11
MPCfan,
Цитироватьhttps://yadi.sk/i/EMpLKPAgzdJJbw В данном случае с этим файлом всё корректно?
У вас, в данном случае, все корректно, т.к. у вас используется DXVA2-CB Direct.
ЦитироватьМне кажется, здесь какой-то бред. Просто с  этим файлом у драйверов разных вендоров крышу сносит.
Дело вовсе не в драйверах, а в нашем встроенном MPC Video Decoder. В отличие от LAV Video Decoder, с ним включается индикатор GPU на ATI/AMD-видеокартах. От используемых конфигураций тут не зависит.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Evgeniy1990 от 28 марта 2021, 10:19:14
Aleksoid1978,
ЦитироватьА это вообще странно, т.к. теперь на этом файле декодер даже не пытается создавать DXVA2/D3D11 декодирование. Даже и не знаю откуда оно там появляется
Логи не помогут?
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Evgeniy1990 от 28 марта 2021, 10:32:24
MPCfan,
С LAV Video Decoder никаких проблем нет. Он корректно выдает используемые аппаратные режимы декодирования.

Пример 1, включен DXVA2 Native, при воспроизведении Active decoder: avcodec, индикатора GPU нет - все правильно и корректно.
Пример 2, включен DXVA2 CB-Direct, при воспроизведении Active decoder: dxva2cb, индикатор GPU есть - все правильно и корректно.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: MPCfan от 28 марта 2021, 10:36:11
Evgeniy1990,
У меня точно также с Lav, но и со встроенными всё корректно, в смысле со значком GPU
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Evgeniy1990 от 28 марта 2021, 10:37:48
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.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 28 марта 2021, 10:39:52
Да блин забейте уже на это.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 28 марта 2021, 10:40:36
Если кто не хочет забить - отладчик в руки и вперёд, хватит уже форум забивать:)
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Evgeniy1990 от 28 марта 2021, 10:46:39
MPCfan,
Наш встроенный видео декодер, конкретно на ATI/AMD-видеокартах, любой выходной формат принимает как аппаратный DXVA2, но только на таких вот специфических видео файлах и естественно включает индикатор GPU, что логично, раз он так считает и принимает. Но так быть не должно. Это совершенно неправильно.

При включенном DXVA2 для H.264 и выходном формате YV24 не должно быть индикатора GPU.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 28 марта 2021, 10:47:56
Кстати я знаю откуда значок, надо выключить превью. После переделки декодера теперь DXVA опции не контролируются из основной программы и для превью оно включается :)
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Evgeniy1990 от 28 марта 2021, 10:54:54
Aleksoid1978,
ЦитироватьКстати я знаю откуда значок, надо выключить превью. После переделки декодера теперь DXVA опции не контролируются из основной программы и для превью оно включается
Ха, точно. Если я выключу превью, то индикатора GPU не будет. :)
Молодцы, вы нашли причину проявления индикатора GPU, при софтовом декодировании, - это превью.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Evgeniy1990 от 28 марта 2021, 10:56:42
Aleksoid1978,
Но я заранее (изначально) знал, что данная проблема была связана с переделкой нашего встроенного видео декодера.
До переделки, было все корректно.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 28 марта 2021, 10:57:37
Решим, ничего страшного :)
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: MPCfan от 28 марта 2021, 12:34:14
Aleksoid1978,
Ваши слова " Тут дело совсем не в хуках, а то что декодер "переходит" в софт чуть позже чем отрисовывается тулбар и рисует/не рисует GPU индикатор" точно определяют поведение иконки GPU в данном случае > https://yadi.sk/i/V2Mq62wvLV30eg
Парадоксально, но это ещё один нюанс с отрисовкой, который нельзя поймать с FastStone Capture. Только внешней камерой.
Нюанс проявляется с EVR и MadVR, и только со встроенными фильтрами. C Lav фильтрами иконка не отрисовывается.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Aleksoid1978 от 28 марта 2021, 12:53:37
Цитата: 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 будет корректно перерисовываться.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: MPCfan от 28 марта 2021, 13:07:29
Aleksoid1978,
Да, именно он самый. А ему подобных(кривых) в раздачах оказывается не так уж и мало.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: V0lt от 28 марта 2021, 13:58:31
В r6137 прикрутил к декодеру свойство "decode_mode":
0 - nothing
1 - software
2 - dxva2
3 - d3d11
...
Теперь есть возможность в любой момент со 100% точностью узнавать режим декодера.
Название: Re: Индикатор GPU, при софтовом декодировании
Отправлено: Evgeniy1990 от 28 марта 2021, 17:38:07
V0lt, Aleksoid1978,
Собрал и проверил SVN r6137. Теперь нет индикатора GPU, при софтовом декодировании, при наличии использования превью.
Вы молодцы! Устранили сразу две проблемы (http://forum.ru-board.com/topic.cgi?forum=5&topic=50690&start=480#11), точнее убили одним выстрелом сразу двух зайцев. :)