on ac4b821 help sign in
unity8/plugins/HudClient/volumepeakdetector.h
78 lines 1.8 kB history raw
1/*
2 * Copyright (C) 2012, 2013 Canonical, Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
17#ifndef VOLUMEPEAKDETECTOR_H
18#define VOLUMEPEAKDETECTOR_H
20#include <QObject>
22#include <QThread>
24#include <pulse/pulseaudio.h>
26class PulseAudioVolumePeakDetector : public QObject
28 Q_OBJECT
30public:
31 PulseAudioVolumePeakDetector();
33 int nAccumulatedValuesLimit() const;
34 void setNAccumulatedValuesLimit(int limit);
36 void startStream();
37 void processData();
38 void quit();
40public Q_SLOTS:
41 void start();
43Q_SIGNALS:
44 void newPeak(float value);
46private:
47 float m_accumulatedValue;
48 int m_nAccumulatedValues;
49 int m_accumulatedValuesLimit;
50 pa_context *m_context;
51 pa_mainloop_api *m_mainloop_api;
52 pa_stream *m_stream;
53};
55class VolumePeakDetector : public QObject
57 Q_OBJECT
58 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled)
59 Q_PROPERTY(int desiredInterval READ desiredInterval WRITE setDesiredInterval)
61public:
62 VolumePeakDetector();
64 bool enabled() const;
65 void setEnabled(int enabled);
67 int desiredInterval() const;
68 void setDesiredInterval(int interval);
70Q_SIGNALS:
71 void newPeak(float volume);
73private:
74 QThread m_thread;
75 PulseAudioVolumePeakDetector m_volumeDetector;
76};
78#endif