avfilter/avf_concat: add next command

This patch makes it possible to dinamically close the current segment
and step to the next one by introducing command handling capabilities
into the filter. This new feature is very usefull when working with
real-time sources or live streams as source. Combinig usage with zmqsend
tool you can interactively end the current segment and step to next one.

Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
This commit is contained in:
Bodecs Bela
2018-02-25 17:07:40 +01:00
committed by Nicolas George
parent 40102a2137
commit d723994449
2 changed files with 22 additions and 0 deletions

View File

@ -418,6 +418,19 @@ static av_cold void uninit(AVFilterContext *ctx)
av_freep(&cat->in);
}
static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
char *res, int res_len, int flags)
{
int ret = AVERROR(ENOSYS);
if (!strcmp(cmd, "next")) {
av_log(ctx, AV_LOG_VERBOSE, "Command received: next\n");
return flush_segment(ctx);
}
return ret;
}
AVFilter ff_avf_concat = {
.name = "concat",
.description = NULL_IF_CONFIG_SMALL("Concatenate audio and video streams."),
@ -429,4 +442,5 @@ AVFilter ff_avf_concat = {
.outputs = NULL,
.priv_class = &concat_class,
.flags = AVFILTER_FLAG_DYNAMIC_INPUTS | AVFILTER_FLAG_DYNAMIC_OUTPUTS,
.process_command = process_command,
};