[FFmpeg-devel] [PATCH] lavf/fps: add cmd to force write buf frame
Jai Luthra
me at jailuthra.in
Sun May 3 01:35:47 EEST 2020
Enables writing buffered frames to the outsink using send command api.
This is useful when a lavf user wants to fetch buffered frames without
closing/reopening the filtergraph again and again.
Signed-off-by: Jai Luthra <me at jailuthra.in>
---
libavfilter/vf_fps.c | 36 +++++++++++++++++++++++++++---------
1 file changed, 27 insertions(+), 9 deletions(-)
diff --git a/libavfilter/vf_fps.c b/libavfilter/vf_fps.c
index cf1e36726a..fa856a8f45 100644
--- a/libavfilter/vf_fps.c
+++ b/libavfilter/vf_fps.c
@@ -326,6 +326,23 @@ static int activate(AVFilterContext *ctx)
return FFERROR_NOT_READY;
}
+static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
+ char *res, int res_len, int flags)
+{
+ FPSContext *s = ctx->priv;
+ int ret, again = 0;
+
+ if (!strcmp(cmd, "force_write")) {
+ AVFilterLink *outlink = ctx->outputs[0];
+ ret = write_frame(ctx, s, outlink, &again);
+ if (again)
+ ff_filter_set_ready(ctx, 100);
+ } else
+ ret = AVERROR(ENOSYS);
+
+ return ret;
+}
+
static const AVFilterPad avfilter_vf_fps_inputs[] = {
{
.name = "default",
@@ -344,13 +361,14 @@ static const AVFilterPad avfilter_vf_fps_outputs[] = {
};
AVFilter ff_vf_fps = {
- .name = "fps",
- .description = NULL_IF_CONFIG_SMALL("Force constant framerate."),
- .init = init,
- .uninit = uninit,
- .priv_size = sizeof(FPSContext),
- .priv_class = &fps_class,
- .activate = activate,
- .inputs = avfilter_vf_fps_inputs,
- .outputs = avfilter_vf_fps_outputs,
+ .name = "fps",
+ .description = NULL_IF_CONFIG_SMALL("Force constant framerate."),
+ .init = init,
+ .uninit = uninit,
+ .priv_size = sizeof(FPSContext),
+ .priv_class = &fps_class,
+ .activate = activate,
+ .inputs = avfilter_vf_fps_inputs,
+ .outputs = avfilter_vf_fps_outputs,
+ .process_command = process_command,
};
--
2.26.2
More information about the ffmpeg-devel
mailing list