diff --git a/src/c-wrapper/api/c-call.cpp b/src/c-wrapper/api/c-call.cpp index e1e9c4058..2294b527b 100644 --- a/src/c-wrapper/api/c-call.cpp +++ b/src/c-wrapper/api/c-call.cpp @@ -1048,13 +1048,7 @@ void linphone_call_stop_recording (LinphoneCall *call) { } LinphonePlayer *linphone_call_get_player (LinphoneCall *call) { -#if 0 - if (!call->player) - call->player=linphone_call_build_player(call); - return call->player; -#else - return nullptr; -#endif + return L_GET_CPP_PTR_FROM_C_OBJECT(call)->getPlayer(); } bool_t linphone_call_media_in_progress (const LinphoneCall *call) { diff --git a/src/call/call-p.h b/src/call/call-p.h index a8e5666b2..a5885c403 100644 --- a/src/call/call-p.h +++ b/src/call/call-p.h @@ -67,6 +67,8 @@ public: SalCallOp *getOp () const; void setAudioMuted (bool value); + void createPlayer () const; + private: /* CallListener */ void onAckBeingSent (LinphoneHeaders *headers) override; @@ -89,6 +91,7 @@ private: LinphoneCore *core = nullptr; Conference *conference = nullptr; + mutable LinphonePlayer *player = nullptr; CallCallbackObj nextVideoFrameDecoded; diff --git a/src/call/call.cpp b/src/call/call.cpp index 9d6341f04..d68a20330 100644 --- a/src/call/call.cpp +++ b/src/call/call.cpp @@ -103,6 +103,13 @@ int CallPrivate::startInvite (const Address *destination) { // ----------------------------------------------------------------------------- +void CallPrivate::createPlayer () const { + L_Q(); + player = linphone_call_build_player(L_GET_C_BACK_PTR(q)); +} + +// ----------------------------------------------------------------------------- + void CallPrivate::onAckBeingSent (LinphoneHeaders *headers) { if (lcall) linphone_call_notify_ack_processing(lcall, headers, false); @@ -445,6 +452,13 @@ const MediaSessionParams *Call::getParams () const { return static_cast(d->getActiveSession().get())->getMediaParams(); } +LinphonePlayer *Call::getPlayer () const { + L_D(); + if (!d->player) + d->createPlayer(); + return d->player; +} + float Call::getPlayVolume () const { L_D(); return static_cast(d->getActiveSession().get())->getPlayVolume(); diff --git a/src/call/call.h b/src/call/call.h index 0b46058db..fee720d5a 100644 --- a/src/call/call.h +++ b/src/call/call.h @@ -89,6 +89,7 @@ public: float getMicrophoneVolumeGain () const; void *getNativeVideoWindowId () const; const MediaSessionParams *getParams () const; + LinphonePlayer *getPlayer () const; float getPlayVolume () const; LinphoneReason getReason () const; float getRecordVolume () const;