Очередная поломка DXVA1 [Исправлено]

Автор Evgeniy1990, 25 января 2016, 23:23:05

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

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

Evgeniy1990

Скорее всего, после последних изменений в DXVA1-декодере, перестали корректно воспроизводится (декодироваться) некоторые видео файлы. Сейчас они воспроизводятся некорректно, например первые кадры не декодируются, а просто стоят на месте, Спустя некоторое время, происходит их пропуск и резкий рывок вперед, после чего, частота кадров становится равной примерно 17 FPS, вместо 23.976, которая постепенно увеличивается по мере дальнейшего процесса воспроизведения.

Ссылка на видео файл: https://yadi.sk/i/YIBCtoFWnjKyG

P.S. Если требуется поиск билда, с которого возникла данная поломка, я готов заняться его поисками.

Но пока подозреваю последние изменения в DXVA1-декодере, поскольку уверен на все 100%, что раньше этот видео файл воспроизводился совершенно нормально, при DXVA1.
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

DXVA1 код не изменялся считаем с тех пор как я его переделал. Покажите мне изменения в DXVA1 декодере.
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

Цитата: Aleksoid1978DXVA1 код не изменялся считаем с тех пор как я его переделал. Покажите мне изменения в DXVA1 декодере.
Вы даже не замечаете, как после ваших правок начинают возникать поломки.
Ладно, я поищу билд.
[merge_posts_bbcode]Добавлено: 2016-01-26 15:13:26[/merge_posts_bbcode]

Aleksoid1978

Я сделал видеозапись: https://yadi.sk/i/2llEVWk1nm2fB

Можете посмотреть. На ней показан сам баг, когда после открытия данного видео файла, первые его кадры просто стоят на месте и только спустя несколько секунд начинается сам процесс декодирования в DXVA.

Частота кадров постепенно увеличивается до 23.976.
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

Это на любом файле или только избранные ??

Хочешь - можешь попробовать поискать когда поломка появилась. Возможно что-то на стороне ffmpeg.
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Это на любом файле или только избранные ??

Хочешь - можешь попробовать поискать когда поломка появилась. Возможно что-то на стороне ffmpeg.

Пока что только на этом файле. Да, его можно назвать избранным, поскольку там используется MBAFF.
Если у вас есть подобные файлы, можете их скинуть, я проверю заодно. Вдруг на них та же беда.

Хорошо, я тогда займусь поисками билда, у меня тоже такое подозрение, что что-то накосячили именно в ffmpeg.
[merge_posts_bbcode]Добавлено: 2016-01-27 16:53:30[/merge_posts_bbcode]

Aleksoid1978

Я приступил к поискам проблемного билда.

Текущие диапазоны (интервалы) поиска:

1. [956 -> 1137]

2. [1026 -> 1137]

3. [1034 -> 1075]

В SVN r1075 уже присутствует баг.
В SVN r1034 бага пока еще нет.

Нужно искать билд, входящий в диапазон (интервал): [1034 -> 1075].
[merge_posts_bbcode]Добавлено: 2016-01-27 17:32:42[/merge_posts_bbcode]

Итак, наш диапазон (интервал) поиска: [1034 -> 1075].

Проверяю билды, входящие в данный диапазон (интервал поиска):

r1036 - ОК!

r1042 - ОК!

r1051 - ОК!

r1055 - ОК!

r1060 - ОК!

r1064 - ОК!

r1067 - ПЛОХО!

r1075 - ПЛОХО!

Итак, внимание! Получил следующий диапазон (интервал) поиска: [1064 -> 1067].

В SVN r1064 - бага нет.
В SVN r1067 - баг уже есть, появился и присутствует до сих пор.

[merge_posts_bbcode]Добавлено: 2016-01-27 17:42:33[/merge_posts_bbcode]

Вот изменения, сделанные в SVN r1065, 1066 и 1067.
Спойлер
[r1067] by aleksoid

Изменение : Корректировка ffmpeg и DXVA2 декодер для предотвращения выполнения лишнего кода.

2015-12-29 07:06:15    Tree

[r1066] by aleksoid

Изменение : Корректировка(частичный откат) предыдущей ревизии. Переделка способа обработки изменения размера кадра DXVA2 декодером.

2015-12-29 06:22:30    Tree

[r1065] by aleksoid

Изменение : Небольшие корректировки кода работы DXVA2 декодера с ffmpeg данными.

2015-12-29 04:30:02    Tree
[свернуть]
Все три этих изменения являются некорректными.

Несмотря на то, что они были сделаны именно для DXVA2-декодера, они также повлияли и на DXVA1-декодер.

Самым проблемным является изменение r1066 - изменение размера кадра.

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

Отсюда и следует, что причиной является изменение r1066.

P.S. Вот, пожалуйста, ссылка на скриншот: https://yadi.sk/i/ajyBQaOcnpwQJ

Обратите на начальный размер кадра видео - он просто огромный.
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

Можешь запустить мои debug билды и выложить лог-файл с рабочего ??
Так же - в момент что на скрине на паузе выложить PinInfo от видео-рендерера.
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Можешь запустить мои debug билды и выложить лог-файл с рабочего ??
Так же - в момент что на скрине на паузе выложить PinInfo от видео-рендерера.
Эти - https://yadi.sk/d/SjcQ9yeJnp3Hn и https://yadi.sk/d/1WTDFKAqnp9qV ?

Если так, то проверю, запущу этот избранный видео файл и выложу вам лог-файл и PinInfo видео-рендерера.
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Проверить надо на обоих последних.
Ок, понятно.

Проверил избранный видео файл на двух последних тестовых отладочных билдах:

mpc-be.exe.Debug.20160127
mpc-be.exe.Debug.20160127_2


Прилагаю:

1. Все лог-файлы по первому отладочному билду: https://yadi.sk/d/gcTWMGLknrLXb
2. Все лог-файлы по второму отладочному билду: https://yadi.sk/d/sFT4lXhAnrLoR
[merge_posts_bbcode]Добавлено: 2016-01-28 09:59:14[/merge_posts_bbcode]

Aleksoid1978

Также прилагаю PinInfo видео-рендерера:
Спойлер
Filter : Video Mixing Renderer 7 - CLSID : {B87BEB7B-8D29-423F-AE4D-6582C10175AC}
Module : C:\\WINDOWS\\system32\\quartz.dll

- Connected to:

CLSID: {008BAC12-FBAF-497B-9670-BC6F6FBAE2C4}
Filter: MPC Video Decoder
Pin: Output

- Connection media type:

Video: dxva 1280x736 (16:9) 23.976fps

AM_MEDIA_TYPE:
majortype: MEDIATYPE_Video {73646976-0000-0010-8000-00AA00389B71}
subtype: DXVA_ModeH264_E {1B81BE68-A0C7-11D3-B984-00C04F2E73C5}
formattype: FORMAT_VideoInfo2 {F72A76A0-EB0A-11D0-ACE4-0000C0CC16BA}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 1382400
cbFormat: 112

VIDEOINFOHEADER:
rcSource: (0,0)-(1280,720)
rcTarget: (0,0)-(1280,720)
dwBitRate: 0
dwBitErrorRate: 0
AvgTimePerFrame: 417083

VIDEOINFOHEADER2:
dwInterlaceFlags: 0x00000081
dwCopyProtectFlags: 0x00000000
dwPictAspectRatioX: 16
dwPictAspectRatioY: 9
dwControlFlags: 0x00000000
dwReserved2: 0x00000000

BITMAPINFOHEADER:
biSize: 40
biWidth: 1280
biHeight: 736
biPlanes: 1
biBitCount: 12
biCompression: dxva
biSizeImage: 1413120
biXPelsPerMeter: 0
biYPelsPerMeter: 0
biClrUsed: 0
biClrImportant: 0
[свернуть]
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

А можно PinInfo с работающей версии.
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А можно PinInfo с работающей версии.
Можно конечно, последняя рабочая версия билда r1064, пожалуйста:
Спойлер
Filter : Video Mixing Renderer 7 - CLSID : {B87BEB7B-8D29-423F-AE4D-6582C10175AC}
Module : C:\\WINDOWS\\system32\\quartz.dll

- Connected to:

CLSID: {008BAC12-FBAF-497B-9670-BC6F6FBAE2C4}
Filter: MPC Video Decoder
Pin: Output

- Connection media type:

Video: dxva 1280x736 (16:9) 23.976fps

AM_MEDIA_TYPE:
majortype: MEDIATYPE_Video {73646976-0000-0010-8000-00AA00389B71}
subtype: DXVA_ModeH264_E {1B81BE68-A0C7-11D3-B984-00C04F2E73C5}
formattype: FORMAT_VideoInfo2 {F72A76A0-EB0A-11D0-ACE4-0000C0CC16BA}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 1382400
cbFormat: 112

VIDEOINFOHEADER:
rcSource: (0,0)-(1280,720)
rcTarget: (0,0)-(1280,720)
dwBitRate: 0
dwBitErrorRate: 0
AvgTimePerFrame: 417083

VIDEOINFOHEADER2:
dwInterlaceFlags: 0x00000081
dwCopyProtectFlags: 0x00000000
dwPictAspectRatioX: 16
dwPictAspectRatioY: 9
dwControlFlags: 0x00000000
dwReserved2: 0x00000000

BITMAPINFOHEADER:
biSize: 40
biWidth: 1280
biHeight: 736
biPlanes: 1
biBitCount: 12
biCompression: dxva
biSizeImage: 1413120
biXPelsPerMeter: 0
biYPelsPerMeter: 0
biClrUsed: 0
biClrImportant: 0
[свернуть]
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]Добавлено: 2016-01-28 18:21:09[/merge_posts_bbcode]

Вот проверяем - https://yadi.sk/d/yT7FowBGnrhAe

[merge_posts_bbcode]Добавлено: 2016-01-28 18:24:41[/merge_posts_bbcode]

И еще вот один тестовый ролик с похожей ситуацией(правда тут кодек MPEG2) - https://yadi.sk/d/rBwCI2KtnrhQU

Отличие этих файлов от всех остальных - они немного по хитрому закодированы. У них кодированный размер кадра по высоте и "реальный" размер кадра по высоте - отличаются :)
Вот вроде бы как размер 1280х720 - но закодированный размер 1280х736 :)
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Я кажется понял в чем дело, доберусь до дома - проверю.
[merge_posts_bbcode]Добавлено: 2016-01-28 18:21:09[/merge_posts_bbcode]

Вот проверяем - https://yadi.sk/d/yT7FowBGnrhAe

[merge_posts_bbcode]Добавлено: 2016-01-28 18:24:41[/merge_posts_bbcode]

И еще вот один тестовый ролик с похожей ситуацией(правда тут кодек MPEG2) - https://yadi.sk/d/rBwCI2KtnrhQU

Отличие этих файлов от всех остальных - они немного по хитрому закодированы. У них кодированный размер кадра по высоте и "реальный" размер кадра по высоте - отличаются :)
Вот вроде бы как размер 1280х720 - но закодированный размер 1280х736 :)

Проверил тестовый билд. Вот теперь избранный видео файл в DXVA1 работает нормально, первые кадры декодируются и у них нормальный размер. :)

Проблема устранена! :)

По поводу вашего сэмпла "720p.mpg" - он у меня есть и в нем нет и не было данного бага даже в SVN.
В вашем тестовом билде - аналогично, все в порядке, он воспроизводится нормально.
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.