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 );
}