changeset 3834:d49f55ab650c libavformat

set duration to distinguished value
author bcoudurier
date Sun, 31 Aug 2008 02:46:50 +0000
parents 8b3fdbc81f3e
children b60bdaa5a202
files mxfenc.c
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mxfenc.c	Sun Aug 31 02:41:31 2008 +0000
+++ b/mxfenc.c	Sun Aug 31 02:46:50 2008 +0000
@@ -42,6 +42,7 @@
     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_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 @@
             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, "