lavfi/avf_showspatial: add framerate option

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.
This commit is contained in:
Anton Khirnov 2022-08-16 17:02:11 +02:00
parent 06758370aa
commit a6bf4d47a9
3 changed files with 8 additions and 1 deletions

View File

@ -29337,6 +29337,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}

View File

@ -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);
}

View File

@ -32,7 +32,7 @@
#include "version_major.h"
#define LIBAVFILTER_VERSION_MINOR 49
#define LIBAVFILTER_VERSION_MICRO 100
#define LIBAVFILTER_VERSION_MICRO 101
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \