Commit b0e2f4a7 authored by Nicolas George's avatar Nicolas George

lavfi/concat: implement unsafe mode.

parent c4a36b6f
...@@ -4643,6 +4643,9 @@ streams in each segment. Default is 1. ...@@ -4643,6 +4643,9 @@ streams in each segment. Default is 1.
Set the number of output audio streams, that is also the number of video Set the number of output audio streams, that is also the number of video
streams in each segment. Default is 0. streams in each segment. Default is 0.
@item unsafe
Activate unsafe mode: do not fail if segments have a different format.
@end table @end table
The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
......
...@@ -42,6 +42,7 @@ typedef struct { ...@@ -42,6 +42,7 @@ typedef struct {
unsigned cur_idx; /**< index of the first input of current segment */ unsigned cur_idx; /**< index of the first input of current segment */
int64_t delta_ts; /**< timestamp to add to produce output timestamps */ int64_t delta_ts; /**< timestamp to add to produce output timestamps */
unsigned nb_in_active; /**< number of active inputs in current segment */ unsigned nb_in_active; /**< number of active inputs in current segment */
unsigned unsafe;
struct concat_in { struct concat_in {
int64_t pts; int64_t pts;
int64_t nb_frames; int64_t nb_frames;
...@@ -64,6 +65,9 @@ static const AVOption concat_options[] = { ...@@ -64,6 +65,9 @@ static const AVOption concat_options[] = {
{ "a", "specify the number of audio streams", { "a", "specify the number of audio streams",
OFFSET(nb_streams[AVMEDIA_TYPE_AUDIO]), OFFSET(nb_streams[AVMEDIA_TYPE_AUDIO]),
AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, A|F}, AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, A|F},
{ "unsafe", "enable unsafe mode",
OFFSET(unsafe),
AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, A|A|F},
{ 0 } { 0 }
}; };
...@@ -143,7 +147,8 @@ static int config_output(AVFilterLink *outlink) ...@@ -143,7 +147,8 @@ static int config_output(AVFilterLink *outlink)
ctx->input_pads[out_no].name, outlink->w, outlink->h, ctx->input_pads[out_no].name, outlink->w, outlink->h,
outlink->sample_aspect_ratio.num, outlink->sample_aspect_ratio.num,
outlink->sample_aspect_ratio.den); outlink->sample_aspect_ratio.den);
return AVERROR(EINVAL); if (!cat->unsafe)
return AVERROR(EINVAL);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment