Aleksoid1978 / VideoRenderer

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

Black screen on some videos, yet Subtitles render normally #94

Closed tealkami closed 11 months ago

tealkami commented 11 months ago

Hi, I noticed that some videos (did find 2 for now) are rendered with black sreen, yet subtitles render normally(so it is a black screen with subtitles and audio), with EVR-CP it renders as it should/normal. VideoRender tested on MPC-HC + MPC-BE same result. Please, what setting is wrong ? and I did search on Github=>VideoRenderer=>issues=>"black" nothing from issues before did look similar to mine issue

Video examples:

Format                         : Matroska
Format version                 : Version 2
File size                      : 553 MiB
Duration                       : 29 min 23 s
Overall bit rate               : 2 628 kb/s
Frame rate                     : 23.976 FPS
Encoded date                   : 2014-11-15 12:47:31 UTC
Writing application            : mkvmerge v7.1.0 ('Good Love') 32bit built on Jul 27 2014 12:59:18
Writing library                : libebml v1.3.0 + libmatroska v1.4.1

Video
ID                             : 1
Format                         : AVC
Format/Info                    : Advanced Video Codec
Format profile                 : High 10@L4.1
Format settings                : CABAC / 4 Ref Frames
Format settings, CABAC         : Yes
Format settings, Reference fra : 4 frames
Codec ID                       : V_MPEG4/ISO/AVC
Duration                       : 29 min 23 s
Width                          : 960 pixels
Height                         : 540 pixels
Display aspect ratio           : 16:9
Frame rate mode                : Constant
Frame rate                     : 23.976 FPS
Color space                    : YUV
Chroma subsampling             : 4:2:0
Bit depth                      : 10 bits
Scan type                      : Progressive
Writing library                : x264 core 142 r2479kMod dd79a61
Encoding settings              : cabac=1 / ref=4 / deblock=1:-1:0 / analyse=0x3:0x113 / me=tesa / subme=9 / psy=0 / mixed_ref=1 / me_range=24 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=0 / threads=3 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=0 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / fgo=0 / bframes=4 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=36 / keyint_min=12 / scenecut=40 / intra_refresh=0 / rc=crf / mbtree=0 / crf=17.0000 / qcomp=0.60 / qpmin=12 / qpmax=40 / qpstep=6 / ip_ratio=1.40 / pb_ratio=1.30 / aq=3:0.70
Default                        : Yes
Forced                         : No
Color range                    : Limited
Color primaries                : BT.601 PAL
Transfer characteristics       : BT.470 System B/G
Matrix coefficients            : BT.470 System B/G
Format                         : Matroska
Format version                 : Version 4 / Version 2
File size                      : 157 MiB
Duration                       : 26 min 42 s
Overall bit rate               : 823 kb/s
Frame rate                     : 23.976 FPS
Encoded date                   : 2017-03-30 17:36:19 UTC
Writing application            : mkvmerge v10.0.0 ('To Drown In You') 64bit
Writing library                : libebml v1.3.4 + libmatroska v1.4.5

Video
ID                             : 1
Format                         : AVC
Format/Info                    : Advanced Video Codec
Format profile                 : High 10@L4
Format settings                : CABAC / 16 Ref Frames
Format settings, CABAC         : Yes
Format settings, Reference fra : 16 frames
Codec ID                       : V_MPEG4/ISO/AVC
Duration                       : 26 min 42 s
Bit rate                       : 660 kb/s
Width                          : 720 pixels
Height                         : 480 pixels
Display aspect ratio           : 16:9
Frame rate mode                : Constant
Frame rate                     : 23.976 (24000/1001) FPS
Color space                    : YUV
Chroma subsampling             : 4:2:0
Bit depth                      : 10 bits
Scan type                      : Progressive
Bits/(Pixel*Frame)             : 0.080
Stream size                    : 126 MiB (80%)
Writing library                : x264 core 133 r2334 a3ac64b
Encoding settings              : cabac=1 / ref=16 / deblock=1:0:0 / analyse=0x3:0x133 / me=umh / subme=11 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=12 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=240 / keyint_min=24 / scenecut=40 / intra_refresh=0 / rc_lookahead=60 / rc=crf / mbtree=1 / crf=16.0 / qcomp=0.60 / qpmin=0 / qpmax=81 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Default                        : Yes
Forced                         : No

Specs: MPC Video Renderer 0.6.9.2117 MPC-HC 2.0 x32 MPC-BE 1.6.8.5 x64 Win10 x64 Ryzen 7 5700G Radeon RX 7600 AMD drivers Adrenalin 23.7.2 (WHQL Recommended)

Settings in files: mpc-be64.ini.txt mpc-hc.ini.txt MPCVideoRenderer.reg.txt

Aleksoid1978 commented 11 months ago

1 - Reset settings. 2 - Show screen with statistics. 3 - Try DX9/DX11. 3 - Texture - try select different values.

tealkami commented 11 months ago

With the same setting I tried DX9/DX11 (VideoRenderer=>on/off "Use Direct3D 11") with DX9 it renders normally , and with DX11 is black Only time when it renders with DX11: "use for resizing" is ON ; "use Dithering" is OFF , but it looks terrible with heavy blockiness(looks like old game which needs some SSAA 16x) Tried clean unziped MPC-BE.1.6.8.5.x64.7z+default VideoRenderer settings, same results. If you mean Textures as the 8/10/16bit, it did nothing.

When I did compare statistic(the one on the screen/video) with other video which work, it was the same, no different text at all. only different text was in VideoRenderer=>Information , "Pin info" was the same

Screen with statistics Screen with statistics

Filters => MPC VideoRenderer => Information

Windows 10
DirectX 9
Graphics adapter: AMD Radeon RX 7600 (1002:7480)
VideoProcessor  : DXVA2 ProgressiveDevice
DeinterlaceTech.: none
Display: S2431W 1920x1200 60.000 Hz [Primary] windowed
  Color: RGB 8-bit
Windows 10
DirectX 11
Graphics adapter: AMD Radeon RX 7600 (1002:7480)
VideoProcessor  : D3D11, RateConversion_0
DeinterlaceTech.: Bob, Adaptive, Motion Compensation, Inverse Telecine
Reference Frames: Past 1, Future 1
Display: S2431W 1920x1200 60.000 Hz [Primary] windowed
  Color: RGB 8-bit
Aleksoid1978 commented 11 months ago

If DX9 is normal - use it's. Look's like it's driver's issue. You can try uncheck NV12/P010 on DX11 and check again.

tealkami commented 11 months ago

NV12 OFF - no effect P010/P16 OFF - show as it should be, no blocks

so it was the P010/P16 Thank you


One more thing : Everyone on phorums did say that Native DX9 is worse, and DX11 doesnt have those problem/is much better; That's why I want to use DX11, and try fix the DX11 before using DX9 so is it still as they write in video quality? DX11 > DX9 ?

clsid2 commented 11 months ago

I have seen this issue before with a few AMD GPU models, even with older driver versions. So please submit a bug report to AMD.

Video quality is usually same between DX9 and DX11. Assuming same scaler is used. Any quality difference is due to bugs or post-processing options in the driver that you need to turn off. Mostly an issue with Intel that has stuff enabled by default.

@Aleksoid1978 May I suggest the following to fine-tune the default settings for better compatibility and user experience. It is easy to implement and might save you a lot of headaches with support questions.

On first load and after settings reset, do this once:

  1. Create DX11 device instance and gather VendorID+DeviceID. If that fails, switch to DX9 and get the IDs there.
  2. Based on the IDs, have small internal list to override any problematic setting for such device. Start with the example above. Other devices with issues can be added in future. I have some written down somewhere.

Since it just affects the initial defaults, users can always still adjust settings themselves later to test if things are fixed through driver updates.

But such list would be very useful particularly for older devices which do not have proper DX11 support on Windows 10/11. And devices with long standing driver bugs.

djsolidsnake86 commented 10 months ago

i have a 4070ti sometimes happen using mpc video renderer and mpc hc (all from klite codeck pack full) that hdr movie start without no video output (all black) and only sound also sometimes happen this when vieving the hdr movie and changing mpc from windowed to full screen and viceversa anyone know that is the cause of this and how can be fixed? thanks

v0lt commented 10 months ago

There is a possible solution in this thread. Read and try.

tealkami commented 3 months ago

Update : They did fix black screen, but... now it is too bright.

It's Something


Today I was like "Did AMD fix that bug ?", so I did check AMF, and there were 2 updates after this issue(written lower). So now with new AMD drivers Adrenalin 24.3.1 (WHQL) did retest it, with the same MPC versions as before MPC Video Renderer 0.6.9.2117 + MPC-HC 2.0 x32 / MPC-BE 1.6.8.5 x64, so only the AMD driver were different

Version 1.4.33: AMD Radeon Software Adrenalin Edition 24.1.1 (23.40.02) or newer. Added native DX12 support for encoding and PreAnalysis. Switched to public Vulkan Khronos extensions for decoder. AMF on Linux can now be used with AMD Pro Vulkan, and experimentally with RADV drivers.

Version 1.4.32: AMD Radeon Software Adrenalin Edition 23.12.1 (23.30.13.01) or newer. Added new FRC component and API doc. Added new VQEnhancer doc. Improved presenters. Updated FFmpeg to 6.0.


This time I did try to turn off Format Conversion=>Output formats P010 +/ P016 (Options=>Internal Filters=>Video Decoders=>Video Decoder configuration) If I did turn only one P010 or P016 , the "too bright" bug would still appear, but if I did turn off both P010+P016, then it would "fix" it too, and the status in left bottom would change from output format:P010=>output format:P210

and I did upload some picture example: Proper image Too bright

clsid2 commented 3 months ago

Instead of unchecking in video decoder and force conversion, it is better to uncheck P010/P016 in MPCVR to fallback to shader processing.

Was black screen fixed already in 23.12.1 or since 24.1.1?

I saw a report for RX 580 where it was still broken with 24.3.1