summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2022-08-16 17:02:11 +0200
committerAnton Khirnov <anton@khirnov.net>2022-08-23 16:51:28 +0200
commitcd9ced7a93570736c2260c3343c472c09c3815fd (patch)
tree9e3cbc95f68a7c08ce20a3c47193fe9672db4f19
parent3cefde7eb5c47fc9a213a2c52aeeb88989c8241e (diff)
lavfi/avf_showspatial: add framerate optionframe_duration
Apparently this option was intended (the context contains a currently-unused frame_rate field), but was never added. This results in the output timebase being unset after config_output(), so the input audio timebase ends up being used for video output, which is clearly wrong. Add an option for setting output video framerate. Also set output frame durations.
-rw-r--r--doc/filters.texi3
-rw-r--r--libavfilter/avf_showspatial.c4
-rw-r--r--libavfilter/version.h2
3 files changed, 8 insertions, 1 deletions
diff --git a/doc/filters.texi b/doc/filters.texi
index 01a359f20f..8a99cebb81 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -29177,6 +29177,9 @@ Default value is @code{hann}.
Set ratio of overlap window. Default value is @code{0.5}.
When value is @code{1} overlap is set to recommended size for specific
window function currently used.
+
+@item rate, r
+Set output framerate.
@end table
@anchor{showspectrum}
diff --git a/libavfilter/avf_showspatial.c b/libavfilter/avf_showspatial.c
index 7807628540..3db4db9af0 100644
--- a/libavfilter/avf_showspatial.c
+++ b/libavfilter/avf_showspatial.c
@@ -62,6 +62,8 @@ static const AVOption showspatial_options[] = {
{ "win_size", "set window size", OFFSET(win_size), AV_OPT_TYPE_INT, {.i64 = 4096}, 1024, 65536, FLAGS },
WIN_FUNC_OPTION("win_func", OFFSET(win_func), FLAGS, WFUNC_HANNING),
{ "overlap", "set window overlap", OFFSET(overlap), AV_OPT_TYPE_FLOAT, {.dbl=0.5}, 0, 1, FLAGS },
+ { "rate", "set video rate", OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str="25"}, 0, INT_MAX, FLAGS },
+ { "r", "set video rate", OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str="25"}, 0, INT_MAX, FLAGS },
{ NULL }
};
@@ -187,6 +189,7 @@ static int config_output(AVFilterLink *outlink)
}
}
+ outlink->frame_rate = s->frame_rate;
outlink->time_base = av_inv_q(outlink->frame_rate);
av_audio_fifo_free(s->fifo);
@@ -253,6 +256,7 @@ static int draw_spatial(AVFilterLink *inlink, AVFrame *insamples)
}
outpicref->pts = av_rescale_q(insamples->pts, inlink->time_base, outlink->time_base);
+ outpicref->duration = 1;
return ff_filter_frame(outlink, outpicref);
}
diff --git a/libavfilter/version.h b/libavfilter/version.h
index f3c1964cac..e8dc144523 100644
--- a/libavfilter/version.h
+++ b/libavfilter/version.h
@@ -32,7 +32,7 @@
#include "version_major.h"
#define LIBAVFILTER_VERSION_MINOR 46
-#define LIBAVFILTER_VERSION_MICRO 103
+#define LIBAVFILTER_VERSION_MICRO 104
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \