[FFmpeg-user] discrepancies in filterchains with yuvj material

Dave Rice dave at dericed.com
Thu Sep 25 17:18:04 CEST 2014

Hi all,

This issue arose on the github issue tracker for QCTools https://github.com/bavc/qctools/issues/36 (which is a GUI to utilize ffmpeg's signalstats filter as well as apply certain filterchain's in video playback to facilitate video analysis). Downloads here: http://bavc.org/qctools

Matthias supplied a yuvj420p h264 at https://www.dropbox.com/s/gxv9ycr1lbmh0wu/70D_lumarange.mov?dl=0 and some filters express the video in a range of 0-255 while others express it in a range of ~16-235.

To find the maximum Y value I can run it through signaltstats to get that value:

ffprobe -f lavfi movie=70D_lumarange.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX
ffprobe version 2.3.3 Copyright (c) 2007-2014 the FFmpeg developers
  built on Sep 22 2014 21:58:44 with Apple LLVM version 6.0 (clang-600.0.51) (based on LLVM 3.5svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.3.3 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-libfreetype --enable-ffplay --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags='-I/usr/local/Cellar/openjpeg/1.5.1_1/include/openjpeg-1.5 '
  libavutil      52. 92.100 / 52. 92.100
  libavcodec     55. 69.100 / 55. 69.100
  libavformat    55. 48.100 / 55. 48.100
  libavdevice    55. 13.102 / 55. 13.102
  libavfilter     4. 11.100 /  4. 11.100
  libavresample   1.  3.  0 /  1.  3.  0
  libswscale      2.  6.100 /  2.  6.100
  libswresample   0. 19.100 /  0. 19.100
  libpostproc    52.  3.100 / 52.  3.100
[swscaler @ 0x7fa4b2004a00] deprecated pixel format used, make sure you did set range correctly
Input #0, lavfi, from 'movie=70D_lumarange.mov,signalstats':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 50k tbn, 50k tbc

But if I run the video through the histogram filter such as: 

ffplay 70D_lumarange.mov -vf "histogram=mode=waveform:waveform_mode=column:waveform_mirror=1,crop=iw:256:0:0"

then the output video shows values plotted for the entire 0-255 range implying that YMAX the greater y value per frame) should actually equal 255. Obviously one filter is incorrect or there is distinct extra processing that affects yuvj material between these two commands that I would like to change.

I've tried playing with -color_range before and after the input to no affect,  but I am trying to figure out what the actual maximum Y value is for the sample file and then how to get each filter (signalstats and histogram) to show that result consistently.

Thanks much,
Dave Rice

More information about the ffmpeg-user mailing list