changeset 3476:3026020083e8 libavformat

set correct ftyp minor version for 3gp/2
author bcoudurier
date Sun, 15 Jun 2008 01:38:38 +0000
parents 654b3aa1cab4
children 8adaa9258dba
files movenc.c
diffstat 1 files changed, 9 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/movenc.c	Sat Jun 14 21:12:51 2008 +0000
+++ b/movenc.c	Sun Jun 15 01:38:38 2008 +0000
@@ -1379,6 +1379,7 @@
     MOVContext *mov = s->priv_data;
     offset_t pos = url_ftell(pb);
     int has_h264 = 0, has_video = 0;
+    int minor = 0x200;
     int i;
 
     for (i = 0; i < s->nb_streams; i++) {
@@ -1392,11 +1393,13 @@
     put_be32(pb, 0); /* size */
     put_tag(pb, "ftyp");
 
-    if (mov->mode == MODE_3GP)
-        put_tag(pb, has_h264 ? "3gp6":"3gp4");
-    else if (mov->mode & MODE_3G2)
-        put_tag(pb, has_h264 ? "3g2b":"3g2a");
-    else if (mov->mode == MODE_PSP)
+    if (mov->mode == MODE_3GP) {
+        put_tag(pb, has_h264 ? "3gp6"  : "3gp4");
+        minor =     has_h264 ?   0x100 :   0x200;
+    } else if (mov->mode & MODE_3G2) {
+        put_tag(pb, has_h264 ? "3g2b"  : "3g2a");
+        minor =     has_h264 ? 0x20000 : 0x10000;
+    }else if (mov->mode == MODE_PSP)
         put_tag(pb, "MSNV");
     else if (mov->mode == MODE_MP4)
         put_tag(pb, "isom");
@@ -1405,7 +1408,7 @@
     else
         put_tag(pb, "qt  ");
 
-    put_be32(pb, 0x200);
+    put_be32(pb, minor);
 
     if(mov->mode == MODE_MOV)
         put_tag(pb, "qt  ");