44 lines
1.1 KiB
C++
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;
|
|
};
|
|
|