From 80834c14c25db4cdda8e70273984ddb33c7496f9 Mon Sep 17 00:00:00 2001 From: piernov Date: Tue, 4 Oct 2011 20:31:51 +0200 Subject: phonon 4.5.0-3 fix compilation pulseaudio 1.0 --- kde/phonon/pulsestream.cpp | 104 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 kde/phonon/pulsestream.cpp (limited to 'kde/phonon/pulsestream.cpp') diff --git a/kde/phonon/pulsestream.cpp b/kde/phonon/pulsestream.cpp new file mode 100644 index 000000000..e129f1b8f --- /dev/null +++ b/kde/phonon/pulsestream.cpp @@ -0,0 +1,104 @@ +/* This file is part of the KDE project + Copyright (C) 2010 Colin Guthrie + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), Nokia Corporation + (or its successors, if any) and the KDE Free Qt Foundation, which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . + +*/ + +#include "pulsestream_p.h" +#include + +QT_BEGIN_NAMESPACE + +namespace Phonon +{ + +PulseStream::PulseStream(QString streamUuid) + : QObject() + , mStreamUuid(streamUuid) + , mIndex(PA_INVALID_INDEX) + , mDevice(-1) + , mMute(false) +{ + pa_cvolume_init(&mVolume); +} + +PulseStream::~PulseStream() +{ +} + +QString PulseStream::uuid() +{ + return mStreamUuid; +} + +uint32_t PulseStream::index() +{ + return mIndex; +} + +void PulseStream::setIndex(uint32_t index) +{ + mIndex = index; +} + +uint8_t PulseStream::channels() +{ + return mVolume.channels; +} + +void PulseStream::setDevice(int device) +{ + if (mDevice != device) { + mDevice = device; + emit usingDevice(device); + } +} + +// Copied from AudioOutput +static const qreal LOUDNESS_TO_VOLTAGE_EXPONENT = qreal(0.67); +static const qreal VOLTAGE_TO_LOUDNESS_EXPONENT = qreal(1.0/LOUDNESS_TO_VOLTAGE_EXPONENT); + +void PulseStream::setVolume(const pa_cvolume *volume) +{ + if (pa_cvolume_equal(&mVolume, volume) == 0) { + memcpy(&mVolume, volume, sizeof(mVolume)); + qreal vol = (qreal)pa_cvolume_avg(volume) / PA_VOLUME_NORM; + // AudioOutput expects the "backend" to supply values that have been + // adjusted for Stephens' law, so we need to fudge them accordingly + // so that the %ages match up in KMix/the application's own slider. + emit volumeChanged(qPow(vol, VOLTAGE_TO_LOUDNESS_EXPONENT)); + } +} + +void PulseStream::setMute(bool mute) +{ + if (mMute != mute) { + mMute = mute; + emit muteChanged(mMute); + } +} + + +} // namespace Phonon + +QT_END_NAMESPACE + +#include "moc_pulsestream_p.cpp" + +// vim: sw=4 ts=4 -- cgit v1.2.3-70-g09d2