[Scummvm-git-logs] scummvm master -> e01642d867bcdaa2724397842b1bf67c05e8e409
sev-
noreply at scummvm.org
Sat Mar 25 00:59:30 UTC 2023
This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
af18380ac3 AUDIO: Added probe method to ImpulseTracker
8881e7cb20 JANITORIAL: Remove trailing spaces
ab1ad5fd8a AUDIO: Add missing override keyword
5f77af4cbe AUDIO: Added probe method to MOD/XM/S3M player
d71f363b20 SLUDGE: Probe MOD files before attempt to play
e01642d867 TESTBED: Probe MOD files before attempt to play
Commit: af18380ac3cc54b7ad6dc1ea791d07e5935ef775
https://github.com/scummvm/scummvm/commit/af18380ac3cc54b7ad6dc1ea791d07e5935ef775
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-03-25T01:55:23+01:00
Commit Message:
AUDIO: Added probe method to ImpulseTracker
Changed paths:
audio/mods/impulsetracker.cpp
audio/mods/impulsetracker.h
diff --git a/audio/mods/impulsetracker.cpp b/audio/mods/impulsetracker.cpp
index c9250ba4e73..66004dc3730 100644
--- a/audio/mods/impulsetracker.cpp
+++ b/audio/mods/impulsetracker.cpp
@@ -225,6 +225,20 @@ RewindableAudioStream *makeImpulseTrackerStream(Common::SeekableReadStream *stre
return impulseTrackerMod;
}
+bool probeImpulseTracker(Common::SeekableReadStream *st) {
+ int32 setPos = st->pos();
+
+ // xm file
+ char sigIt[4] = { 0 };
+ st->read(sigIt, 4);
+ st->seek(setPos);
+ if (!memcmp(sigIt, "IMPM", 4)) {
+ return true;
+ }
+
+ return false;
+}
+
} // End of namespace Audio
#endif // #ifdef USE_MIKMOD
diff --git a/audio/mods/impulsetracker.h b/audio/mods/impulsetracker.h
index b07dea1c398..178a8051efe 100644
--- a/audio/mods/impulsetracker.h
+++ b/audio/mods/impulsetracker.h
@@ -47,9 +47,13 @@ class RewindableAudioStream;
* @param disposeAfterUse whether to delete the stream after use
* @return a new AudioStream, or NULL, if an error occurred
*/
-RewindableAudioStream *makeImpulseTrackerStream(
- Common::SeekableReadStream *stream,
- DisposeAfterUse::Flag disposeAfterUse);
+RewindableAudioStream *makeImpulseTrackerStream(Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeAfterUse);
+
+/**
+ * Check if the stream is one of the supported formats
+ */
+bool probeImpulseTracker(Common::SeekableReadStream *stream);
+
} // End of namespace Audio
#endif // #ifdef USE_MIKMOD
Commit: 8881e7cb2010173ff65192b2c5c2e404aff71618
https://github.com/scummvm/scummvm/commit/8881e7cb2010173ff65192b2c5c2e404aff71618
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-03-25T01:55:23+01:00
Commit Message:
JANITORIAL: Remove trailing spaces
Changed paths:
audio/mods/impulsetracker.cpp
diff --git a/audio/mods/impulsetracker.cpp b/audio/mods/impulsetracker.cpp
index 66004dc3730..35de39476d9 100644
--- a/audio/mods/impulsetracker.cpp
+++ b/audio/mods/impulsetracker.cpp
@@ -86,7 +86,7 @@ static BOOL memoryReaderRead(MREADER *reader, void *ptr, size_t size) {
return 0;
uint32 receivedBytes = mr->stream->read(ptr, size);
-
+
if (receivedBytes < size)
return 0; // not enough remaining bytes (or error)
@@ -106,7 +106,7 @@ static int memoryReaderGet(MREADER *reader) {
static int memoryReaderSeek(MREADER *reader, long offset, int whence) {
MikMemoryReader *mr;
mr = (MikMemoryReader *)reader;
-
+
if (!reader || !mr->stream)
return -1;
@@ -179,7 +179,7 @@ ImpulseTrackerMod::ImpulseTrackerMod(Common::SeekableReadStream *stream, Dispose
// Set flags
md_mode |= DMODE_SOFT_MUSIC | DMODE_NOISEREDUCTION;
md_mixfreq = getRate();
-
+
if (MikMod_Init("")) {
warning("ImpulseTrackerMod::ImpulseTrackerMod(): Could not initialize sound, reason: %s",
MikMod_strerror(MikMod_errno));
@@ -207,10 +207,10 @@ ImpulseTrackerMod::ImpulseTrackerMod(Common::SeekableReadStream *stream, Dispose
ImpulseTrackerMod::~ImpulseTrackerMod() {
Player_Stop();
-
+
if (_mod)
Player_Free(_mod);
-
+
if (_reader)
free(_reader);
Commit: ab1ad5fd8a832c1f0078a16e038fa896a9daf698
https://github.com/scummvm/scummvm/commit/ab1ad5fd8a832c1f0078a16e038fa896a9daf698
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-03-25T01:55:23+01:00
Commit Message:
AUDIO: Add missing override keyword
Changed paths:
audio/mods/impulsetracker.cpp
diff --git a/audio/mods/impulsetracker.cpp b/audio/mods/impulsetracker.cpp
index 35de39476d9..463f395de1b 100644
--- a/audio/mods/impulsetracker.cpp
+++ b/audio/mods/impulsetracker.cpp
@@ -154,7 +154,7 @@ public:
}
// RewindableAudioStream API
- bool rewind() {
+ bool rewind() override {
Player_SetPosition(0);
return true;
}
Commit: 5f77af4cbeba75bca082cbd75d3906e834b813fc
https://github.com/scummvm/scummvm/commit/5f77af4cbeba75bca082cbd75d3906e834b813fc
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-03-25T01:55:23+01:00
Commit Message:
AUDIO: Added probe method to MOD/XM/S3M player
Changed paths:
audio/mods/mod_xm_s3m.cpp
audio/mods/mod_xm_s3m.h
diff --git a/audio/mods/mod_xm_s3m.cpp b/audio/mods/mod_xm_s3m.cpp
index 348f857b5be..07bb00f06c0 100644
--- a/audio/mods/mod_xm_s3m.cpp
+++ b/audio/mods/mod_xm_s3m.cpp
@@ -1374,4 +1374,45 @@ RewindableAudioStream *makeModXmS3mStream(Common::SeekableReadStream *stream, Di
return soundStream;
}
+bool probeModXmS3m(Common::SeekableReadStream *st) {
+ int32 setPos = st->pos();
+
+ // xm file
+ char sigXm[18] = { 0 };
+ st->read(sigXm, 17);
+ st->seek(setPos);
+ if (!memcmp(sigXm, "Extended Module: ", 17)) {
+ return true;
+ }
+
+ // s3m file
+ char sigS3m[4];
+ st->skip(44);
+ st->read(sigS3m, 4);
+ st->seek(setPos);
+ if (!memcmp(sigS3m, "SCRM", 4)) {
+ st->seek(setPos);
+ return true;
+ }
+
+ // amf file
+ char sigAmf[25] = {};
+ st->read(sigAmf, 24);
+ st->seek(setPos);
+ if (!memcmp(sigAmf, "ASYLUM Music Format V1.0", 24)) {
+ return true;
+ }
+
+ // mod file
+ char sigMod[4];
+ st->skip(1080);
+ st->read(sigMod, 4);
+ st->seek(setPos);
+ if (!memcmp(sigMod, "M.K.", 4) || !memcmp(sigMod, "M!K!", 4)) {
+ return true;
+ }
+
+ return false;
+}
+
} // End of namespace Audio
diff --git a/audio/mods/mod_xm_s3m.h b/audio/mods/mod_xm_s3m.h
index 8de2f528b48..218ae2a33fb 100644
--- a/audio/mods/mod_xm_s3m.h
+++ b/audio/mods/mod_xm_s3m.h
@@ -71,7 +71,7 @@ namespace Audio {
class AudioStream;
-/*
+/**
* Factory function for ModXmS3mStream streams. Reads all data from the
* given ReadStream and creates an AudioStream from this. No reference
* to the 'stream' object is kept, so you can safely delete it after
@@ -90,6 +90,11 @@ RewindableAudioStream *makeModXmS3mStream(Common::SeekableReadStream *stream,
int initialPos = 0,
int rate = 48000, int interpolation = 0);
+/**
+ * Check if the stream is one of the supported formats
+ */
+bool probeModXmS3m(Common::SeekableReadStream *stream);
+
} // End of namespace Audio
#endif
Commit: d71f363b2080e216978e2304f668624179956184
https://github.com/scummvm/scummvm/commit/d71f363b2080e216978e2304f668624179956184
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-03-25T01:55:23+01:00
Commit Message:
SLUDGE: Probe MOD files before attempt to play
Changed paths:
engines/sludge/sound.cpp
diff --git a/engines/sludge/sound.cpp b/engines/sludge/sound.cpp
index 929d532a239..f03855c540e 100644
--- a/engines/sludge/sound.cpp
+++ b/engines/sludge/sound.cpp
@@ -224,11 +224,14 @@ bool SoundManager::playMOD(int f, int a, int fromTrack) {
if (memImage->size() != (int)length || readStream->err()) {
return fatal("Sound reading failed");
}
- Audio::RewindableAudioStream *mod = Audio::makeModXmS3mStream(memImage, DisposeAfterUse::NO, fromTrack);
+ Audio::RewindableAudioStream *mod = nullptr;
+
+ if (Audio::probeModXmS3m(memImage))
+ mod = Audio::makeModXmS3mStream(memImage, DisposeAfterUse::NO, fromTrack);
#ifdef USE_MIKMOD
if (!mod) {
- // Try impulse tracker if failed!
- mod = Audio::makeImpulseTrackerStream(memImage, DisposeAfterUse::NO);
+ if (Audio::probeImpulseTracker(memImage))
+ mod = Audio::makeImpulseTrackerStream(memImage, DisposeAfterUse::NO);
}
#endif
if (!mod) {
Commit: e01642d867bcdaa2724397842b1bf67c05e8e409
https://github.com/scummvm/scummvm/commit/e01642d867bcdaa2724397842b1bf67c05e8e409
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-03-25T01:55:24+01:00
Commit Message:
TESTBED: Probe MOD files before attempt to play
Changed paths:
engines/testbed/sound.cpp
diff --git a/engines/testbed/sound.cpp b/engines/testbed/sound.cpp
index 514d329138b..dee18c3e9c9 100644
--- a/engines/testbed/sound.cpp
+++ b/engines/testbed/sound.cpp
@@ -209,11 +209,15 @@ TestExitStatus SoundSubsystem::modPlayback() {
if (!f.isOpen())
continue;
- Audio::RewindableAudioStream *mod = Audio::makeModXmS3mStream(&f, DisposeAfterUse::NO);
+ Audio::RewindableAudioStream *mod = nullptr;
+
+ if (Audio::probeModXmS3m(&f))
+ mod = Audio::makeModXmS3mStream(&f, DisposeAfterUse::NO);
+
#ifdef USE_MIKMOD
if (!mod) {
- // Try impulse tracker if failed!
- mod = Audio::makeImpulseTrackerStream(&f, DisposeAfterUse::NO);
+ if (Audio::probeImpulseTracker(&f))
+ mod = Audio::makeImpulseTrackerStream(&f, DisposeAfterUse::NO);
}
#endif
if (!mod) {
More information about the Scummvm-git-logs
mailing list