[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