[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