From cdedd878c5afac547cecbb5565fcd4509c22677f Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Sun, 31 Aug 2008 02:46:50 +0000 Subject: [PATCH] set duration to distinguished value Originally committed as revision 15095 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/mxfenc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 46f2eb7145..6713f2a9bd 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -42,6 +42,7 @@ typedef struct { UID track_essence_element_key; const UID *essence_container_ul; const UID *codec_ul; + int64_t duration; } MXFStreamContext; typedef struct { @@ -478,13 +479,15 @@ static void mxf_write_track(AVFormatContext *s, AVStream *st, enum MXFMetadataSe static void mxf_write_common_fields(ByteIOContext *pb, AVStream *st) { const MXFDataDefinitionUL *data_def_ul = mxf_get_data_definition_ul(st->codec->codec_type); + MXFStreamContext *sc = st->priv_data; + // find data define uls mxf_write_local_tag(pb, 16, 0x0201); put_buffer(pb, data_def_ul->uid, 16); // write duration mxf_write_local_tag(pb, 8, 0x0202); - put_be64(pb, st->duration); + put_be64(pb, sc->duration); } static void mxf_write_sequence(AVFormatContext *s, AVStream *st, enum MXFMetadataSetType type) @@ -768,6 +771,8 @@ static int mux_write_header(AVFormatContext *s) av_set_pts_info(st, 64, 1, st->codec->time_base.den); else if (st->codec->codec_type == CODEC_TYPE_AUDIO) av_set_pts_info(st, 64, 1, st->codec->sample_rate); + sc->duration = -1; + sc->essence_container_ul = mxf_get_essence_container_ul(st->codec->codec_id, &index); if (!sc->essence_container_ul) { av_log(s, AV_LOG_ERROR, "track %d: could not find essence container ul, "