Recently, I was reading a wiki, dedicated to one popular cartoon show and stumbled upon an interesting problem: frames from the different regional iTunes stores

From left to right: frames from the US iTunes, Australian iTunes and US iTunes version with CC in a video player

As you may see, it's the same frame, but colours are different. So, it makes me wonder: does H.264 standard / MP4 container supports any kind of colour profiles (like, ICC in JPEG) and if yes, does any player support it? And what about DVD/Blu-Ray disks? Or there is no way to watch the same version of any video, as it was shot by it's creators? Thanks. :)

3 Answers 3


No most video formats (nearly all) do not allow custom ICC color profiles to be embedded. (Improvemet/correction: MP4s can have color profiles tagged in the metadata of a video file.) most video on the consumer end is intended for the REC.709 color space. sRGB is similar and uses the same primaries. transcoding (including compressing) will almost always result is a slight shift in color accuracy, saturation, gamma curve, or black and white level shift. This is made worse due to converting between RGB and YCbCr color spaces.

  • I wasn't really satisfied with the first answer and thanks for pointing at Rec.709, so I marked this one as the "accepted" answer. Jul 6, 2014 at 18:27
  • 2
    @OlegKuznetsov - btw, don't feel the need to accept an answer if you don't really feel like the question is fully answered. It's perfectly ok for questions to sit unanswered until an answer can be found. I'm glad Nick's answer was more helpful.
    – AJ Henderson
    Jul 6, 2014 at 20:53

As it was shot by its creators is kind of a nebulous concept, particularly when compression is involved. Color reproduction varies greatly from one device to another and without a calibrated display and a complete chain of color control going back to the source, you aren't going to get exact. Even then, chances are good that somewhere along the line the color spaces won't match up exactly.

It gets even harder when you get in to compression because compression impacts color. Colors are generalized subtly by compression. The more area of an image it can simplify (particularly for things like cartoons) the smaller the image can be. Most likely, the slight color banding that is seen in that frame does not exist in the original, however because H264 groups similar colors together and simplifies them to one, it ends up causing a banding effect to occur.

In short, for a format that is lossy, a color profile isn't going to solve the problem since the color isn't preserved exactly anyway. It might help improve it a little, but there is still going to be color alteration from the compression.

  • 1
    You get banding with video codecs if your bitrate is too low, but they don't produce anything like the systematic differences you see when RGB->yuv used one formula and yuv->RGB used a different one. You can see in the original question the very obvious difference after decoding the lossy-compressed images from iTunes. Jan 15, 2015 at 15:48

h.264 supports various color info in the bitstream. From x264 --fullhelp:

--range <string>        Specify color range ["auto"]
                      - auto, tv, pc.
--colorprim <string>    Specify color primaries ["undef"]
                      - undef, bt709, bt470m, bt470bg, smpte170m,
                        smpte240m, film, bt2020.
--transfer <string>     Specify transfer characteristics ["undef"]
                      - undef, bt709, bt470m, bt470bg, smpte170m,
                        smpte240m, linear, log100, log316,
                        iec61966-2-4, bt1361e, iec61966-2-1,
                        bt2020-10, bt2020-12.
--colormatrix <string>  Specify color matrix setting ["???"]
                      - undef, bt709, fcc, bt470bg, smpte170m,
                        smpte240m, GBR, YCgCo, bt2020nc, bt2020c.
--chromaloc <integer>   Specify chroma sample location (0 to 5) [0].

So I don't think you can embed a custom color profile, but you can indicate which standard one the decoder should use to produce RGB pixel values.

I thought some container formats could hold info on colorspaces, too, but maybe not.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.