From f0b0c845c0b7f8e615b0c67eaa3bb94a4eb0aeb2 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Fri, 5 Nov 2021 08:29:08 +0100 Subject: [PATCH] Fix volumes : - In settings : apply volume to general setting. - In call : use general volume if it cannot be set/get directly from call. - ALSA : allow get/set --- CHANGELOG.md | 7 +++++++ .../src/components/call/CallModel.cpp | 20 +++++++++++++++---- .../src/components/settings/SettingsModel.cpp | 2 ++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5339df6df..acf3945e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## 4.4.0 - [Undefined] +## Added + +## Fixed + +- Changing volume in settings has a overall effect. +- ALSA volumes can be view/changed while being in call. + ## 4.3.1 - 2021-11-04 ### Added diff --git a/linphone-app/src/components/call/CallModel.cpp b/linphone-app/src/components/call/CallModel.cpp index c75d592c2..43329aa06 100644 --- a/linphone-app/src/components/call/CallModel.cpp +++ b/linphone-app/src/components/call/CallModel.cpp @@ -199,22 +199,34 @@ void CallModel::updateStats (const shared_ptr &callSt // ----------------------------------------------------------------------------- float CallModel::getSpeakerVolumeGain () const { - return mCall->getSpeakerVolumeGain(); + float gain = mCall->getSpeakerVolumeGain(); + if( gain < 0) + gain = CoreManager::getInstance()->getSettingsModel()->getPlaybackGain(); + return gain; } void CallModel::setSpeakerVolumeGain (float volume) { Q_ASSERT(volume >= 0.0f && volume <= 1.0f); - mCall->setSpeakerVolumeGain(volume); + if( mCall->getSpeakerVolumeGain() >= 0) + mCall->setSpeakerVolumeGain(volume); + else + CoreManager::getInstance()->getSettingsModel()->setPlaybackGain(volume); emit speakerVolumeGainChanged(getSpeakerVolumeGain()); } float CallModel::getMicroVolumeGain () const { - return mCall->getMicrophoneVolumeGain(); + float gain = mCall->getMicrophoneVolumeGain(); + if( gain < 0) + gain = CoreManager::getInstance()->getSettingsModel()->getCaptureGain(); + return gain; } void CallModel::setMicroVolumeGain (float volume) { Q_ASSERT(volume >= 0.0f && volume <= 1.0f); - mCall->setMicrophoneVolumeGain(volume); + if(mCall->getMicrophoneVolumeGain() >= 0) + mCall->setMicrophoneVolumeGain(volume); + else + CoreManager::getInstance()->getSettingsModel()->setCaptureGain(volume); emit microVolumeGainChanged(getMicroVolumeGain()); } diff --git a/linphone-app/src/components/settings/SettingsModel.cpp b/linphone-app/src/components/settings/SettingsModel.cpp index c10c7e2d2..6f711bbfa 100644 --- a/linphone-app/src/components/settings/SettingsModel.cpp +++ b/linphone-app/src/components/settings/SettingsModel.cpp @@ -224,6 +224,7 @@ float SettingsModel::getPlaybackGain() const { } void SettingsModel::setPlaybackGain(float gain) { + CoreManager::getInstance()->getCore()->setPlaybackGainDb(MediastreamerUtils::linearToDb(gain)); if (mSimpleCaptureGraph && mSimpleCaptureGraph->isRunning()) { mSimpleCaptureGraph->setPlaybackGain(gain); } @@ -235,6 +236,7 @@ float SettingsModel::getCaptureGain() const { } void SettingsModel::setCaptureGain(float gain) { + CoreManager::getInstance()->getCore()->setMicGainDb(MediastreamerUtils::linearToDb(gain)); if (mSimpleCaptureGraph && mSimpleCaptureGraph->isRunning()) { mSimpleCaptureGraph->setCaptureGain(gain); }