Merge commit 'b89e8759e053792704741d08cbc41c9ac3c7ed63'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 26 Aug 2013 12:31:07 +0000 (14:31 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 26 Aug 2013 12:36:00 +0000 (14:36 +0200)
* commit 'b89e8759e053792704741d08cbc41c9ac3c7ed63':
  mov: Write tmcd extradata

This commit should make no difference as we had tmcd support
already, which is not changed.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/movenc.c

index a46e8f8..2fcdaad 100644 (file)
@@ -1140,9 +1140,30 @@ static int mov_write_video_tag(AVIOContext *pb, MOVTrack *track)
     return update_size(pb, pos);
 }
 
+static int mov_write_rtp_tag(AVIOContext *pb, MOVTrack *track)
+{
+    int64_t pos = avio_tell(pb);
+    avio_wb32(pb, 0); /* size */
+    ffio_wfourcc(pb, "rtp ");
+    avio_wb32(pb, 0); /* Reserved */
+    avio_wb16(pb, 0); /* Reserved */
+    avio_wb16(pb, 1); /* Data-reference index */
+
+    avio_wb16(pb, 1); /* Hint track version */
+    avio_wb16(pb, 1); /* Highest compatible version */
+    avio_wb32(pb, track->max_packet_size); /* Max packet size */
+
+    avio_wb32(pb, 12); /* size */
+    ffio_wfourcc(pb, "tims");
+    avio_wb32(pb, track->timescale);
+
+    return update_size(pb, pos);
+}
+
 static int mov_write_tmcd_tag(AVIOContext *pb, MOVTrack *track)
 {
     int64_t pos = avio_tell(pb);
+#if 1
     int frame_duration = av_rescale(track->timescale, track->enc->time_base.num, track->enc->time_base.den);
     int nb_frames = 1.0/av_q2d(track->enc->time_base) + 0.5;
 
@@ -1162,26 +1183,15 @@ static int mov_write_tmcd_tag(AVIOContext *pb, MOVTrack *track)
     avio_w8(pb, nb_frames);                 /* Number of frames */
     avio_wb24(pb, 0);                       /* Reserved */
     /* TODO: source reference string */
-    return update_size(pb, pos);
-}
+#else
 
-static int mov_write_rtp_tag(AVIOContext *pb, MOVTrack *track)
-{
-    int64_t pos = avio_tell(pb);
     avio_wb32(pb, 0); /* size */
-    ffio_wfourcc(pb, "rtp ");
-    avio_wb32(pb, 0); /* Reserved */
-    avio_wb16(pb, 0); /* Reserved */
-    avio_wb16(pb, 1); /* Data-reference index */
-
-    avio_wb16(pb, 1); /* Hint track version */
-    avio_wb16(pb, 1); /* Highest compatible version */
-    avio_wb32(pb, track->max_packet_size); /* Max packet size */
-
-    avio_wb32(pb, 12); /* size */
-    ffio_wfourcc(pb, "tims");
-    avio_wb32(pb, track->timescale);
-
+    ffio_wfourcc(pb, "tmcd");               /* Data format */
+    avio_wb32(pb, 0);                       /* Reserved */
+    avio_wb32(pb, 1);                       /* Data reference index */
+    if (track->enc->extradata_size)
+        avio_write(pb, track->enc->extradata, track->enc->extradata_size);
+#endif
     return update_size(pb, pos);
 }
 
@@ -1510,10 +1520,10 @@ static int mov_write_minf_tag(AVIOContext *pb, MOVTrack *track)
         } else {
             mov_write_nmhd_tag(pb);
         }
-    } else if (track->tag == MKTAG('t','m','c','d')) {
-        mov_write_gmhd_tag(pb, track);
     } else if (track->tag == MKTAG('r','t','p',' ')) {
         mov_write_hmhd_tag(pb);
+    } else if (track->tag == MKTAG('t','m','c','d')) {
+        mov_write_gmhd_tag(pb, track);
     }
     if (track->mode == MODE_MOV) /* FIXME: Why do it for MODE_MOV only ? */
         mov_write_hdlr_tag(pb, NULL);