shithub: aacenc

Download patch

ref: 9417ecea7616bfa43fdd2b84cb2c01ee15766826
parent: b35b33a1fb8c97f9f02c1517a91313d19fec4d24
author: ca5e <ca5e>
date: Sun Dec 14 07:26:09 EST 2003

Gapless MP4 handling method changed again...

--- a/frontend/main.c
+++ b/frontend/main.c
@@ -16,7 +16,7 @@
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * $Id: main.c,v 1.51 2003/12/13 21:58:35 ca5e Exp $
+ * $Id: main.c,v 1.52 2003/12/14 12:25:44 ca5e Exp $
  */
 
 #ifdef _MSC_VER
@@ -638,16 +638,13 @@
             {
 #ifdef HAVE_LIBMP4V2
                 u_int64_t samples_left = total_samples - encoded_samples + delay_samples;
-                MP4Duration dur = 0;
-                if (samples_left > frameSize + delay_samples)
-                    dur = frameSize;
-                else if (samples_left > delay_samples)
-                    dur = samples_left - delay_samples;
+                MP4Duration dur = samples_left > frameSize ? frameSize : samples_left;
+                MP4Duration ofs = encoded_samples > 0 ? 0 : delay_samples;
 
                 if (mp4)
                 {
                     /* write bitstream to mp4 file */
-                    MP4WriteSample(MP4hFile, MP4track, bitbuf, bytesWritten, dur, delay_samples, 1);
+                    MP4WriteSample(MP4hFile, MP4track, bitbuf, bytesWritten, dur, ofs, 1);
                 }
                 else
                 {
@@ -684,6 +681,9 @@
 
 /*
 $Log: main.c,v $
+Revision 1.52  2003/12/14 12:25:44  ca5e
+Gapless MP4 handling method changed again...
+
 Revision 1.51  2003/12/13 21:58:35  ca5e
 Improved gapless encoding
 
--- a/plugins/foo_faac/foo_faac.cpp
+++ b/plugins/foo_faac/foo_faac.cpp
@@ -2,6 +2,7 @@
 // Copyright (C) 2003 Janne Hyv�rinen
 //
 // Changes:
+//  0.4.2 (2003-12-14): Changed the gapless method again
 //  0.4.1 (2003-12-13): Added ctts field writing for MP4 mode
 //  0.4   (2003-12-11): Added support for average bitrate controlling
 //  0.3.5 (2003-10-17): Changed way gapless encoding is handled (iTunes is buggy...)
@@ -36,7 +37,7 @@
 #include <faac.h>
 #include <version.h>
 
-#define FOO_FAAC_VERSION     "0.4.1"
+#define FOO_FAAC_VERSION     "0.4.2"
 
 #define FF_AAC  0
 #define FF_MP4  1
@@ -297,14 +298,16 @@
 
                     if ( bytesWritten > 0 ) {
                         MP4Duration dur = frameSize;
+                        MP4Duration ofs = 0;
 
                         if ( delay_samples > 0 ) {
                             dur = 0;
+                            ofs = delay_samples;
                             delay_samples -= frameSize;
                         }
 
                         if ( create_mp4 ) {
-                            MP4WriteSample ( MP4hFile, MP4track, (const unsigned __int8 *)bitbuf.get_ptr(), bytesWritten, frameSize, 1024 );
+                            MP4WriteSample ( MP4hFile, MP4track, (const unsigned __int8 *)bitbuf.get_ptr(), bytesWritten, frameSize, ofs );
                         } else {
                             m_reader->write ( bitbuf.get_ptr(), bytesWritten );
                         }
@@ -343,12 +346,10 @@
                     break;
                 }
                 else if ( bytesWritten > 0 ) {
-                    MP4Duration dur = 0;
-                    if ( samples_left > frameSize + 1024 ) dur = frameSize;
-                    else if ( samples_left > 1024 ) dur = samples_left - 1024;
+                    MP4Duration dur = samples_left > frameSize ? frameSize : samples_left;
 
                     if ( create_mp4 ) {
-                        MP4WriteSample ( MP4hFile, MP4track, (const unsigned __int8 *)bitbuf.get_ptr(), bytesWritten, dur, 1024 );
+                        MP4WriteSample ( MP4hFile, MP4track, (const unsigned __int8 *)bitbuf.get_ptr(), bytesWritten, dur );
                     } else {
                         m_reader->write ( bitbuf.get_ptr(), bytesWritten );
                     }