Aleksoid1978 / VideoRenderer

Внешний видео-рендерер
GNU General Public License v3.0
983 stars 108 forks source link

Deinterlace Picture Quality is not good #153

Closed vdrfan closed 2 months ago

vdrfan commented 2 months ago

hi, how can we see which Deinterlace Method is used. Properties Screen show only all available: DeinterlaceTech.: Bob, Adaptive, Motion Compensation, Inverse Telecine is it posible to force a method? thanks, onur

v0lt commented 2 months ago

how can we see which Deinterlace Method is used.

There is no such possibility.

Properties Screen show only all available: DeinterlaceTech.: Bob, Adaptive, Motion Compensation, Inverse Telecine is it posible to force a method?

There is no such possibility. This is just a list of what the selected video processor can do.

vdrfan commented 2 months ago

i get much better result with software deint. (LAV + Yadif) - but i would prefer MPC Decoder + MPCVR + HW Deinterl. is there a option in AMD Driver Settings to Force a better Deinterlacing Method.

Klaus1189 commented 2 months ago

What GPU do you use?

v0lt commented 2 months ago

https://github.com/Aleksoid1978/VideoRenderer/wiki/Known-Issues

Deinterlacing does not work correctly on some AMD graphics adapters.

Reason: Some AMD graphics adapters require Future Frames for the D3D11 video processor. Currently MPC Video Renderer does not support Future Frames.

vdrfan commented 2 months ago

i use IGPU AMD Ryzen 5 8600G - Radeon 760M, old Vega IGPU(3400G) is working better. is there a plan to supprt Future Frames.

Aleksoid1978 commented 2 months ago

Can you check in other D3D11 video renderers, like in system media player Movies & TV or Kodi, mpv ?

vdrfan commented 2 months ago

@Aleksoid1978 - mvp is terrible even with intel. vlc is ok, MPC-BR with MAD is ok.

i have found following problem: Video Decoder(LAV and MPC tested) cannot use Hardware Accelaration(DXVA2 or D3D11) on AMD(Radeon 760M tested) with certain SD MPEG2 Videos. MPC Video Decoder shows: output format: NV12 - should show D3D11 on Intel System everything is working: output format: D3D11 whit MADVR Picture Quality is OK(AMD and Intel) (?? maybe MAD uses Internal SW Deint. when DXVA2 is not active ??)

testfile: .ts with 50MB https://drive.google.com/file/d/1F_16sZUQodwP8IZAY_nPonYt37J0TJt9/view?usp=drive_link

vdrfan commented 2 months ago

comparison : intel - AMD INTEL: intel

AMD: AMD

clsid2 commented 2 months ago

Madvr does not use D3D11 video processor.

vdrfan commented 2 months ago

@clsid2, yes i know - that was a reason for me to switch to MPC-VR, but Madvr and LAV can play the video optical perfect.

clsid2 commented 2 months ago

Does MPCVR deinterlace work if you use D3D9?

vdrfan commented 2 months ago

@clsid2 i think deinterlace is working but it looks bad (regardless d3d9 or d3d11). i think - main problem is that video decoder is not useing hwaccel on some SD mpeg2 videos. can somebody can check testvideo with AMD rdna graphics. i use Driver Adrenalin 24.4.1

v0lt commented 2 months ago

https://disk.yandex.ru/d/LKPmtavOINaE6w These are test build for testing. In this form, changes are not included in official releases, because video frames in these build are output 1-2 frames late.

No one has been able to implement a correct solution for MPC VR. Therefore, there are no plans for any specific time.

vdrfan commented 2 months ago

thanks V0lt, this build is working. Picture Quaity is much better. is there source code available of this build. master branch from Aleksoid1978 does not have that changes - for Future Frames. 1-2 frames lateness is no problem for me.

v0lt commented 2 months ago

master branch from Aleksoid1978 does not have that changes - for Future Frames.

4.5 years it's been there.

clsid2 commented 2 months ago

Since it is currently disabled, is there a known problem with it? Or was it just considered unneeded? A possible optimization could be to use past/future frames only for interlaced content. Or are past frames needed for normal progressive content?

v0lt commented 2 months ago

Since it is currently disabled, is there a known problem with it?

It was always disabled. And in this state there were no problems. The problem was recently discovered on some modern AMD graphics adapters. If we enable future frame support incorrectly, we will end up with a 1-2 frame delay (and some problems at the beginning of playback) on all graphics adapters.

A possible optimization could be to use past/future frames only for interlaced content. Or are past frames needed for normal progressive content?

Most videos are marked as "possibly interlaced". Frame type marking for each frame occurs in the video decoder. Therefore, in most cases, we create a video processor that supports deinterlacing technologies, even for progressive video.

vdrfan commented 2 months ago

my suggestion make a interface where the decoder or player can activate Future Frames.

Aleksoid1978 commented 2 months ago

No.

clsid2 commented 2 months ago

You know when video is interlaced based on mediatype flags. You can only activate it in that case.

clsid2 commented 2 months ago

Also, future frames can probably be maximized to 1 frame. That should be enough for deinterlacing. An adviced value that is higher than 1 is likely for inverse telecine purposes.

v0lt commented 2 months ago

You know when video is interlaced based on mediatype flags. You can only activate it in that case.

As I said, MPC Video Decoder and Microsoft DTV-DVD Video Decoder create an interlaced media type for most video (including progressive).

Also, future frames can probably be maximized to 1 frame.

This value varies from 0 to 2 for different graphics adapters. I don't have an AMD graphics adapter with this problem to check the different values. On my Nvidia, AMD and Intel graphics cards, deinterlacing works well without future frames.

clsid2 commented 2 months ago

For most video the decoder knows that it is 100% progressive. So using interlaced flags then is just wrong.

The value is to get support for all functionality of RateConvCaps. But in cases where value is >1 it might be enough to use 1 if only deinterlacing capability is used. At least, that is my assumption. That avoids unnecessary long frame delays.

vdrfan commented 2 months ago

whith active Future Frames - do we need to delay Audio to be sync?

Aleksoid1978 commented 2 months ago

If you want improvements in this direction, provide the developers with the appropriate equipment. After this there may be some changes. For now, stop writing here, topic is closed.