[Ffmpeg-cvslog] r5636 - trunk/libavformat/movenc.c

michael subversion
Thu Jul 6 14:17:02 CEST 2006


Author: michael
Date: Thu Jul  6 14:17:01 2006
New Revision: 5636

Modified:
   trunk/libavformat/movenc.c

Log:
vbr requires version=1 and samplesize=0 per QT spec
untested, but if this doesnt work the issue is likely somewhere else, as iam just chaning the random nonsense we do to what the spec says should be done


Modified: trunk/libavformat/movenc.c
==============================================================================
--- trunk/libavformat/movenc.c	(original)
+++ trunk/libavformat/movenc.c	Thu Jul  6 14:17:01 2006
@@ -353,9 +353,11 @@
 static int mov_write_audio_tag(ByteIOContext *pb, MOVTrack* track)
 {
     offset_t pos = url_ftell(pb);
+    int vbr=  track->enc->codec_id == CODEC_ID_AAC ||
+              track->enc->codec_id == CODEC_ID_MP3 ||
+              track->enc->codec_id == CODEC_ID_AMR_NB;
     int version = track->mode == MODE_MOV &&
-        (track->enc->codec_id == CODEC_ID_AAC ||
-         track->enc->codec_id == CODEC_ID_MP3 ||
+        (vbr ||
          track->enc->codec_id == CODEC_ID_PCM_S32LE ||
          track->enc->codec_id == CODEC_ID_PCM_S24LE);
 
@@ -375,9 +377,7 @@
                  to be a good way to get number of bits of audio */
     put_be16(pb, 0x10); /* Reserved */
 
-    if(track->enc->codec_id == CODEC_ID_AAC ||
-       track->enc->codec_id == CODEC_ID_MP3 ||
-       track->enc->codec_id == CODEC_ID_AMR_NB) {
+    if(vbr) {
         put_be16(pb, 0xfffe); /* compression ID (vbr)*/
     } else {
         put_be16(pb, 0); /* compression ID (= 0) */
@@ -387,13 +387,10 @@
     put_be16(pb, 0); /* Reserved */
 
     if(version == 1) { /* SoundDescription V1 extended info */
-        /* Parameters tested on quicktime 6.5, 7 */
-        if (track->enc->codec_id == CODEC_ID_MP3)
-            track->sampleSize = 666;
-        if (track->enc->codec_id == CODEC_ID_AAC)
-            track->sampleSize = 2;
+        if (vbr)
+            track->sampleSize = 0;
         put_be32(pb, track->enc->frame_size); /* Samples per packet */
-        put_be32(pb, track->sampleSize / 2); /* Bytes per packet */
+        put_be32(pb, track->sampleSize / track->enc->channels); /* Bytes per packet */
         put_be32(pb, track->sampleSize); /* Bytes per frame */
         put_be32(pb, 2); /* Bytes per sample */
     }




More information about the ffmpeg-cvslog mailing list