[Scummvm-cvs-logs] CVS: scummvm/saga music.cpp,1.65,1.66 music.h,1.26,1.27

Eugene Sandulenko sev at users.sourceforge.net
Tue Sep 20 11:05:22 CEST 2005


Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17487

Modified Files:
	music.cpp music.h 
Log Message:
Buggy support for ripped tracks.


Index: music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/music.cpp,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -d -r1.65 -r1.66
--- music.cpp	2 Sep 2005 20:17:52 -0000	1.65
+++ music.cpp	20 Sep 2005 18:04:26 -0000	1.66
@@ -28,6 +28,9 @@
 #include "sound/audiostream.h"
 #include "sound/mididrv.h"
 #include "sound/midiparser.h"
+#include "sound/mp3.h"
+#include "sound/vorbis.h"
+#include "sound/flac.h"
 #include "common/config-manager.h"
 #include "common/file.h"
 
@@ -35,6 +38,24 @@
 
 #define BUFFER_SIZE 4096
 
+struct TrackFormat {
+	DigitalTrackInfo* (*openTrackFunction)(int);
+};
+
+static const TrackFormat TRACK_FORMATS[] = {
+#ifdef USE_FLAC
+	{ getFlacTrack },
+#endif
+#ifdef USE_VORBIS
+	{ getVorbisTrack },
+#endif
+#ifdef USE_MAD
+	{ getMP3Track },
+#endif
+
+	{ NULL } // Terminator
+};
+
 // I haven't decided yet if it's a good idea to make looping part of the audio
 // stream class, or if I should use a "wrapper" class, like I did for Broken
 // Sword 2, to make it easier to add support for compressed music... but I'll
@@ -277,6 +298,8 @@
 
 	_songTableLen = 0;
 	_songTable = 0;
+
+	_track = NULL;
 }
 
 Music::~Music() {
@@ -345,6 +368,7 @@
 	ResourceContext *context;
 	byte *resourceData;
 	size_t resourceSize;
+
 	debug(2, "Music::play %d, %d", resourceId, flags);
 
 	if (!_enabled) {
@@ -359,6 +383,16 @@
 	_player->stopMusic();
 	_mixer->stopHandle(_musicHandle);
 
+	// Try to open standalone digital track
+	for (int i = 0; i < ARRAYSIZE(TRACK_FORMATS) - 1; ++i)
+		if (_track = TRACK_FORMATS[i].openTrackFunction(resourceId - 8)) {
+			break;
+		}
+	if (_track) {
+		_track->play(_mixer, &_musicHandle, (MUSIC_LOOP ? -1 : 1), 10000);
+		return;
+	}
+
 	if (_vm->getGameType() == GType_ITE) {
 		if (resourceId >= 9 && resourceId <= 34) {
 			if (flags == MUSIC_DEFAULT) {

Index: music.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/music.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- music.h	30 Aug 2005 11:16:11 -0000	1.26
+++ music.h	20 Sep 2005 18:04:26 -0000	1.27
@@ -26,6 +26,7 @@
 #ifndef SAGA_MUSIC_H_
 #define SAGA_MUSIC_H_
 
+#include "sound/audiocd.h"
 #include "sound/mixer.h"
 #include "sound/mididrv.h"
 #include "sound/midiparser.h"
@@ -136,6 +137,8 @@
 	MidiParser *xmidiParser;
 	MidiParser *smfParser;
 
+	DigitalTrackInfo *_track;
+
 	static void musicVolumeGaugeCallback(void *refCon);
 	void musicVolumeGauge(void);
 };





More information about the Scummvm-git-logs mailing list