aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Output/pulseaudio/outputpulseaudio.h
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-11-10 14:41:38 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-11-10 14:41:38 +0000
commitf75b313569a44f191c1214842a4f93c3319521ce (patch)
tree2e18e0f6ffe76c63b8b8c0abd9f957010b074fe6 /src/plugins/Output/pulseaudio/outputpulseaudio.h
parente7cbfaf4e7b7573c25e440fbd17057dabe6e1b47 (diff)
downloadqmmp-f75b313569a44f191c1214842a4f93c3319521ce.tar.gz
qmmp-f75b313569a44f191c1214842a4f93c3319521ce.tar.bz2
qmmp-f75b313569a44f191c1214842a4f93c3319521ce.zip
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
Diffstat (limited to 'src/plugins/Output/pulseaudio/outputpulseaudio.h')
-rw-r--r--src/plugins/Output/pulseaudio/outputpulseaudio.h45
1 files changed, 42 insertions, 3 deletions
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 <QObject>
#include <QHash>
extern "C"{
-#include <pulse/simple.h>
+#include <pulse/pulseaudio.h>
}
#include <qmmp/output.h>
+#include <qmmp/volume.h>
+
+class VolumePulseAudio;
/**
@author Ilya Kotov <forkotov02@ya.ru>
@@ -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 <Qmmp::ChannelPosition, pa_channel_position_t> m_pa_channels;
+ bool changed = false;
+ bool flushed = false;
+};
+
+/**
+ @author Ilya Kotov <forkotov02@ya.ru>
+*/
+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