[Ffmpeg-cvslog] r6885 - trunk/libavformat/mov.c

bcoudurier subversion
Fri Nov 3 16:02:51 CET 2006


Author: bcoudurier
Date: Fri Nov  3 16:02:51 2006
New Revision: 6885

Modified:
   trunk/libavformat/mov.c

Log:
reintroduce isom field and read version 1 audio stsd only if file is not isom, fix testclip_wrong_version_1_audio_stsd.mp4

Modified: trunk/libavformat/mov.c
==============================================================================
--- trunk/libavformat/mov.c	(original)
+++ trunk/libavformat/mov.c	Fri Nov  3 16:02:51 2006
@@ -285,6 +285,7 @@
     int mdat_count;
     DVDemuxContext *dv_demux;
     AVFormatContext *dv_fctx;
+    int isom; /* 1 if file is ISO Media (mp4/3gp) */
 } MOVContext;
 
 
@@ -405,6 +406,8 @@
 
     dprintf("ctype= %c%c%c%c (0x%08lx)\n", *((char *)&ctype), ((char *)&ctype)[1], ((char *)&ctype)[2], ((char *)&ctype)[3], (long) ctype);
     dprintf("stype= %c%c%c%c\n", *((char *)&type), ((char *)&type)[1], ((char *)&type)[2], ((char *)&type)[3]);
+    if(!ctype)
+        c->isom = 1;
     if(type == MKTAG('v', 'i', 'd', 'e'))
         st->codec->codec_type = CODEC_TYPE_VIDEO;
     else if(type == MKTAG('s', 'o', 'u', 'n'))
@@ -506,6 +509,8 @@
 {
     uint32_t type = get_le32(pb);
 
+    if (type != MKTAG('q','t',' ',' '))
+        c->isom = 1;
     av_log(c->fc, AV_LOG_DEBUG, "ISO: File Type Major Brand: %.4s\n",(char *)&type);
     get_be32(pb); /* minor version */
     url_fskip(pb, atom.size - 8);
@@ -946,7 +951,8 @@
             }
 
             //Read QT version 1 fields. In version 0 theese dont exist
-            dprintf("version =%d\n",version);
+            dprintf("version =%d, isom =%d\n",version,c->isom);
+            if(!c->isom) {
             if(version==1) {
                 sc->sample_size_v1.den = get_be32(pb); /* samples per packet */
                 get_be32(pb); /* bytes per packet */
@@ -962,6 +968,7 @@
                 get_be32(pb); /* bytes per audio packet if constant */
                 get_be32(pb); /* lpcm frames per audio packet if constant */
             }
+            }
 
             bits_per_sample = av_get_bits_per_sample(st->codec->codec_id);
             if (bits_per_sample) {




More information about the ffmpeg-cvslog mailing list