Duckstation/src/frontend-common/cubeb_audio_stream.h
Connor McLaughlin c89d94c2ff Move Cubeb AudioStream to FrontendCommon
This way it doesn't need to be built for libretro.
2020-10-11 12:21:08 +10:00

36 lines
887 B
C++

#pragma once
#include "common/audio_stream.h"
#include "cubeb/cubeb.h"
#include <cstdint>
class CubebAudioStream final : public AudioStream
{
public:
CubebAudioStream();
~CubebAudioStream();
static std::unique_ptr<AudioStream> Create();
protected:
bool IsOpen() const { return m_cubeb_stream != nullptr; }
bool OpenDevice() override;
void PauseDevice(bool paused) override;
void CloseDevice() override;
void FramesAvailable() override;
void DestroyContext();
static long DataCallback(cubeb_stream* stm, void* user_ptr, const void* input_buffer, void* output_buffer,
long nframes);
static void StateCallback(cubeb_stream* stream, void* user_ptr, cubeb_state state);
cubeb* m_cubeb_context = nullptr;
cubeb_stream* m_cubeb_stream = nullptr;
bool m_paused = true;
#ifdef WIN32
bool m_com_initialized_by_us = false;
#endif
};