In DirectShow video players, e.g. MPC-HC, only TWO renderers can do tone mapping: madVR or MPC Video Renderer. And to pass correct HDR data to MPC VR or madVR you have to use "AviSynth Filter" instead of ffdshow.
If for some reason you can't use AviSynth Filter + MPC VR/madVR then there's a compatibility option - an SVP's own tone mapping implementation. It's much simpler but at least it makes HDR movies watchable.SVP menu -> Application settings -> Additional options -> Try to recover HDR colors is on by default so it must work "out of the box".
mpv has a lot of options for tone mapping and it also supports 10-bit video so it produces much more accurate image than any DirectShow player with SVP's "color recovery". But is also needs significantly more CPU power, especially in 10-bit colors mode (see SVP menu -> Application settings -> Additional options -> Allow output in 10-bit color depth).
Note that if you run VLC from SVP's menu, it'll be switched to Direct3D9 mode by default, because D3D9 mode is much smoother. To override this set main.setup.vlc.d3d9 to 'false' in SVP's 'All settings' panel.
Digital video is typically encoded in a YUV format. YUV is a family of color spaces (YV12, YUY2, etc), that encode color information (chroma) separately from brightness information (luma). There are two standards for the encoding of luma. For standard-definition TV the standard is BT.601. For high-definition TV the standard is BT.709. Luma values fall in a range. Unfortunately this range is not always the same. There are two commonly used ranges: 0-255 (aka PC levels) and 16-235 (aka TV levels). When converting a YUV colorspace to RGB, the correct standard (BT.601 or BT.709) must be used and the correct range (TV or PC levels) must be used. The above is not always done correctly. It can go wrong with certain combinations of video renderers, video resolutions, and graphics driver settings.
If you are using an old CRT TV or projector, then read the comments at methods 2 and 3. Method #1: Adjusting graphics driver settings NVIDIA Tthe NVIDIA drivers have an option for configuring the luma range. You can find the option here: NVIDIA Control Panel -> Video -> Adjust video color settings -> Select "With the NVIDIA settings" -> Advanced tab -> Set Dynamic Range to "Full (0-255)" ATI The ATI driver requires a Registry tweak. With the tweak applied, the driver will convert TV levels to PC levels for SD resolution video. It already does that by default for HD video. Several ATI driver tweaks can be found at: avsforum. The UseBT601CSC setting is the one related to luminance levels. Note: the above tweak only works with driver version 9.1 and older. ATI removed it in 9.2 and newer. Method #2: Convert to RGB32 with LAV Video decoder Open the settings of LAV Video decoder. In the output formats section, uncheck everything except RGB32 and RGB24.
Method #4: Convert to RGB32 with ffdshow Forcing ffdshow to output in the RGB32 colorspace can help prevent luminance level issues. Downside of this method is that doing this conversion increases CPU usage. To force RGB32 output in ffdshow, you should uncheck all colorspaces except RGB32 on the Output page in ffdshow configuration. It is also recommended to enable "High quality YV12 to RGB conversion".
There are additional options on the RGB conversion page. Recent versions of ffdshow will automatically use the correct settings, so you don't need to worry about them. If you are outputting to a CRT TV or projector (or any other device that expects TV levels as input), then you need to adjust the setting under Output levels on the RGB conversion page. It is configured by default to output to a computer monitor. LCD TVs usually also expect PC levels, just like a computer monitor. Some TVs have an option to choose between Full and Reduced range. Tip: the Profiles/Presets feature in ffdshow can be used to create different sets of settings. You can even auto-load profiles based on conditions like resolution of video format. You could for example create a profile specifically for HD resolution video, and use the 'standard' profile for low resolution videos. Method #5: Levels filter in ffdshow video decoder ffdshow has a special filter for adjusting (luminance) levels. To correct wrong luminance levels for a PC monitor or LCD TV you need to convert to PC levels. To correct wrong levels for a CRT TV, you need to convert to TV levels. To convert from TV levels to PC levels use 16-235 as input range and 0-255 as output range. To convert from PC levels to TV levels use 0-255 as input range and 16-235 as output range. Method #6: Monitor settings Some monitors can be calibrated to assume a certain luminance level as input. Read its manual for the details. Method #7: Resize in software If wrong levels occur only with SD video resolutions and not with high resolutions, then another solution would be to resize the video to your screen resolution before sending it to the video renderer. For example ffdshow can be used for resizing the video.
As usual ehat you are the master at patiently talking me through a problem. However I have immediately hit a snag in that my video renderer is set to ffdshow ( this was set up to solve other issues that you kindly solved for me ) so I don't want to mess with that unless you think I should ?
Hm, what video card do you have in your system? ffdshow only offers one mode of hardware acceleration AFAIK, that being QuickSync - which is specific to Intel graphics cards. If you have an Intel card, you could make use of that and see if it helps (it is easy enough to enable, it is disabled by default). Otherwise, we would have to work out if you could make use of both ffdshow and LAV on your system. You can use both as a general rule - use LAV as the decoder, and ffdshow as a post-processor, but whether it works on a particular system or not depends on how ffdshow is being used on that system (I will have to take a quick look at the older threads of yours, to refresh my memory on your exact use for ffdshow).
Ok, you may be able to make use of QuickSync. We need to see if it is available on your system first. If you open the Start Menu, navigate to All Programs->ffdshow (All Programs is All Apps on Windows 10), and click the Video Decoder Configuration option, the ffdshow configuration dialog will appear. In the Codecs section, find the H264 entry, and click the Decoder field for it, and then click the dropdown arrow that appears. Do you see QuickSync in that listing?
Ok, just for the moment, select the QuickSync entry for H264 - QuickSync in ffdshow is supported for H264, VC1 and MPEG2 I believe (so only those three entries in ffdshow should have the QuickSync option listed). Once you have selected QuickSync, click Ok to exit ffdshow, and then open Zoom Player, and try that video file again - we will see if it has less playback problems.
Thanks. So, you use ffdshow for post-processing - LAV could probably be inserted into the playback chain if necessary in that case, but let's see if the easy solution (QuickSync built-in to ffdshow) works first.
4. In the dialog box that appears, you should see 'ffdshow Video Decoder' is the selected profile. If so, click the 'LAV Video Decoder' profile to select it, then click the 'Advanced' button at the bottom of the dialog box. That will expand the dialog box out, and give you some more options:
5. Click the 'Add Filter' button to the left of the 'Currently Active Decoding Filter' field, scroll down the list, select the 'ffdshow raw video filter', click it to select it, and then click Ok. That will add it to the 'Currently Active Decoding Filter' field, directly under 'LAV Video Decoder'.
6. Now, I believe (not 100% sure though) that the ffdshow raw filter is configured with nothing selected by default - so I don't believe that your sharpen and flip+mirror will be active immediately (it is a different filter to the normal ffdshow video decoder, which you have configured, and should have its own separate configuration). Don't worry about that for the moment - if we can show that this works (and gets your playback working without issue), those two are easily enabled.
7. Click 'Ok', click 'Yes' to the 'profile has been modified' dialog, and then click 'Ok' again to exit back to Zoom. Restart Zoom, and play the same video file. Now, in the right click Filter Properties menu, you should see an entry for 'LAV Video Decoder' and 'ffdshow raw video filter'. Click the 'LAV Video Decoder' entry.
With those changes made, is the video playback now smooth? What we do next depends on the answer to that question (if no, we just swap back to ffdshow alone, if yes, we edit ffdshow raw so that you have sharpen+flip/mirror).
Now, that is interesting. If the file started playing correctly after adding LAV but before enabling hardware acceleration, it suggests to me that your CPU is actually fast enough to handle the file after all. My guess is that ffdshow being not quite as optimised as LAV in certain parts (maybe in regards to multi-threading) was responsible for the problem, and now that LAV is doing the heavy lifting, your system plays the file correctly. Ok, leaving hardware acceleration enabled should not cause any problems, so we will leave it enabled. Two things:
2. My guess is that not all your media files will be H264. At the moment, the change you made will only apply to H264 files, meaning that if you play a 4K file that is not H264 (though I expect that most - if not all - of your 4K files will be H264), Zoom will just use ffdshow alone. That may not be an actual problem - it is possible that H264 files are going to be the only problematic files you encounter. So what I suggest is that we only change H264 at the moment - leave the other profiles alone, and if you ever encounter another file that has a similar problem, we can find out what type of file it is at the time, with a view to changing the Smart Play profile for it as well. 2b1af7f3a8