From fe46759fc0a39418a3b5f32cf78a162c35a7aef7 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Fri, 13 May 2016 17:13:03 +0200 Subject: Add new volume conversion API. All Qt Multimedia volume APIs expect a linear volume factor. However, UI volume controls should typically use a logarithmic or cubic scale to match how the human ear perceives loudness. The new helper function (C++ and QML) provides a way to do the conversion from one scale to another. Change-Id: If7795426b728ab0e8fd6635988dbc9be795e3e5e Reviewed-by: Christian Stromme --- .../doc/snippets/multimedia-snippets/audio.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/multimedia/doc/snippets/multimedia-snippets') diff --git a/src/multimedia/doc/snippets/multimedia-snippets/audio.cpp b/src/multimedia/doc/snippets/multimedia-snippets/audio.cpp index 310206405..736d1b306 100644 --- a/src/multimedia/doc/snippets/multimedia-snippets/audio.cpp +++ b/src/multimedia/doc/snippets/multimedia-snippets/audio.cpp @@ -47,6 +47,7 @@ #include "qaudiooutput.h" #include "qaudioprobe.h" #include "qaudiodecoder.h" +#include "qmediaplayer.h" class AudioInputExample : public QObject { Q_OBJECT @@ -247,3 +248,18 @@ void AudioDecodingExample::decode() // Now wait for bufferReady() signal and call decoder->read() //! [Local audio decoding] } + +QMediaPlayer player; + +//! [Volume conversion] +void applyVolume(int volumeSliderValue) +{ + // volumeSliderValue is in the range [0..100] + + qreal linearVolume = QAudio::convertVolume(volumeSliderValue / qreal(100.0), + QAudio::CubicVolumeScale, + QAudio::LinearVolumeScale); + + player.setVolume(qRound(linearVolume * 100)); +} +//! [Volume conversion] -- cgit v1.2.3