Signed-off-by: Marton Balint <c...@passwd.hu> --- doc/filters.texi | 4 ++-- libavfilter/f_ebur128.c | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/doc/filters.texi b/doc/filters.texi index 53f4cb2..713989c 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -10146,8 +10146,8 @@ activated. Default is @code{0}. @item size Set the video size. This option is for video only. For the syntax of this -option, check the "Video size" section in the ffmpeg-utils manual. Default -and minimum resolution is @code{640x480}. +option, check the "Video size" section in the ffmpeg-utils manual. The default +resolution is @code{640x480}, the minimum is @code{480x102}. @item meter Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and diff --git a/libavfilter/f_ebur128.c b/libavfilter/f_ebur128.c index c18ae79..8780062 100644 --- a/libavfilter/f_ebur128.c +++ b/libavfilter/f_ebur128.c @@ -114,6 +114,7 @@ typedef struct { int scale_range; ///< the range of LU values according to the meter int y_zero_lu; ///< the y value (pixel position) for 0 LU int *y_line_ref; ///< y reference values for drawing the LU lines in the graph and the gauge + int line_step; ///< LU steps for drawn lines /* audio */ int nb_channels; ///< number of channels in the input @@ -257,9 +258,9 @@ static int config_video_output(AVFilterLink *outlink) AVFrame *outpicref; /* check if there is enough space to represent everything decently */ - if (ebur128->w < 640 || ebur128->h < 480) { + if (ebur128->w < 480 || ebur128->h < 102) { av_log(ctx, AV_LOG_ERROR, "Video size %dx%d is too small, " - "minimum size is 640x480\n", ebur128->w, ebur128->h); + "minimum size is 480x102\n", ebur128->w, ebur128->h); return AVERROR(EINVAL); } outlink->w = ebur128->w; @@ -285,6 +286,9 @@ static int config_video_output(AVFilterLink *outlink) ebur128->graph.w = ebur128->gauge.x - ebur128->graph.x - PAD; ebur128->graph.h = ebur128->gauge.h; + /* compute line step based on graph height and needed lines */ + ebur128->line_step = (ebur128->scale_range * 8 - 1) / (ebur128->graph.h) + 1; + /* graph and gauge share the LU-to-pixel code */ av_assert0(ebur128->graph.h == ebur128->gauge.h); @@ -309,8 +313,9 @@ static int config_video_output(AVFilterLink *outlink) for (i = ebur128->meter; i >= -ebur128->meter * 2; i--) { y = lu_to_y(ebur128, i); x = PAD + (i < 10 && i > -10) * 8; - ebur128->y_line_ref[y] = i; + ebur128->y_line_ref[y] = ((i % ebur128->line_step == 0) ? i : 0); y -= 4; // -4 to center vertically + if (i % ebur128->line_step == 0) drawtext(outpicref, x, y + ebur128->graph.y, FONT8, font_colors+3, "%c%d", i < 0 ? '-' : i > 0 ? '+' : ' ', FFABS(i)); } -- 2.1.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel