summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@qt.io>2016-05-19 16:38:11 +0200
committerYoann Lopes <yoann.lopes@qt.io>2016-06-03 21:12:02 +0000
commit838c12bce8d0d48ef50f485e6f611990742d7b8f (patch)
tree5260582241f92f586bcb11ad8ae84913ed5875f5 /examples
parentfe46759fc0a39418a3b5f32cf78a162c35a7aef7 (diff)
Use new volume conversion API in examples.
Volumes sliders are now scaled cubically so that loudness changes are perceived linearly. Change-Id: Ibf00d6a97d872063d92457493417be5eb42f79ac Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Diffstat (limited to 'examples')
-rw-r--r--examples/multimedia/audioinput/audioinput.cpp14
-rw-r--r--examples/multimedia/audiooutput/audiooutput.cpp15
-rw-r--r--examples/multimediawidgets/player/playercontrols.cpp21
-rw-r--r--examples/multimediawidgets/player/playercontrols.h1
4 files changed, 41 insertions, 10 deletions
diff --git a/examples/multimedia/audioinput/audioinput.cpp b/examples/multimedia/audioinput/audioinput.cpp
index fd73d4f16..da5966598 100644
--- a/examples/multimedia/audioinput/audioinput.cpp
+++ b/examples/multimedia/audioinput/audioinput.cpp
@@ -315,7 +315,10 @@ void InputTest::initializeAudio()
void InputTest::createAudioInput()
{
m_audioInput = new QAudioInput(m_device, m_format, this);
- m_volumeSlider->setValue(m_audioInput->volume() * 100);
+ qreal initialVolume = QAudio::convertVolume(m_audioInput->volume(),
+ QAudio::LinearVolumeScale,
+ QAudio::CubicVolumeScale);
+ m_volumeSlider->setValue(qRound(initialVolume * 100));
m_audioInfo->start();
m_audioInput->start(m_audioInfo);
}
@@ -386,6 +389,11 @@ void InputTest::deviceChanged(int index)
void InputTest::sliderChanged(int value)
{
- if (m_audioInput)
- m_audioInput->setVolume(qreal(value) / 100);
+ if (m_audioInput) {
+ qreal linearVolume = QAudio::convertVolume(value / qreal(100),
+ QAudio::CubicVolumeScale,
+ QAudio::LinearVolumeScale);
+
+ m_audioInput->setVolume(linearVolume);
+ }
}
diff --git a/examples/multimedia/audiooutput/audiooutput.cpp b/examples/multimedia/audiooutput/audiooutput.cpp
index a00ffbb00..79e70bdc2 100644
--- a/examples/multimedia/audiooutput/audiooutput.cpp
+++ b/examples/multimedia/audiooutput/audiooutput.cpp
@@ -250,7 +250,11 @@ void AudioTest::createAudioOutput()
m_audioOutput = new QAudioOutput(m_device, m_format, this);
m_generator->start();
m_audioOutput->start(m_generator);
- m_volumeSlider->setValue(int(m_audioOutput->volume()*100.0f));
+
+ qreal initialVolume = QAudio::convertVolume(m_audioOutput->volume(),
+ QAudio::LinearVolumeScale,
+ QAudio::CubicVolumeScale);
+ m_volumeSlider->setValue(qRound(initialVolume * 100));
}
AudioTest::~AudioTest()
@@ -270,8 +274,13 @@ void AudioTest::deviceChanged(int index)
void AudioTest::volumeChanged(int value)
{
- if (m_audioOutput)
- m_audioOutput->setVolume(qreal(value/100.0f));
+ if (m_audioOutput) {
+ qreal linearVolume = QAudio::convertVolume(value / qreal(100),
+ QAudio::CubicVolumeScale,
+ QAudio::LinearVolumeScale);
+
+ m_audioOutput->setVolume(linearVolume);
+ }
}
void AudioTest::pushTimerExpired()
diff --git a/examples/multimediawidgets/player/playercontrols.cpp b/examples/multimediawidgets/player/playercontrols.cpp
index 07aa2e731..80abf59b6 100644
--- a/examples/multimediawidgets/player/playercontrols.cpp
+++ b/examples/multimediawidgets/player/playercontrols.cpp
@@ -45,6 +45,7 @@
#include <QStyle>
#include <QToolButton>
#include <QComboBox>
+#include <QAudio>
PlayerControls::PlayerControls(QWidget *parent)
: QWidget(parent)
@@ -87,7 +88,7 @@ PlayerControls::PlayerControls(QWidget *parent)
volumeSlider = new QSlider(Qt::Horizontal, this);
volumeSlider->setRange(0, 100);
- connect(volumeSlider, SIGNAL(sliderMoved(int)), this, SIGNAL(changeVolume(int)));
+ connect(volumeSlider, SIGNAL(valueChanged(int)), this, SLOT(onVolumeSliderValueChanged()));
rateBox = new QComboBox(this);
rateBox->addItem("0.5x", QVariant(0.5));
@@ -138,13 +139,20 @@ void PlayerControls::setState(QMediaPlayer::State state)
int PlayerControls::volume() const
{
- return volumeSlider ? volumeSlider->value() : 0;
+ qreal linearVolume = QAudio::convertVolume(volumeSlider->value() / qreal(100),
+ QAudio::CubicVolumeScale,
+ QAudio::LinearVolumeScale);
+
+ return qRound(linearVolume * 100);
}
void PlayerControls::setVolume(int volume)
{
- if (volumeSlider)
- volumeSlider->setValue(volume);
+ qreal cubicVolume = QAudio::convertVolume(volume / qreal(100),
+ QAudio::LinearVolumeScale,
+ QAudio::CubicVolumeScale);
+
+ volumeSlider->setValue(qRound(cubicVolume * 100));
}
bool PlayerControls::isMuted() const
@@ -203,3 +211,8 @@ void PlayerControls::updateRate()
{
emit changeRate(playbackRate());
}
+
+void PlayerControls::onVolumeSliderValueChanged()
+{
+ emit changeVolume(volume());
+}
diff --git a/examples/multimediawidgets/player/playercontrols.h b/examples/multimediawidgets/player/playercontrols.h
index 0ab195faa..d29a06d6c 100644
--- a/examples/multimediawidgets/player/playercontrols.h
+++ b/examples/multimediawidgets/player/playercontrols.h
@@ -82,6 +82,7 @@ private slots:
void playClicked();
void muteClicked();
void updateRate();
+ void onVolumeSliderValueChanged();
private:
QMediaPlayer::State playerState;