[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
[FRAME]
TAG:lavfi.signalstats.YMAX=235
[/FRAME]
[...]
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