audioserver/PulseAudio/inc/PulseAudioCPP.h
2024-06-21 08:22:20 +02:00

44 lines
1.1 KiB
C++

#pragma once
#include <string>
#include <pulse/pulseaudio.h>
#include <list>
#include "../3rd/Subject.h"
class PulseAudioCPP : public Subject
{
public:
PulseAudioCPP(std::string appName);
virtual ~PulseAudioCPP();
void createStream(std::string name);
char* getBuffer() { return mp_buffer; };
unsigned int getBufferSize() { return m_bytesInBuffer; };
private:
static void subscriptionCB(pa_context* c, pa_subscription_event_type_t t, uint32_t idx, void* userdata);
static void contextCB(pa_context* c, int success, void* userdata);
static void contextReadyCB(pa_context* context, void* userdata);
//stream callback
void readStream();
static void streamSuccessCB (pa_stream* s, int success, void* userdata);
static void streamRequestCB (pa_stream* p, size_t nbytes, void* userdata);
static void streamNotifyCB (pa_stream* p, void* userdata);
static void streamEventCB (pa_stream* p, const char* name, pa_proplist* pl, void* userdata);
private:
pa_threaded_mainloop* mp_threadedLoop;
pa_mainloop_api* mp_mainLoop;
pa_context* mp_context;
std::list<pa_stream*> mp_streamList;
char* mp_buffer;
unsigned int m_bytesInBuffer;
};