AudioStream: Replace buffer queue with ring buffer

Should achieve a decent overall minimum latency reduction.
This commit is contained in:
Connor McLaughlin
2020-06-06 14:40:20 +10:00
parent 6acd8b27dd
commit 531c3ad5fa
16 changed files with 205 additions and 253 deletions

View File

@@ -1,6 +1,7 @@
#pragma once
#include "common/audio_stream.h"
#include "cubeb/cubeb.h"
#include <atomic>
#include <cstdint>
class CubebAudioStream final : public AudioStream
@@ -9,13 +10,15 @@ public:
CubebAudioStream();
~CubebAudioStream();
void SetOutputVolume(u32 volume) override;
protected:
bool IsOpen() const { return m_cubeb_stream != nullptr; }
bool OpenDevice() override;
void PauseDevice(bool paused) override;
void CloseDevice() override;
void BufferAvailable() override;
void FramesAvailable() override;
void DestroyContext();
@@ -26,6 +29,7 @@ protected:
cubeb* m_cubeb_context = nullptr;
cubeb_stream* m_cubeb_stream = nullptr;
bool m_paused = true;
std::atomic_bool m_output_volume_changed{ false };
#ifdef WIN32
bool m_com_initialized_by_us = false;