Color_trc comparison

This is comparing a png file written with different ICC profiles (i.e. the underlying data is identical in all png files), and comparing it to mp4's where the only change is the -color_trc flag setting. The code to generate these files is here. You can reorder the wedges to help with comparison by drag and drop.

raw png png

srgb png png

rec1886 png png

raw mp4

-color_trc 1 = bt709 mp4

ffmpeg -r 1 -y -i ./greyramp/greyscale-raw.png -sws_flags spline+accurate_rnd+full_chroma_int -vf "scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709" -c:v libx264 -pix_fmt yuv420p -qscale:v 1 -color_range tv -colorspace bt709 -color_primaries bt709 -color_trc bt709 ./greyramp/greyscale-rec709.mp4

-color_trc 2 = unknown mp4

ffmpeg -r 1 -y -i ./greyramp/greyscale-raw.png -sws_flags spline+accurate_rnd+full_chroma_int -vf "scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709" -c:v libx264 -pix_fmt yuv420p -qscale:v 1 -color_range tv -colorspace bt709 -color_primaries bt709 -color_trc unknown ./greyramp/greyscale-unknown.mp4

-color_trc 13 = sRGB mp4

ffmpeg -r 1 -y -i ./greyramp/greyscale-raw.png -sws_flags spline+accurate_rnd+full_chroma_int -vf "scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709" -c:v libx264 -pix_fmt yuv420p -qscale:v 1 -color_range tv -colorspace bt709 -color_primaries bt709 -color_trc iec61966-2-1 ./greyramp/greyscale-srgb.mp4

-color_trc 4 = gamma 2.2 mp4

ffmpeg -r 1 -y -i ./greyramp/greyscale-raw.png -sws_flags spline+accurate_rnd+full_chroma_int -vf "scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709" -c:v libx264 -pix_fmt yuv420p -qscale:v 1 -color_range tv -colorspace bt709 -color_primaries bt709 -color_trc gamma22 ./greyramp/greyscale-gamma22.mp4

-color_trc 5 = gamma 2.8 mp4

ffmpeg -r 1 -y -i ./greyramp/greyscale-raw.png -sws_flags spline+accurate_rnd+full_chroma_int -vf "scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709" -c:v libx264 -pix_fmt yuv420p -qscale:v 1 -color_range tv -colorspace bt709 -color_primaries bt709 -color_trc gamma28 ./greyramp/greyscale-gamma28.mp4

-color_trc 8 = linear mp4

ffmpeg -r 1 -y -i ./greyramp/greyscale-raw.png -sws_flags spline+accurate_rnd+full_chroma_int -vf "scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709" -c:v libx264 -pix_fmt yuv420p -qscale:v 1 -color_range tv -colorspace bt709 -color_primaries bt709 -color_trc linear ./greyramp/greyscale-lin.mp4

gamma 2.4 mov (OSX only) mov

ffmpeg -r 1 -y -i ./greyramp/greyscale-raw.png -c:v libx264 -pix_fmt yuv420p -qscale:v 1 -sws_flags spline+accurate_rnd+full_chroma_int -vf "colorspace=bt709:iall=bt601-6-625:fast=1" -color_range tv -colorspace bt709 -color_primaries bt709 -color_trc unknown -movflags write_colr+write_gama -mov_gamma 2.4 ./greyramp/h264-ffmpeg-gamma24alt.mov