From 15642ab1b57af0d28a4af02a24c9de26aacc8812 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Fri, 4 Jul 2025 10:33:21 +0200 Subject: [PATCH] Make asymetric video call --- .../src/components/call/CallModel.cpp | 28 ++++++++----------- linphone-app/ui/views/App/Calls/Incall.qml | 4 +-- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/linphone-app/src/components/call/CallModel.cpp b/linphone-app/src/components/call/CallModel.cpp index 3fd931544..59ee7e843 100644 --- a/linphone-app/src/components/call/CallModel.cpp +++ b/linphone-app/src/components/call/CallModel.cpp @@ -426,21 +426,21 @@ bool CallModel::transferToAnother (const QString &peerAddress) { } // ----------------------------------------------------------------------------- -void CallModel::acceptVideoRequest () { +void CallModel::acceptVideoRequest () {/* if(mCall) { shared_ptr params = CoreManager::getInstance()->getCore()->createCallParams(mCall); params->enableVideo(true); mCall->acceptUpdate(params); - } + }*/ } -void CallModel::rejectVideoRequest () { +void CallModel::rejectVideoRequest () {/* if(mCall) { shared_ptr params = CoreManager::getInstance()->getCore()->createCallParams(mCall); params->enableVideo(false); mCall->acceptUpdate(params); - } + }*/ } void CallModel::takeSnapshot () { @@ -556,8 +556,8 @@ void CallModel::handleCallStateChanged (const shared_ptr &call, case linphone::Call::State::UpdatedByRemote: qDebug() << "UpdatedByRemote : " << (mCall ? QString( "Video enabled ? CurrentParams:") + mCall->getCurrentParams()->videoEnabled() + QString(", RemoteParams:")+mCall->getRemoteParams()->videoEnabled() : " call NULL"); if (mCall && !mCall->getCurrentParams()->videoEnabled() && mCall->getRemoteParams()->videoEnabled()) { - mCall->deferUpdate(); - emit videoRequested(); + //mCall->deferUpdate(); + //emit videoRequested(); } break; @@ -595,7 +595,8 @@ void CallModel::accept (bool withVideo) { shared_ptr core = coreManager->getCore(); if(mCall) { shared_ptr params = core->createCallParams(mCall); - params->enableVideo(withVideo); + params->enableVideo(CoreManager::getInstance()->getSettingsModel()->getVideoEnabled()); + params->setVideoDirection(withVideo ? linphone::MediaDirection::SendRecv : linphone::MediaDirection::RecvOnly); setRecordFile(params); auto localAddress = mCall->getCallLog()->getLocalAddress(); for(auto account : coreManager->getAccountList()){ @@ -792,10 +793,6 @@ bool CallModel::getCameraEnabled () const{ void CallModel::setCameraEnabled (bool status){ shared_ptr core = CoreManager::getInstance()->getCore(); - if (!CoreManager::getInstance()->getSettingsModel()->getVideoEnabled()) { - qWarning() << QStringLiteral("Unable to update video call property. (Video not enabled.)"); - return; - } if(mCall) { switch (mCall->getState()) { case linphone::Call::State::Connected: @@ -806,11 +803,8 @@ void CallModel::setCameraEnabled (bool status){ return; } } - if (status == getCameraEnabled()) - return; - shared_ptr params = core->createCallParams(mCall); - params->enableVideo(true); + params->enableVideo(CoreManager::getInstance()->getSettingsModel()->getVideoEnabled()); params->setVideoDirection(status ? linphone::MediaDirection::SendRecv : linphone::MediaDirection::RecvOnly); mCall->update(params); } @@ -898,8 +892,8 @@ void CallModel::setVideoEnabled (bool status) { return; shared_ptr params = core->createCallParams(mCall); - params->enableVideo(status); - + params->enableVideo(CoreManager::getInstance()->getSettingsModel()->getVideoEnabled()); + params->setVideoDirection(status ? linphone::MediaDirection::SendRecv : linphone::MediaDirection::RecvOnly); mCall->update(params); } } diff --git a/linphone-app/ui/views/App/Calls/Incall.qml b/linphone-app/ui/views/App/Calls/Incall.qml index 0ca9e0f62..2ce726d7a 100644 --- a/linphone-app/ui/views/App/Calls/Incall.qml +++ b/linphone-app/ui/views/App/Calls/Incall.qml @@ -596,8 +596,8 @@ Rectangle { camera._activateCamera = true }else callModel.cameraEnabled = !callModel.cameraEnabled - }else{// In one-one, we deactivate all videos. - callModel.videoEnabled = !callModel.videoEnabled + }else{ + callModel.cameraEnabled = !callModel.cameraEnabled } } Connections{// Enable camera only when status is ok