lavfi/concat: implement unsafe mode.

This commit is contained in:
Nicolas George 2012-10-25 21:27:41 +02:00
parent c4a36b6f70
commit b0e2f4a757
2 changed files with 9 additions and 1 deletions

View File

@ -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

View File

@ -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[] = {
{ "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)
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);
} }
} }