Log in

View Full Version : Resolution change = Color change ??


doomleox999
7th February 2016, 02:31
Hi everyboy, first of all, english is not my native language so forgive me if I make some mistakes.

I have a very simple question: when I resize with MeGUI a video from 1920x1080 to 1280x720, does the color of the video change because of having less pixels?

Here I leave you an example, 2 video frames, the first one is 1920x816 and the second one is 1280x544 after encoding and rezising with MeGUI (pay attention to her jacket):

http://i.imgur.com/JeZthyk.jpg

http://i.imgur.com/TFfg4Rh.jpg

poisondeathray
7th February 2016, 02:43
I have a very simple question: when I resize with MeGUI a video from 1920x1080 to 1280x720, does the color of the video change because of having less pixels?

No; or at least not to the extent shown in your screenshot

That demonstrates a Rec601/709 mismatch ; ie. there is a problem with your playback and/or method of screenshot taking

doomleox999
7th February 2016, 07:41
there is a problem with your playback and/or method of screenshot taking

I use Media Player Classic to play the files and take the screenshots.

I also have another videos in 1920 and 1280, encoded by someone else, that also show color difference. So I dont think its MY problem.

Sparktank
7th February 2016, 16:22
encoded by someone else

Oops.

hello_hello
7th February 2016, 17:27
I can only give you an example of how it works for me. I use XP and an old nvidia card. Newer versions of Windows and/or a different video card may produce different results (I don't fully understand how it works).

For me, when I play a video with MPC-HC, the choice of colorimetry is based on resolution. High definition should use rec.709 and standard definition should use rec.601 (the colours are slightly different according to the method used to convert the video to RGB on playback). I worked out the rule by which colorimetry is determined for me, and I'm pretty sure for video to display using rec.709, the width must be equal to or greater than 1200 AND the height must be equal to or greater than 578.
The upshot of that is.... a 1280x544 encode, which should display using rec.709, displays using rec.601, but that's a playback issue. It's still encoded correctly.

One way for me to fix the problem is in MPC-HCs options, under Internal Filters. Click the "video decoder" button. Disable all the 8 bit output formats except RGB32 and RGB24. That'll force LAV to convert to RGB and it seems to obey any colorimetry info written to the h264 video stream. It also seems to make better colorimetry choices based on resolution, so a 1280x544 encode should display using the correct colours.

Another option might be to use the MadVR renderer (http://madvr.com/). It should display correctly without LAV converting to RGB but it's been a while since I've used it. The Windows renderers (VMR9 or EVR etc) all seem to work the same way for me.

I'm curious..... anyone using MPC-HC with a newer version of Windows and do you know the resolution at which it switches colorimetry or if it obeys the colorimetry written to the video stream? Does either depend on the renderer used?

doomleox999
8th February 2016, 00:13
One way for me to fix the problem is in MPC-HCs options, under Internal Filters. Click the "video decoder" button. Disable all the 8 bit output formats except RGB32 and RGB24. That'll force LAV to convert to RGB and it seems to obey any colorimetry info written to the h264 video stream. It also seems to make better colorimetry choices based on resolution, so a 1280x544 encode should display using the correct colours.

It worked! Thanks man! Im kinda of a noob in terms of video encoding so I dont quite understand too much of the technicalities, but thats beside the point, thanks again.

hello_hello
8th February 2016, 05:40
Out of curiosity, which version of Windows are you using and what video card? Also, which renderer is MPC-HC using?
(in options, Playback/Output, and it's the DirectShow dropdown list at the top)

Sparktank
8th February 2016, 09:22
If FFDShow is enabled in there anywhere, what are all those settings? Some of them can affect colors/brightness.

hello_hello
10th February 2016, 09:35
It's definitely not an ffdshow filter causing the problem for me. In fact I used ffdshow to work out exactly where the colorimetry changes based on resolution, by using it to decode a video while it's resize filter resized, and I made note of the width and height required for the colorimetry to change. ffdshow was only decoding and resizing, not converting to RGB.
I've tested it on 1280x544 encodes without ffdshow getting involved. If LAV converts to RGB the colours are correct. The result is the same if ffdshow is decoding though. Disable all output types except RGB and ffdshow will be making the colorimetry choice when it converts to RGB and a 1280x544 encode will display correctly.
Once again though...... I've only tested all this using XP and an Nvidia card.

As a side note.....
If I open an AVS script in MPC-HC it always displays using rec.601. If I enable ffdshow's "raw video" codec, the colorimetry is based on resolution. MPC-HC shows there's different filters involved:

Without ffdshow's raw video codec enabled:
- Video Mixing Renderer 9 (renderless)
- Color Space Converter
- AVI Decompressor (YV12)
- AVI/WAV File Source

With ffdshow's raw video codec enabled:
- Video Mixing Renderer 9 (renderless)
- ffdshow Video Decoder
- AVI/WAV File Source

From what I can work out when ffdshow isn't processing the raw video, the Colour Space Converter converts to RGB and it's oblivious to colorimetry.
I assume that's what's happening but that's XP. Other Windows versions may produce different results.