summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon/Mixer.cpp
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2025-08-05 16:46:57 -0400
committerGitHub <noreply@github.com>2025-08-05 16:46:57 -0400
commit804cf465fcc6fbe879a8a927988052eca761fa25 (patch)
tree3bc06071212e3556694e389c29d0bd513fa1ae19 /Source/Core/AudioCommon/Mixer.cpp
parentab990018f22c174b008267e0879d1c57d0c1d269 (diff)
parentff0560574e50e384d33f2620d231461b9bd8662f (diff)
Merge pull request #13819 from jordan-woyak/null-sound-stream-drop-samples
AudioCommon/Mixer: Skip sample processing when NullSoundStream is being used.
Diffstat (limited to 'Source/Core/AudioCommon/Mixer.cpp')
-rw-r--r--Source/Core/AudioCommon/Mixer.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/Source/Core/AudioCommon/Mixer.cpp b/Source/Core/AudioCommon/Mixer.cpp
index ce2a3e429e..1e074cbfce 100644
--- a/Source/Core/AudioCommon/Mixer.cpp
+++ b/Source/Core/AudioCommon/Mixer.cpp
@@ -226,7 +226,11 @@ void Mixer::MixerFifo::PushSamples(const s16* samples, std::size_t num_samples)
void Mixer::PushSamples(const s16* samples, std::size_t num_samples)
{
- m_dma_mixer.PushSamples(samples, num_samples);
+ if (IsOutputSampleRateValid())
+ {
+ m_dma_mixer.PushSamples(samples, num_samples);
+ }
+
if (m_log_dsp_audio)
{
const s32 sample_rate_divisor = m_dma_mixer.GetInputSampleRateDivisor();
@@ -238,7 +242,11 @@ void Mixer::PushSamples(const s16* samples, std::size_t num_samples)
void Mixer::PushStreamingSamples(const s16* samples, std::size_t num_samples)
{
- m_streaming_mixer.PushSamples(samples, num_samples);
+ if (IsOutputSampleRateValid())
+ {
+ m_streaming_mixer.PushSamples(samples, num_samples);
+ }
+
if (m_log_dtk_audio)
{
const s32 sample_rate_divisor = m_streaming_mixer.GetInputSampleRateDivisor();
@@ -251,6 +259,9 @@ void Mixer::PushStreamingSamples(const s16* samples, std::size_t num_samples)
void Mixer::PushWiimoteSpeakerSamples(const s16* samples, std::size_t num_samples,
u32 sample_rate_divisor)
{
+ if (!IsOutputSampleRateValid())
+ return;
+
// Max 20 bytes/speaker report, may be 4-bit ADPCM so multiply by 2
static constexpr std::size_t MAX_SPEAKER_SAMPLES = 20 * 2;
std::array<s16, MAX_SPEAKER_SAMPLES * 2> samples_stereo;
@@ -274,6 +285,9 @@ void Mixer::PushWiimoteSpeakerSamples(const s16* samples, std::size_t num_sample
void Mixer::PushSkylanderPortalSamples(const u8* samples, std::size_t num_samples)
{
+ if (!IsOutputSampleRateValid())
+ return;
+
// Skylander samples are always supplied as 64 bytes, 32 x 16 bit samples
// The portal speaker is 1 channel, so duplicate and play as stereo audio
static constexpr std::size_t MAX_PORTAL_SPEAKER_SAMPLES = 32;
@@ -299,6 +313,9 @@ void Mixer::PushSkylanderPortalSamples(const u8* samples, std::size_t num_sample
void Mixer::PushGBASamples(std::size_t device_number, const s16* samples, std::size_t num_samples)
{
+ if (!IsOutputSampleRateValid())
+ return;
+
m_gba_mixers[device_number].PushSamples(samples, num_samples);
}