[Scummvm-cvs-logs] CVS: scummvm/sound mixer.cpp,1.150,1.151 mixer.h,1.69,1.70 mp3.cpp,1.4,1.5 mp3.h,1.3,1.4

Max Horn fingolfin at users.sourceforge.net
Fri Jan 2 16:56:16 CET 2004


Update of /cvsroot/scummvm/scummvm/sound
In directory sc8-pr-cvs1:/tmp/cvs-serv2314

Modified Files:
	mixer.cpp mixer.h mp3.cpp mp3.h 
Log Message:
removed SoundMixer::playMP3CDTrack; simplified makeMP3Stream (special variant with mad_timer_t was really only needed for MP3TrackInfo class)

Index: mixer.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/mixer.cpp,v
retrieving revision 1.150
retrieving revision 1.151
diff -u -d -r1.150 -r1.151
--- mixer.cpp	27 Dec 2003 21:31:41 -0000	1.150
+++ mixer.cpp	3 Jan 2004 00:55:28 -0000	1.151
@@ -249,13 +249,8 @@
 #ifdef USE_MAD
 void SoundMixer::playMP3(PlayingSoundHandle *handle, File *file, uint32 size, byte volume, int8 pan, int id) {
 	// Create the input stream
-	AudioInputStream *input = makeMP3Stream(file, mad_timer_zero, size);
+	AudioInputStream *input = makeMP3Stream(file, size);
 	playInputStream(handle, input, false, volume, pan, id);
-}
-void SoundMixer::playMP3CDTrack(PlayingSoundHandle *handle, File *file, mad_timer_t duration, byte volume, int8 pan, int id) {
-	// Create the input stream
-	AudioInputStream *input = makeMP3Stream(file, duration, 0);
-	playInputStream(handle, input, true, volume, pan, id);
 }
 #endif
 

Index: mixer.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/mixer.h,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -d -r1.69 -r1.70
--- mixer.h	26 Dec 2003 02:19:31 -0000	1.69
+++ mixer.h	3 Jan 2004 00:55:28 -0000	1.70
@@ -27,9 +27,6 @@
 #include "common/scummsys.h"
 #include "common/system.h"
 
-#ifdef USE_MAD
-#include <mad.h>
-#endif
 #ifdef USE_VORBIS
 #include <vorbis/vorbisfile.h>
 #endif
@@ -115,7 +112,6 @@
 				int id = -1, byte volume = 255, int8 pan = 0, uint32 loopStart = 0, uint32 loopEnd = 0);
 #ifdef USE_MAD
 	void playMP3(PlayingSoundHandle *handle, File *file, uint32 size, byte volume = 255, int8 pan = 0, int id = -1);
-	void playMP3CDTrack(PlayingSoundHandle *handle, File *file, mad_timer_t duration, byte volume = 255, int8 pan = 0, int id = -1);
 #endif
 #ifdef USE_VORBIS
 	void playVorbis(PlayingSoundHandle *handle, File *file, uint32 size, byte volume = 255, int8 pan = 0, int id = -1);

Index: mp3.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/mp3.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- mp3.cpp	21 Dec 2003 00:44:31 -0000	1.4
+++ mp3.cpp	3 Jan 2004 00:55:28 -0000	1.5
@@ -26,105 +26,6 @@
 
 #ifdef USE_MAD
 
-MP3TrackInfo::MP3TrackInfo(File *file) {
-	struct mad_stream stream;
-	struct mad_frame frame;
-	unsigned char buffer[8192];
-	unsigned int buflen = 0;
-	int count = 0;
-
-	// Check the format and bitrate
-	mad_stream_init(&stream);
-	mad_frame_init(&frame);
-
-	while (1) {
-		if (buflen < sizeof(buffer)) {
-			int bytes;
-
-			bytes = file->read(buffer + buflen, sizeof(buffer) - buflen);
-			if (bytes <= 0) {
-				if (bytes == -1) {
-					warning("Invalid file format");
-					goto error;
-				}
-				break;
-			}
-
-			buflen += bytes;
-		}
-
-		mad_stream_buffer(&stream, buffer, buflen);
-
-		while (1) {
-			if (mad_frame_decode(&frame, &stream) == -1) {
-				if (!MAD_RECOVERABLE(stream.error))
-					break;
-
-				if (stream.error != MAD_ERROR_BADCRC)
-					continue;
-			}
-
-			if (count++)
-				break;
-		}
-
-		if (count || stream.error != MAD_ERROR_BUFLEN)
-			break;
-
-		memmove(buffer, stream.next_frame,
-		        buflen = &buffer[buflen] - stream.next_frame);
-	}
-
-	if (count)
-		memcpy(&_mad_header, &frame.header, sizeof(mad_header));
-	else {
-		warning("Invalid file format");
-		goto error;
-	}
-
-	mad_frame_finish(&frame);
-	mad_stream_finish(&stream);
-	// Get file size
-	_size = file->size();
-	_file = file;
-	_error_flag = false;
-	return;
-
-error:
-	mad_frame_finish(&frame);
-	mad_stream_finish(&stream);
-	_error_flag = true;
-	delete file;
-}
-
-void MP3TrackInfo::play(SoundMixer *mixer, PlayingSoundHandle *handle, int startFrame, int duration) {
-	unsigned int offset;
-	mad_timer_t durationTime;
-
-	// Calc offset. As all bitrates are in kilobit per seconds, the division by 200 is always exact
-	offset = (startFrame * (_mad_header.bitrate / (8 * 25))) / 3;
-	_file->seek(offset, SEEK_SET);
-
-	// Calc delay
-	if (!duration) {
-		// FIXME: Using _size here is a problem if offset (or equivalently
-		// startFrame) is non-zero.
-		mad_timer_set(&durationTime, (_size * 8) / _mad_header.bitrate,
-					(_size * 8) % _mad_header.bitrate, _mad_header.bitrate);
-	} else {
-		mad_timer_set(&durationTime, duration / 75, duration % 75, 75);
-	}
-
-	// Play it
-	mixer->playMP3CDTrack(handle, _file, durationTime);
-}
-
-MP3TrackInfo::~MP3TrackInfo() {
-	if (! _error_flag)
-		_file->close();
-}
-
-
 #pragma mark -
 #pragma mark --- MP3 (MAD) stream ---
 #pragma mark -
@@ -354,8 +255,112 @@
 	return samples;
 }
 
-AudioInputStream *makeMP3Stream(File *file, mad_timer_t duration, uint size) {
-	return new MP3InputStream(file, duration, size);
+AudioInputStream *makeMP3Stream(File *file, uint size) {
+	return new MP3InputStream(file, mad_timer_zero, size);
+}
+
+
+#pragma mark -
+#pragma mark --- MP3 Audio CD emulation ---
+#pragma mark -
+
+MP3TrackInfo::MP3TrackInfo(File *file) {
+	struct mad_stream stream;
+	struct mad_frame frame;
+	unsigned char buffer[8192];
+	unsigned int buflen = 0;
+	int count = 0;
+
+	// Check the format and bitrate
+	mad_stream_init(&stream);
+	mad_frame_init(&frame);
+
+	while (1) {
+		if (buflen < sizeof(buffer)) {
+			int bytes;
+
+			bytes = file->read(buffer + buflen, sizeof(buffer) - buflen);
+			if (bytes <= 0) {
+				if (bytes == -1) {
+					warning("Invalid file format");
+					goto error;
+				}
+				break;
+			}
+
+			buflen += bytes;
+		}
+
+		mad_stream_buffer(&stream, buffer, buflen);
+
+		while (1) {
+			if (mad_frame_decode(&frame, &stream) == -1) {
+				if (!MAD_RECOVERABLE(stream.error))
+					break;
+
+				if (stream.error != MAD_ERROR_BADCRC)
+					continue;
+			}
+
+			if (count++)
+				break;
+		}
+
+		if (count || stream.error != MAD_ERROR_BUFLEN)
+			break;
+
+		memmove(buffer, stream.next_frame,
+		        buflen = &buffer[buflen] - stream.next_frame);
+	}
+
+	if (count)
+		memcpy(&_mad_header, &frame.header, sizeof(mad_header));
+	else {
+		warning("Invalid file format");
+		goto error;
+	}
+
+	mad_frame_finish(&frame);
+	mad_stream_finish(&stream);
+	// Get file size
+	_size = file->size();
+	_file = file;
+	_error_flag = false;
+	return;
+
+error:
+	mad_frame_finish(&frame);
+	mad_stream_finish(&stream);
+	_error_flag = true;
+	delete file;
+}
+
+void MP3TrackInfo::play(SoundMixer *mixer, PlayingSoundHandle *handle, int startFrame, int duration) {
+	unsigned int offset;
+	mad_timer_t durationTime;
+
+	// Calc offset. As all bitrates are in kilobit per seconds, the division by 200 is always exact
+	offset = (startFrame * (_mad_header.bitrate / (8 * 25))) / 3;
+	_file->seek(offset, SEEK_SET);
+
+	// Calc delay
+	if (!duration) {
+		// FIXME: Using _size here is a problem if offset (or equivalently
+		// startFrame) is non-zero.
+		mad_timer_set(&durationTime, (_size * 8) / _mad_header.bitrate,
+					(_size * 8) % _mad_header.bitrate, _mad_header.bitrate);
+	} else {
+		mad_timer_set(&durationTime, duration / 75, duration % 75, 75);
+	}
+
+	// Play it
+	AudioInputStream *input = new MP3InputStream(_file, durationTime, 0);
+	mixer->playInputStream(handle, input, true);
+}
+
+MP3TrackInfo::~MP3TrackInfo() {
+	if (! _error_flag)
+		_file->close();
 }
 
 

Index: mp3.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/mp3.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- mp3.h	21 Dec 2003 00:44:31 -0000	1.3
+++ mp3.h	3 Jan 2004 00:55:28 -0000	1.4
@@ -47,7 +47,7 @@
 	void play(SoundMixer *mixer, PlayingSoundHandle *handle, int startFrame, int duration);
 };
 
-AudioInputStream *makeMP3Stream(File *file, mad_timer_t duration, uint size = 0);
+AudioInputStream *makeMP3Stream(File *file, uint size);
 
 #endif
 





More information about the Scummvm-git-logs mailing list