[Scummvm-cvs-logs] SF.net SVN: scummvm: [27734] scummvm/trunk/engines/saga
thebluegr at users.sourceforge.net
thebluegr at users.sourceforge.net
Wed Jun 27 01:40:23 CEST 2007
Revision: 27734
http://scummvm.svn.sourceforge.net/scummvm/?rev=27734&view=rev
Author: thebluegr
Date: 2007-06-26 16:40:22 -0700 (Tue, 26 Jun 2007)
Log Message:
-----------
Add support for compressed digital music in ITE
Modified Paths:
--------------
scummvm/trunk/engines/saga/music.cpp
scummvm/trunk/engines/saga/music.h
Modified: scummvm/trunk/engines/saga/music.cpp
===================================================================
--- scummvm/trunk/engines/saga/music.cpp 2007-06-26 23:38:21 UTC (rev 27733)
+++ scummvm/trunk/engines/saga/music.cpp 2007-06-26 23:40:22 UTC (rev 27734)
@@ -354,7 +354,7 @@
void Music::play(uint32 resourceId, MusicFlags flags) {
Audio::AudioStream *audioStream = NULL;
MidiParser *parser;
- ResourceContext *context;
+ ResourceContext *context = NULL;
byte *resourceData;
size_t resourceSize;
uint32 loopStart;
@@ -413,7 +413,61 @@
loopStart = 4 * 18727;
}
- audioStream = new RAWInputStream(_vm, _musicContext, resourceId - 9, flags == MUSIC_LOOP, loopStart);
+ if (!(_vm->getFeatures() & GF_COMPRESSED_SOUNDS)) {
+ // uncompressed digital music
+ audioStream = new RAWInputStream(_vm, _musicContext, resourceId - 9, flags == MUSIC_LOOP, loopStart);
+ } else {
+ // compressed digital music
+ ResourceData * resourceData;
+ Common::File *_file;
+ byte compressedHeader[10];
+ GameSoundTypes soundType;
+
+ resourceData = _vm->_resource->getResourceData(_musicContext, resourceId - 9);
+ _file = _musicContext->getFile(resourceData);
+
+ if (_vm->getMusicInfo() == NULL) {
+ error("RAWInputStream() wrong musicInfo");
+ }
+
+ _file->seek((long)resourceData->offset, SEEK_SET);
+
+ _file->read(compressedHeader, 9);
+
+ if (compressedHeader[0] == char(0)) {
+ soundType = kSoundMP3;
+ } else if (compressedHeader[0] == char(1)) {
+ soundType = kSoundOGG;
+ } else if (compressedHeader[0] == char(2)) {
+ soundType = kSoundFLAC;
+ }
+
+ switch (soundType) {
+#ifdef USE_MAD
+ case kSoundMP3:
+ debug(1, "Playing MP3 compressed digital music");
+ audioStream = Audio::makeMP3Stream(_file, resourceData->size);
+ break;
+#endif
+#ifdef USE_VORBIS
+ case kSoundOGG:
+ debug(1, "Playing OGG compressed digital music");
+ audioStream = Audio::makeVorbisStream(_file, resourceData->size);
+ break;
+#endif
+#ifdef USE_FLAC
+ case kSoundFLAC:
+ debug(1, "Playing FLAC compressed digital music");
+ audioStream = Audio::makeFlacStream(_file, resourceData->size);
+ break;
+#endif
+ default:
+ // Unknown compression
+ error("Trying to play a compressed digital music, but the compression is not known");
+ break;
+ }
+
+ }
}
}
}
Modified: scummvm/trunk/engines/saga/music.h
===================================================================
--- scummvm/trunk/engines/saga/music.h 2007-06-26 23:38:21 UTC (rev 27733)
+++ scummvm/trunk/engines/saga/music.h 2007-06-26 23:40:22 UTC (rev 27734)
@@ -31,6 +31,9 @@
#include "sound/audiocd.h"
#include "sound/mididrv.h"
#include "sound/midiparser.h"
+#include "sound/mp3.h"
+#include "sound/vorbis.h"
+#include "sound/flac.h"
namespace Saga {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list