From f75b313569a44f191c1214842a4f93c3319521ce Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sat, 10 Nov 2018 14:41:38 +0000 Subject: added PulseAudio volume control (#497) git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8413 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Output/pulseaudio/outputpulseaudio.h | 45 ++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) (limited to 'src/plugins/Output/pulseaudio/outputpulseaudio.h') diff --git a/src/plugins/Output/pulseaudio/outputpulseaudio.h b/src/plugins/Output/pulseaudio/outputpulseaudio.h index 8ea4e69dd..7ca5b20d4 100644 --- a/src/plugins/Output/pulseaudio/outputpulseaudio.h +++ b/src/plugins/Output/pulseaudio/outputpulseaudio.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2014 by Ilya Kotov * + * Copyright (C) 2006-2018 by Ilya Kotov * * forkotov02@ya.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -24,9 +24,12 @@ #include #include extern "C"{ -#include +#include } #include +#include + +class VolumePulseAudio; /** @author Ilya Kotov @@ -43,12 +46,48 @@ public: qint64 writeAudio(unsigned char *data, qint64 maxSize); void drain(); void reset(); + void setVolume(const VolumeSettings &v); + + static OutputPulseAudio *instance; + static VolumePulseAudio *volumeControl; private: // helper functions void uninitialize(); - pa_simple *m_connection; + bool isReady() const; + void poll(); + //callbacks + static void subscribe_cb(pa_context *ctx, pa_subscription_event_type t, uint32_t index, void *data); + static void info_cb (pa_context *, const pa_sink_input_info * info, int, void * data); + static void context_success_cb (pa_context *, int success, void *data); + static void stream_success_cb (pa_stream *, int success, void *data); + + //pa_simple *m_connection; + pa_mainloop *m_loop; + pa_context *m_ctx; + pa_stream *m_stream; QHash m_pa_channels; + bool changed = false; + bool flushed = false; +}; + +/** + @author Ilya Kotov +*/ +class VolumePulseAudio : public Volume +{ +public: + VolumePulseAudio(); + ~VolumePulseAudio(); + + void updateVolume(const pa_cvolume &v); + void setVolume(const VolumeSettings &vol); + VolumeSettings volume() const; + void restore(); + bool hasNotifySignal() const; + +private: + VolumeSettings m_volume; }; #endif // OUTPUTPULSEAUDIO_H -- cgit v1.2.3-13-gbd6f