summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar MerryMage2016-08-31 16:55:10 +0100
committerGravatar MerryMage2016-08-31 16:55:10 +0100
commit0ef4185644def3e7d99d88af3c8dd27d40660c82 (patch)
tree0a6b8f018184ea30b5b8471520bd426b6de52b65 /src
parentMerge pull request #2034 from JayFoxRox/avoid-glsl-error (diff)
downloadyuzu-0ef4185644def3e7d99d88af3c8dd27d40660c82.tar.gz
yuzu-0ef4185644def3e7d99d88af3c8dd27d40660c82.tar.xz
yuzu-0ef4185644def3e7d99d88af3c8dd27d40660c82.zip
sink: Change EnqueueSamples to take a pointer to a buffer instead of a std::vector
Diffstat (limited to 'src')
-rw-r--r--src/audio_core/hle/dsp.cpp3
-rw-r--r--src/audio_core/null_sink.h2
-rw-r--r--src/audio_core/sdl2_sink.cpp6
-rw-r--r--src/audio_core/sdl2_sink.h2
-rw-r--r--src/audio_core/sink.h5
5 files changed, 9 insertions, 9 deletions
diff --git a/src/audio_core/hle/dsp.cpp b/src/audio_core/hle/dsp.cpp
index 0640e1eff..a195bc74c 100644
--- a/src/audio_core/hle/dsp.cpp
+++ b/src/audio_core/hle/dsp.cpp
@@ -90,7 +90,8 @@ static AudioCore::TimeStretcher time_stretcher;
90 90
91static void OutputCurrentFrame(const StereoFrame16& frame) { 91static void OutputCurrentFrame(const StereoFrame16& frame) {
92 time_stretcher.AddSamples(&frame[0][0], frame.size()); 92 time_stretcher.AddSamples(&frame[0][0], frame.size());
93 sink->EnqueueSamples(time_stretcher.Process(sink->SamplesInQueue())); 93 std::vector<s16> stretched_samples = time_stretcher.Process(sink->SamplesInQueue());
94 sink->EnqueueSamples(stretched_samples.data(), stretched_samples.size() / 2);
94} 95}
95 96
96// Public Interface 97// Public Interface
diff --git a/src/audio_core/null_sink.h b/src/audio_core/null_sink.h
index faf0ee4e1..9931c4778 100644
--- a/src/audio_core/null_sink.h
+++ b/src/audio_core/null_sink.h
@@ -19,7 +19,7 @@ public:
19 return native_sample_rate; 19 return native_sample_rate;
20 } 20 }
21 21
22 void EnqueueSamples(const std::vector<s16>&) override {} 22 void EnqueueSamples(const s16*, size_t) override {}
23 23
24 size_t SamplesInQueue() const override { 24 size_t SamplesInQueue() const override {
25 return 0; 25 return 0;
diff --git a/src/audio_core/sdl2_sink.cpp b/src/audio_core/sdl2_sink.cpp
index dc75c04ee..311dd5b59 100644
--- a/src/audio_core/sdl2_sink.cpp
+++ b/src/audio_core/sdl2_sink.cpp
@@ -71,14 +71,12 @@ unsigned int SDL2Sink::GetNativeSampleRate() const {
71 return impl->sample_rate; 71 return impl->sample_rate;
72} 72}
73 73
74void SDL2Sink::EnqueueSamples(const std::vector<s16>& samples) { 74void SDL2Sink::EnqueueSamples(const s16* samples, size_t sample_count) {
75 if (impl->audio_device_id <= 0) 75 if (impl->audio_device_id <= 0)
76 return; 76 return;
77 77
78 ASSERT_MSG(samples.size() % 2 == 0, "Samples must be in interleaved stereo PCM16 format (size must be a multiple of two)");
79
80 SDL_LockAudioDevice(impl->audio_device_id); 78 SDL_LockAudioDevice(impl->audio_device_id);
81 impl->queue.emplace_back(samples); 79 impl->queue.emplace_back(samples, samples + sample_count * 2);
82 SDL_UnlockAudioDevice(impl->audio_device_id); 80 SDL_UnlockAudioDevice(impl->audio_device_id);
83} 81}
84 82
diff --git a/src/audio_core/sdl2_sink.h b/src/audio_core/sdl2_sink.h
index 0f296b673..b13827214 100644
--- a/src/audio_core/sdl2_sink.h
+++ b/src/audio_core/sdl2_sink.h
@@ -18,7 +18,7 @@ public:
18 18
19 unsigned int GetNativeSampleRate() const override; 19 unsigned int GetNativeSampleRate() const override;
20 20
21 void EnqueueSamples(const std::vector<s16>& samples) override; 21 void EnqueueSamples(const s16* samples, size_t sample_count) override;
22 22
23 size_t SamplesInQueue() const override; 23 size_t SamplesInQueue() const override;
24 24
diff --git a/src/audio_core/sink.h b/src/audio_core/sink.h
index 1c881c3d2..a06fc3dcc 100644
--- a/src/audio_core/sink.h
+++ b/src/audio_core/sink.h
@@ -23,9 +23,10 @@ public:
23 23
24 /** 24 /**
25 * Feed stereo samples to sink. 25 * Feed stereo samples to sink.
26 * @param samples Samples in interleaved stereo PCM16 format. Size of vector must be multiple of two. 26 * @param samples Samples in interleaved stereo PCM16 format.
27 * @param sample_count Number of samples.
27 */ 28 */
28 virtual void EnqueueSamples(const std::vector<s16>& samples) = 0; 29 virtual void EnqueueSamples(const s16* samples, size_t sample_count) = 0;
29 30
30 /// Samples enqueued that have not been played yet. 31 /// Samples enqueued that have not been played yet.
31 virtual std::size_t SamplesInQueue() const = 0; 32 virtual std::size_t SamplesInQueue() const = 0;