From 65406b0bedb4cbd9ce82aae45994362ec5b01df1 Mon Sep 17 00:00:00 2001 From: Marton Balint Date: Sat, 24 Oct 2015 17:16:11 +0200 Subject: concatdec: add option for adding segment start time and duration metadata Reviewed-by: Nicolas George Signed-off-by: Marton Balint --- libavformat/concatdec.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'libavformat') diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c index 169394122f..297947ccb8 100644 --- a/libavformat/concatdec.c +++ b/libavformat/concatdec.c @@ -62,6 +62,7 @@ typedef struct { int eof; ConcatMatchMode stream_match_mode; unsigned auto_convert; + int segment_time_metadata; } ConcatContext; static int concat_probe(AVProbeData *probe) @@ -318,6 +319,13 @@ static int open_file(AVFormatContext *avf, unsigned fileno) file->file_inpoint = (file->inpoint == AV_NOPTS_VALUE) ? file->file_start_time : file->inpoint; if (file->duration == AV_NOPTS_VALUE && file->outpoint != AV_NOPTS_VALUE) file->duration = file->outpoint - file->file_inpoint; + + if (cat->segment_time_metadata) { + av_dict_set_int(&file->metadata, "lavf.concatdec.start_time", file->start_time, 0); + if (file->duration != AV_NOPTS_VALUE) + av_dict_set_int(&file->metadata, "lavf.concatdec.duration", file->duration, 0); + } + if ((ret = match_streams(avf)) < 0) return ret; if (file->inpoint != AV_NOPTS_VALUE) { @@ -701,6 +709,8 @@ static const AVOption options[] = { OFFSET(safe), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 1, DEC }, { "auto_convert", "automatically convert bitstream format", OFFSET(auto_convert), AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, DEC }, + { "segment_time_metadata", "output file segment start time and duration as packet metadata", + OFFSET(segment_time_metadata), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DEC }, { NULL } }; -- cgit v1.2.3