[Scummvm-git-logs] scummvm master -> f4e399cf4fa5f56dabb52ea914e3cfd9f2b9ed17
sev-
noreply at scummvm.org
Sat Nov 18 20:00:44 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
f4e399cf4f AUDIO: Optimize case for !inStereo && outStereo
Commit: f4e399cf4fa5f56dabb52ea914e3cfd9f2b9ed17
https://github.com/scummvm/scummvm/commit/f4e399cf4fa5f56dabb52ea914e3cfd9f2b9ed17
Author: Miro Kropacek (miro.kropacek at gmail.com)
Date: 2023-11-18T21:00:40+01:00
Commit Message:
AUDIO: Optimize case for !inStereo && outStereo
Changed paths:
audio/rate.cpp
audio/rate.h
diff --git a/audio/rate.cpp b/audio/rate.cpp
index a9770977162..98dea4d5cfd 100644
--- a/audio/rate.cpp
+++ b/audio/rate.cpp
@@ -122,7 +122,7 @@ int RateConverter_Impl<inStereo, outStereo, reverseStereo>::copyConvert(AudioStr
outL = (inL * (int)volL) / Audio::Mixer::kMaxMixerVolume;
outR = (inR * (int)volR) / Audio::Mixer::kMaxMixerVolume;
- if (outStereo) {
+ if (inStereo && outStereo) {
// Output left channel
clampedAdd(outBuffer[reverseStereo ], outL);
@@ -132,9 +132,12 @@ int RateConverter_Impl<inStereo, outStereo, reverseStereo>::copyConvert(AudioStr
outBuffer += 2;
} else {
// Output mono channel
- clampedAdd(outBuffer[0], (outL + outR) / 2);
+ st_sample_t val = clampedAdd(outBuffer[0], (outL + outR) / 2);
outBuffer += 1;
+
+ if (outStereo)
+ *outBuffer++ = val;
}
}
@@ -182,7 +185,7 @@ int RateConverter_Impl<inStereo, outStereo, reverseStereo>::simpleConvert(AudioS
outL = (inL * (int)volL) / Audio::Mixer::kMaxMixerVolume;
outR = (inR * (int)volR) / Audio::Mixer::kMaxMixerVolume;
- if (outStereo) {
+ if (inStereo && outStereo) {
// output left channel
clampedAdd(outBuffer[reverseStereo ], outL);
@@ -192,9 +195,12 @@ int RateConverter_Impl<inStereo, outStereo, reverseStereo>::simpleConvert(AudioS
outBuffer += 2;
} else {
// output mono channel
- clampedAdd(outBuffer[0], (outL + outR) / 2);
+ st_sample_t val = clampedAdd(outBuffer[0], (outL + outR) / 2);
outBuffer += 1;
+
+ if (outStereo)
+ *outBuffer++ = val;
}
}
return (outBuffer - outStart) / (outStereo ? 2 : 1);
@@ -247,7 +253,7 @@ int RateConverter_Impl<inStereo, outStereo, reverseStereo>::interpolateConvert(A
outL = (inL * (int)volL) / Audio::Mixer::kMaxMixerVolume;
outR = (inR * (int)volR) / Audio::Mixer::kMaxMixerVolume;
- if (outStereo) {
+ if (inStereo && outStereo) {
// Output left channel
clampedAdd(outBuffer[reverseStereo ], outL);
@@ -257,9 +263,12 @@ int RateConverter_Impl<inStereo, outStereo, reverseStereo>::interpolateConvert(A
outBuffer += 2;
} else {
// Output mono channel
- clampedAdd(outBuffer[0], (outL + outR) / 2);
+ st_sample_t val = clampedAdd(outBuffer[0], (outL + outR) / 2);
outBuffer += 1;
+
+ if (outStereo)
+ *outBuffer++ = val;
}
// Increment output position
diff --git a/audio/rate.h b/audio/rate.h
index 7b0658c893b..f7f498de7b5 100644
--- a/audio/rate.h
+++ b/audio/rate.h
@@ -46,7 +46,7 @@ enum {
ST_SAMPLE_MIN = (-ST_SAMPLE_MAX - 1L)
};
-static inline void clampedAdd(int16& a, int b) {
+static inline int16 clampedAdd(int16& a, int b) {
int val;
#ifdef OUTPUT_UNSIGNED_AUDIO
val = (a ^ 0x8000) + b;
@@ -64,6 +64,7 @@ static inline void clampedAdd(int16& a, int b) {
#else
a = val;
#endif
+ return (int16)val;
}
/**
More information about the Scummvm-git-logs
mailing list