summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon/CubebStream.h
diff options
context:
space:
mode:
authorMat M <mathew1800@gmail.com>2017-05-27 21:39:03 -0400
committerGitHub <noreply@github.com>2017-05-27 21:39:03 -0400
commit905232fd2b0f0545e524c4c34859bf62576e43f5 (patch)
tree88d01f6fe28d6c1312eb19c68693aa3d728f66bf /Source/Core/AudioCommon/CubebStream.h
parentd4faa099d95edcc408d90fefb601999b1481d308 (diff)
parentd416cbd9ed5efb391ad65c36ded74c17ab713622 (diff)
Merge pull request #5313 from ligfx/addcubeb
Add CubebStream output backend and replace PortAudio for microphones
Diffstat (limited to 'Source/Core/AudioCommon/CubebStream.h')
-rw-r--r--Source/Core/AudioCommon/CubebStream.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/Source/Core/AudioCommon/CubebStream.h b/Source/Core/AudioCommon/CubebStream.h
new file mode 100644
index 0000000000..d0b153975e
--- /dev/null
+++ b/Source/Core/AudioCommon/CubebStream.h
@@ -0,0 +1,32 @@
+// Copyright 2017 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <cstddef>
+#include <memory>
+
+#include "AudioCommon/SoundStream.h"
+
+#include <cubeb/cubeb.h>
+
+class CubebStream final : public SoundStream
+{
+public:
+ bool Start() override;
+ void Stop() override;
+ void SetVolume(int) override;
+
+private:
+ bool m_stereo = false;
+ std::shared_ptr<cubeb> m_ctx;
+ cubeb_stream* m_stream = nullptr;
+
+ std::vector<short> m_short_buffer;
+ std::vector<float> m_floatstereo_buffer;
+
+ static long DataCallback(cubeb_stream* stream, void* user_data, const void* /*input_buffer*/,
+ void* output_buffer, long num_frames);
+ static void StateCallback(cubeb_stream* stream, void* user_data, cubeb_state state);
+};