diff --git a/src/sip/sipcall.cpp b/src/sip/sipcall.cpp index 4114a7ef4a30a7eea1c9e52b9db31cd802028866..c250885295274b4396ace9a63a9ded2380df890a 100644 --- a/src/sip/sipcall.cpp +++ b/src/sip/sipcall.cpp @@ -842,12 +842,17 @@ SIPCall::startAllMedia() #endif rtp->updateMedia(remote, local); - if (isIceRunning()) { - rtp->start(newIceSocket(ice_comp_id + 0), - newIceSocket(ice_comp_id + 1)); - ice_comp_id += 2; - } else - rtp->start(); + + // Not restarting media loop on hold as it's a huge waste of CPU ressources + // because of the audio loop + if (getState() != CallState::HOLD) { + if (isIceRunning()) { + rtp->start(newIceSocket(ice_comp_id + 0), + newIceSocket(ice_comp_id + 1)); + ice_comp_id += 2; + } else + rtp->start(); + } switch (local.type) { #ifdef RING_VIDEO