I have a custom .NET app using the Windows Presentation Foundation MediaElement control to play back MP4/h.264 files, which are flagged BT. 709 and limited range. The adapter is an integrated Intel HD 530 chip. No matter how I set up the driver, I cannot get full range video output. In the screen shot below, you can see that the dark bar to the right of the film is not pure black nor the title pure white compared to the static graphic overlay on the left. They are still at 16-235 range.
The same file plays properly in Windows Media Player, which MediaElement is supposed to be using under the hood. It also plays properly on my dev computer with an Nvidia adapter. I tried bypassing hardware decoding and got the same result. It's beginning to look like a Microsoft fumble, but is there something else I ought to try before I give up and re-encode everything at full range?
[Attachment 49397 - Click to enlarge]
+ Reply to Thread
Results 1 to 4 of 4
In case anyone is following, I discovered that encoding full-range YUV made no difference. There is obviously a problem between MediaElement and Intel Direct3D. I ended up writing a pixel shader to perform the conversion.
Your second remark sound strange - limited quantization is NOK and full quantization range also NOK? One of them should work unless flag interpreted in opposite way... Are you able to prepare test file with incorrectly set flag?
Pixel shader is probably OK on modern HW but on something older it may provide some speed penalty. Also it may be not available on different renderer .
It is very strange indeed. I made a full-range file with FFmpeg and flagged it full-range and MediaElement still played it limited. It makes no difference how the driver is configured, except that if I set input to Full Range, then the problem is twice as bad (as expected). The shader is working fine and this app runs on only one machine, so no problem there. Plus I had an adventure teaching myself to write HLSL!
I will try mis-flagging the file as you suggested and see what happens.
EDIT: Well, that didn't work, either. The MediaElement has other flaky h.264 bugs (like not playing on a second monitor) so I'm not totally surprised. Microsoft must have farmed this piece out to the second-stringers. By the way, it's not a stock Intel video driver. It's HP's version of the driver made for their particular motherboard. Maybe that has something to do with it.
Last edited by JVRaines; 20th Jun 2019 at 17:51.