[FFmpeg-devel] [PATCH] lavfi: add drawgraph filter

Dave Rice dave at dericed.com
Sat Jun 27 16:28:59 CEST 2015

> On Jun 27, 2015, at 3:47 AM, Paul B Mahol <onemda at gmail.com> wrote:
> Dana 26. 6. 2015. 21:26 osoba "Dave Rice" <dave at dericed.com> napisala je:
>> Hi,
>>> On Jun 26, 2015, at 11:27 AM, Paul B Mahol <onemda at gmail.com> wrote:
>>> Signed-off-by: Paul B Mahol <onemda at gmail.com>
>>> ---
>>> Waiting for comments and flames.
>> Here are some comments and flames:
>> I noticed that when I set min to a value greater than max. I get a crash
> with "Bus error: 10".
> Good catch, I forgot about checking this.
>> There may be an issue with negative values for min/max. When I run:
>> ffplay -f lavfi -i color=gray -vf
> signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
>> I see a line scroll across the center of the window. When I change min to
> -255 I see a line at ~3/4 down the frame, where I would expect -128 to be.
> Does the min and max expect non-negative numbers.
> It is, but it doesn't draw what you expect. It should start from middle and
> either go up or down.

Not sure I understand ‘start from the middle’ vs min/max. Can you clarify in the documentation.

>> It could be helpful to include equations within foreground, such as:
>> ffplay -i movie.mkv -vf
> "signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255:foreground=if(gt(lavfi.signalstats.YAVG\,128)\,green\,red)"
>> or actually I could probably subsequently use geq to accomplish that.
> Will do, filter does not redraw whole frame it just updates columns so
> different colors for bars/dots make sense in special scenarios.

Updating columns (as opposed to whole frame redraw) was what I was imagining. This would be helpful for showing when a value crosses a particular threshold.

> I planned to do multiple graphs for multiple metadata but perhaps it is
> better to call filter multiple times and then blend frames together…

Yes, I was thinking of asking for that in a comment earlier but also thought calling it multiple times would be better. In many cases one may need different min/max values and it’s likely one would be different foreground values per value, so I think multiple calls would be fine.

>> Can you alias 's' for 'size' as many of the other filters do.
> Will do.
>> This is very helpful, thanks!
> Do you have some other interesting idea worth implementing in filter I'm
> listening.

This drawgraph filter seems like a good way to incorporate features I normal pull from QCTools (http://bavc.org/qctools, http://github.com/bavc/qctools) into a player. In particular I’d like to use drawgraph when running video digitization processes from tape. Currently when going tape-to-file I use a filterchain like this https://github.com/amiaopensource/vrecord/blob/master/vrecord#L219-L256 to show the video with a waveform and vectorscope. I think a flaw in this type of monitoring during digitization is that the user can only observe the current frame. So if something is seen in the corner of the eye (like a tape glitch, SDI spike, quick head clog) the user doesn’t have a chance to review that until the capture is done. With drawgraph incorporated in this the last X seconds of video could be summarized through signalstats data.


>> Dave
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

More information about the ffmpeg-devel mailing list