[FFmpeg-cvslog] movenc: Get rid of a hack for updating the dvc1 atom

Martin Storsjö git at videolan.org
Sat Jan 3 04:07:59 CET 2015


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Mon Dec 29 13:32:21 2014 +0200| [b3b0b35db2f3b61bf2f0f4fa85f5b6267d83c8fe] | committer: Martin Storsjö

movenc: Get rid of a hack for updating the dvc1 atom

Use the more generic approach with the delay_moov flag, instead of
having a update mechanism specific to this one single atom.

Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b3b0b35db2f3b61bf2f0f4fa85f5b6267d83c8fe
---

 libavformat/movenc.c |   20 ++++----------------
 libavformat/movenc.h |    1 -
 2 files changed, 4 insertions(+), 17 deletions(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 9cc43ae..75c2d27 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -447,9 +447,11 @@ static int mov_write_dvc1_structs(MOVTrack *track, uint8_t *buf)
 
     if (track->start_dts == AV_NOPTS_VALUE) {
         /* No packets written yet, vc1_info isn't authoritative yet. */
-        /* Assume inline sequence and entry headers. This will be
-         * overwritten at the end if the file is seekable. */
+        /* Assume inline sequence and entry headers. */
         packet_seq = packet_entry = 1;
+        av_log(NULL, AV_LOG_WARNING,
+               "moov atom written before any packets, unable to write correct "
+               "dvc1 atom. Set the delay_moov flag to fix this.\n");
     }
 
     unescaped = av_mallocz(track->vos_len + FF_INPUT_BUFFER_PADDING_SIZE);
@@ -525,7 +527,6 @@ static int mov_write_dvc1_tag(AVIOContext *pb, MOVTrack *track)
 
     avio_wb32(pb, track->vos_len + 8 + sizeof(buf));
     ffio_wfourcc(pb, "dvc1");
-    track->vc1_info.struct_offset = avio_tell(pb);
     avio_write(pb, buf, sizeof(buf));
     avio_write(pb, track->vos_data, track->vos_len);
 
@@ -4088,19 +4089,6 @@ static int mov_write_trailer(AVFormatContext *s)
         }
     }
 
-    for (i = 0; i < mov->nb_streams; i++) {
-        if (mov->flags & FF_MOV_FLAG_FRAGMENT &&
-            mov->tracks[i].vc1_info.struct_offset && s->pb->seekable) {
-            int64_t off = avio_tell(pb);
-            uint8_t buf[7];
-            if (mov_write_dvc1_structs(&mov->tracks[i], buf) >= 0) {
-                avio_seek(pb, mov->tracks[i].vc1_info.struct_offset, SEEK_SET);
-                avio_write(pb, buf, 7);
-                avio_seek(pb, off, SEEK_SET);
-            }
-        }
-    }
-
 error:
     mov_free(s);
 
diff --git a/libavformat/movenc.h b/libavformat/movenc.h
index 8b1084e..682820e 100644
--- a/libavformat/movenc.h
+++ b/libavformat/movenc.h
@@ -129,7 +129,6 @@ typedef struct MOVTrack {
     unsigned    frag_info_capacity;
 
     struct {
-        int64_t struct_offset;
         int     first_packet_seq;
         int     first_packet_entry;
         int     packet_seq;



More information about the ffmpeg-cvslog mailing list