PulseAudio Qt Bindings

sink.cpp
1/*
2 SPDX-FileCopyrightText: 2014-2015 Harald Sitter <sitter@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#include "sink.h"
8#include "sink_p.h"
9
10#include "context.h"
11#include "context_p.h"
12#include "server.h"
13#include "sinkinput.h"
14
15#include "device_p.h"
16#include "volumeobject_p.h"
17
18namespace PulseAudioQt
19{
20Sink::Sink(QObject *parent)
21 : Device(parent)
22 , d(new SinkPrivate(this))
23{
24 connect(Context::instance()->server(), &Server::defaultSinkChanged, this, &Sink::defaultChanged);
25}
26
27SinkPrivate::SinkPrivate(Sink *q)
28 : q(q)
29{
30}
31
32Sink::~Sink()
33{
34 delete d;
35}
36
37void SinkPrivate::update(const pa_sink_info *info)
38{
39 q->Device::d->updateDevice(info);
40
41 if (m_monitorIndex != info->monitor_source) {
42 m_monitorIndex = info->monitor_source;
43 Q_EMIT q->monitorIndexChanged();
44 }
45}
46
47void Sink::setVolume(qint64 volume)
48{
49 qCDebug(PULSEAUDIOQT) << "Changing volume of Sink" << name() << " to " << volume;
50 Context::instance()->d->setGenericVolume(index(), -1, volume, VolumeObject::d->cvolume(), &pa_context_set_sink_volume_by_index);
51}
52
53void Sink::setMuted(bool muted)
54{
55 Context::instance()->d->setGenericMute(index(), muted, &pa_context_set_sink_mute_by_index);
56}
57
58void Sink::setActivePortIndex(quint32 port_index)
59{
60 Port *port = qobject_cast<Port *>(ports().at(port_index));
61 if (!port) {
62 qCWarning(PULSEAUDIOQT) << "invalid port set request" << port_index;
63 return;
64 }
65 Context::instance()->d->setGenericPort(index(), port->name(), &pa_context_set_sink_port_by_index);
66}
67
68void Sink::setChannelVolume(int channel, qint64 volume)
69{
70 Context::instance()->d->setGenericVolume(index(), channel, volume, VolumeObject::d->cvolume(), &pa_context_set_sink_volume_by_index);
71}
72
73bool Sink::isDefault() const
74{
75 return Context::instance()->server()->defaultSink() == this;
76}
77
78void Sink::setDefault(bool enable)
79{
80 if (!isDefault() && enable) {
81 Context::instance()->server()->setDefaultSink(this);
82 }
83}
84
85quint32 Sink::monitorIndex() const
86{
87 return d->m_monitorIndex;
88}
89
90void Sink::setChannelVolumes(const QList<qint64> &channelVolumes)
91{
92 Context::instance()->d->setGenericVolumes(index(), channelVolumes, VolumeObject::d->m_volume, &pa_context_set_sink_volume_by_index);
93}
94
95void Sink::switchStreams()
96{
97 const auto sinkInputs = Context::instance()->sinkInputs();
98 for (const auto &sinkInput : sinkInputs) {
99 sinkInput->setDeviceIndex(index());
100 }
101}
102
103} // PulseAudioQt
A PulseAudio port.
Definition port.h:19
The primary namespace of PulseAudioQt.
Definition card.cpp:17
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Fri Oct 11 2024 12:12:38 by doxygen 1.12.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.