Duckstation/src/frontend-common/cubeb_audio_stream.h

33 lines
766 B
C
Raw Normal View History

2020-01-11 03:28:40 +00:00
#pragma once
#include "util/audio_stream.h"
2020-01-11 03:28:40 +00:00
#include <cstdint>
2022-07-27 14:42:41 +00:00
struct cubeb;
struct cubeb_stream;
class CubebAudioStream : public AudioStream
2020-01-11 03:28:40 +00:00
{
public:
2022-07-27 14:42:41 +00:00
CubebAudioStream(u32 sample_rate, u32 channels, u32 buffer_ms, AudioStretchMode stretch);
2020-01-11 03:28:40 +00:00
~CubebAudioStream();
2022-07-27 14:42:41 +00:00
void SetPaused(bool paused) override;
void SetOutputVolume(u32 volume) override;
2020-01-11 03:28:40 +00:00
2022-07-27 14:42:41 +00:00
bool Initialize(u32 latency_ms);
2022-07-27 14:42:41 +00:00
private:
static void LogCallback(const char* fmt, ...);
2020-01-11 03:28:40 +00:00
static long DataCallback(cubeb_stream* stm, void* user_ptr, const void* input_buffer, void* output_buffer,
long nframes);
2022-07-27 14:42:41 +00:00
void DestroyContextAndStream();
cubeb* m_context = nullptr;
cubeb_stream* stream = nullptr;
2021-06-28 10:16:48 +00:00
#ifdef _WIN32
bool m_com_initialized_by_us = false;
#endif
2020-01-11 03:28:40 +00:00
};