changeset 3816:50bdbde13ecf libavformat

move per track code in mxf_write_header to be able to check for unsupported configuration
author bcoudurier
date Sat, 30 Aug 2008 23:47:58 +0000
parents af8d6067206e
children 22831cc65a35
files mxfenc.c
diffstat 1 files changed, 14 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/mxfenc.c	Sat Aug 30 23:43:14 2008 +0000
+++ b/mxfenc.c	Sat Aug 30 23:47:58 2008 +0000
@@ -702,27 +702,9 @@
 
 static int mxf_write_header_metadata_sets(AVFormatContext *s)
 {
-    AVStream *st;
-    MXFStreamContext *sc = NULL;
-    int i;
-
     mxf_write_preface(s);
     mxf_write_identification(s);
     mxf_write_content_storage(s);
-
-    for (i = 0; i < s->nb_streams; i++) {
-        st = s->streams[i];
-        sc = av_mallocz(sizeof(MXFStreamContext));
-        if (!sc)
-            return AVERROR(ENOMEM);
-        st->priv_data = sc;
-        // set pts information
-        if (st->codec->codec_type == CODEC_TYPE_VIDEO)
-            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);
-    }
-
     mxf_build_structural_metadata(s, MaterialPackage);
     mxf_build_structural_metadata(s, SourcePackage);
     return 0;
@@ -774,6 +756,20 @@
     MXFContext *mxf = s->priv_data;
     ByteIOContext *pb = s->pb;
     int64_t header_metadata_start, offset_now;
+    int i;
+
+    for (i = 0; i < s->nb_streams; i++) {
+        AVStream *st = s->streams[i];
+        MXFStreamContext *sc = av_mallocz(sizeof(MXFStreamContext));
+        if (!sc)
+            return AVERROR(ENOMEM);
+        st->priv_data = sc;
+        // set pts information
+        if (st->codec->codec_type == CODEC_TYPE_VIDEO)
+            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);
+    }
 
     mxf_write_partition(s, 0, 1, header_partition_key);