Commit c3a5702e authored by Paul B Mahol's avatar Paul B Mahol

lavfi: add (a)drawgraph filter

Signed-off-by: 's avatarPaul B Mahol <onemda@gmail.com>
parent 4385a1ce
...@@ -12,6 +12,7 @@ version <next>: ...@@ -12,6 +12,7 @@ version <next>:
- showvolume filter - showvolume filter
- Many improvements to the JPEG 2000 decoder - Many improvements to the JPEG 2000 decoder
- Go2Meeting decoding support - Go2Meeting decoding support
- adrawgraph audio and drawgraph video filter
version 2.7: version 2.7:
......
...@@ -4000,6 +4000,105 @@ drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red ...@@ -4000,6 +4000,105 @@ drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
@end example @end example
@end itemize @end itemize
@section drawgraph, adrawgraph
Draw a graph using input video or audio metadata.
It accepts the following parameters:
@table @option
@item m1
Set 1st frame metadata key from which metadata values will be used to draw a graph.
@item fg1
Set 1st foreground color expression.
@item m2
Set 2nd frame metadata key from which metadata values will be used to draw a graph.
@item fg2
Set 2nd foreground color expression.
@item m3
Set 3rd frame metadata key from which metadata values will be used to draw a graph.
@item fg3
Set 3rd foreground color expression.
@item m4
Set 4th frame metadata key from which metadata values will be used to draw a graph.
@item fg4
Set 4th foreground color expression.
@item min
Set minimal value of metadata value.
@item max
Set maximal value of metadata value.
@item bg
Set graph background color. Default is white.
@item mode
Set graph mode.
Available values for mode is:
@table @samp
@item bar
@item dot
@item line
@end table
Default is @code{line}.
@item slide
Set slide mode.
Available values for slide is:
@table @samp
@item frame
Draw new frame when right border is reached.
@item replace
Replace old columns with new ones.
@item scroll
Scroll from right to left.
@end table
Default is @code{frame}.
@item size
Set size of graph video. For the syntax of this option, check the
@ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
The default value is @code{900x256}.
The foreground color expressions can use the following variables:
@table @option
@item MIN
Minimal value of metadata value.
@item MAX
Maximal value of metadata value.
@item VAL
Current metadata key value.
@end table
The color is defined as 0xAABBGGRR.
@end table
Example using metadata from @ref{signalstats} filter:
@example
signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
@end example
Example using metadata from @ref{ebur128} filter:
@example
ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
@end example
@section drawgrid @section drawgrid
Draw a grid on the input image. Draw a grid on the input image.
...@@ -8639,6 +8738,7 @@ Swap the second and third planes of the input: ...@@ -8639,6 +8738,7 @@ Swap the second and third planes of the input:
ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
@end example @end example
@anchor{signalstats}
@section signalstats @section signalstats
Evaluate various visual metrics that assist in determining issues associated Evaluate various visual metrics that assist in determining issues associated
with the digitization of analog video media. with the digitization of analog video media.
...@@ -11069,6 +11169,7 @@ do not have exactly the same duration in the first file. ...@@ -11069,6 +11169,7 @@ do not have exactly the same duration in the first file.
@end itemize @end itemize
@anchor{ebur128}
@section ebur128 @section ebur128
EBU R128 scanner filter. This filter takes an audio stream as input and outputs EBU R128 scanner filter. This filter takes an audio stream as input and outputs
......
...@@ -117,6 +117,7 @@ OBJS-$(CONFIG_DELOGO_FILTER) += vf_delogo.o ...@@ -117,6 +117,7 @@ OBJS-$(CONFIG_DELOGO_FILTER) += vf_delogo.o
OBJS-$(CONFIG_DESHAKE_FILTER) += vf_deshake.o OBJS-$(CONFIG_DESHAKE_FILTER) += vf_deshake.o
OBJS-$(CONFIG_DETELECINE_FILTER) += vf_detelecine.o OBJS-$(CONFIG_DETELECINE_FILTER) += vf_detelecine.o
OBJS-$(CONFIG_DRAWBOX_FILTER) += vf_drawbox.o OBJS-$(CONFIG_DRAWBOX_FILTER) += vf_drawbox.o
OBJS-$(CONFIG_DRAWGRAPH_FILTER) += f_drawgraph.o
OBJS-$(CONFIG_DRAWGRID_FILTER) += vf_drawbox.o OBJS-$(CONFIG_DRAWGRID_FILTER) += vf_drawbox.o
OBJS-$(CONFIG_DRAWTEXT_FILTER) += vf_drawtext.o OBJS-$(CONFIG_DRAWTEXT_FILTER) += vf_drawtext.o
OBJS-$(CONFIG_ELBG_FILTER) += vf_elbg.o OBJS-$(CONFIG_ELBG_FILTER) += vf_elbg.o
...@@ -237,6 +238,7 @@ OBJS-$(CONFIG_TESTSRC_FILTER) += vsrc_testsrc.o ...@@ -237,6 +238,7 @@ OBJS-$(CONFIG_TESTSRC_FILTER) += vsrc_testsrc.o
OBJS-$(CONFIG_NULLSINK_FILTER) += vsink_nullsink.o OBJS-$(CONFIG_NULLSINK_FILTER) += vsink_nullsink.o
# multimedia filters # multimedia filters
OBJS-$(CONFIG_ADRAWGRAPH_FILTER) += f_drawgraph.o
OBJS-$(CONFIG_AVECTORSCOPE_FILTER) += avf_avectorscope.o OBJS-$(CONFIG_AVECTORSCOPE_FILTER) += avf_avectorscope.o
OBJS-$(CONFIG_CONCAT_FILTER) += avf_concat.o OBJS-$(CONFIG_CONCAT_FILTER) += avf_concat.o
OBJS-$(CONFIG_SHOWCQT_FILTER) += avf_showcqt.o OBJS-$(CONFIG_SHOWCQT_FILTER) += avf_showcqt.o
......
...@@ -133,6 +133,7 @@ void avfilter_register_all(void) ...@@ -133,6 +133,7 @@ void avfilter_register_all(void)
REGISTER_FILTER(DESHAKE, deshake, vf); REGISTER_FILTER(DESHAKE, deshake, vf);
REGISTER_FILTER(DETELECINE, detelecine, vf); REGISTER_FILTER(DETELECINE, detelecine, vf);
REGISTER_FILTER(DRAWBOX, drawbox, vf); REGISTER_FILTER(DRAWBOX, drawbox, vf);
REGISTER_FILTER(DRAWGRAPH, drawgraph, vf);
REGISTER_FILTER(DRAWGRID, drawgrid, vf); REGISTER_FILTER(DRAWGRID, drawgrid, vf);
REGISTER_FILTER(DRAWTEXT, drawtext, vf); REGISTER_FILTER(DRAWTEXT, drawtext, vf);
REGISTER_FILTER(EDGEDETECT, edgedetect, vf); REGISTER_FILTER(EDGEDETECT, edgedetect, vf);
...@@ -252,6 +253,7 @@ void avfilter_register_all(void) ...@@ -252,6 +253,7 @@ void avfilter_register_all(void)
REGISTER_FILTER(NULLSINK, nullsink, vsink); REGISTER_FILTER(NULLSINK, nullsink, vsink);
/* multimedia filters */ /* multimedia filters */
REGISTER_FILTER(ADRAWGRAPH, adrawgraph, avf);
REGISTER_FILTER(AVECTORSCOPE, avectorscope, avf); REGISTER_FILTER(AVECTORSCOPE, avectorscope, avf);
REGISTER_FILTER(CONCAT, concat, avf); REGISTER_FILTER(CONCAT, concat, avf);
REGISTER_FILTER(SHOWCQT, showcqt, avf); REGISTER_FILTER(SHOWCQT, showcqt, avf);
......
This diff is collapsed.
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#include "libavutil/version.h" #include "libavutil/version.h"
#define LIBAVFILTER_VERSION_MAJOR 5 #define LIBAVFILTER_VERSION_MAJOR 5
#define LIBAVFILTER_VERSION_MINOR 19 #define LIBAVFILTER_VERSION_MINOR 20
#define LIBAVFILTER_VERSION_MICRO 100 #define LIBAVFILTER_VERSION_MICRO 100
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment