1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-26 19:01:44 +02:00

avfilter/vf_stack: make it possible to stop with shortest stream

Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
Paul B Mahol 2015-11-26 09:56:43 +01:00
parent 9078a694f3
commit a330430238
2 changed files with 11 additions and 1 deletions

View File

@ -7154,6 +7154,10 @@ The filter accept the following option:
@table @option @table @option
@item inputs @item inputs
Set number of input streams. Default is 2. Set number of input streams. Default is 2.
@item shortest
If set to 1, force the output to terminate when the shortest input
terminates. Default value is 0.
@end table @end table
@section hue @section hue
@ -11598,6 +11602,10 @@ The filter accept the following option:
@table @option @table @option
@item inputs @item inputs
Set number of input streams. Default is 2. Set number of input streams. Default is 2.
@item shortest
If set to 1, force the output to terminate when the shortest input
terminates. Default value is 0.
@end table @end table
@section w3fdif @section w3fdif

View File

@ -33,6 +33,7 @@ typedef struct StackContext {
const AVClass *class; const AVClass *class;
const AVPixFmtDescriptor *desc; const AVPixFmtDescriptor *desc;
int nb_inputs; int nb_inputs;
int shortest;
int is_vertical; int is_vertical;
int nb_planes; int nb_planes;
@ -199,7 +200,7 @@ static int config_output(AVFilterLink *outlink)
in[i].time_base = inlink->time_base; in[i].time_base = inlink->time_base;
in[i].sync = 1; in[i].sync = 1;
in[i].before = EXT_STOP; in[i].before = EXT_STOP;
in[i].after = EXT_INFINITY; in[i].after = s->shortest ? EXT_STOP : EXT_INFINITY;
} }
return ff_framesync_configure(&s->fs); return ff_framesync_configure(&s->fs);
@ -222,6 +223,7 @@ static av_cold void uninit(AVFilterContext *ctx)
#define FLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_PARAM #define FLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_PARAM
static const AVOption stack_options[] = { static const AVOption stack_options[] = {
{ "inputs", "set number of inputs", OFFSET(nb_inputs), AV_OPT_TYPE_INT, {.i64=2}, 2, INT_MAX, .flags = FLAGS }, { "inputs", "set number of inputs", OFFSET(nb_inputs), AV_OPT_TYPE_INT, {.i64=2}, 2, INT_MAX, .flags = FLAGS },
{ "shortest", "force termination when the shortest input terminates", OFFSET(shortest), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, .flags = FLAGS },
{ NULL }, { NULL },
}; };