diff --git a/src/avmodel.cpp b/src/avmodel.cpp
index d0ffa4c9befdc06386940d87e3defd57898cc1cd..2f0dc34d055c44ad8a21050f612cc1f9d2c20e14 100644
--- a/src/avmodel.cpp
+++ b/src/avmodel.cpp
@@ -404,7 +404,16 @@ AVModel::stopPreview()
         qWarning() << "Can't find preview renderer!";
         return;
     }
-    VideoManager::instance().stopCamera();
+    // If an active call does not have video muted, don't stop the camera
+    // stopCamera() calls switchInput(""), which disables the camera
+    bool previewShouldBeStopped = true;
+    for (auto it = pimpl_->renderers_.cbegin(); it != pimpl_->renderers_.cend(); ++it) {
+        if (it->second->getId() != video::PREVIEW_RENDERER_ID)
+            // If rendering, don't stop preview
+            previewShouldBeStopped &= !it->second->isRendering();
+    }
+    if (previewShouldBeStopped)
+        VideoManager::instance().stopCamera();
     pimpl_->renderers_[video::PREVIEW_RENDERER_ID]->stopRendering();
 }
 
diff --git a/src/private/videorenderermanager.cpp b/src/private/videorenderermanager.cpp
index 9859606b5e705300e27dd240a91e2b004a843b3d..0ea7aeefb36bc2639ea0d8fef5c811a0ee7bc211 100644
--- a/src/private/videorenderermanager.cpp
+++ b/src/private/videorenderermanager.cpp
@@ -95,7 +95,6 @@ VideoRendererManager::deactivate()
     disconnect( &interface , &VideoManagerInterface::stoppedDecoding, d_ptr.data(), &VideoRendererManagerPrivate::stoppedDecoding);
 }
 
-
 VideoRendererManager::~VideoRendererManager()
 {
 //    delete d_ptr;
@@ -170,9 +169,18 @@ Video::Renderer* VideoRendererManager::previewRenderer()
 ///Stop video preview
 void VideoRendererManager::stopPreview()
 {
-   VideoManager::instance().stopCamera();
+    // If an active call does not have video muted, don't stop the camera
+    // stopCamera() calls switchInput(""), which disables the camera
+    bool previewShouldBeStopped = true;
+    for (auto it = d_ptr->m_hRenderers.begin(); it != d_ptr->m_hRenderers.end(); ++it) {
+        if (it.key() != PREVIEW_RENDERER_ID)
+            // If rendering, don't stop preview
+            previewShouldBeStopped &= !it.value()->isRendering();
+    }
+    if (previewShouldBeStopped)
+        VideoManager::instance().stopCamera();
 
-   d_ptr->m_PreviewState = false;
+    d_ptr->m_PreviewState = false;
 }
 
 ///Start video preview
@@ -229,7 +237,6 @@ void VideoRendererManagerPrivate::startedDecoding(const QString& id, const QStri
 
 #endif
 
-
       QThread* t = new QThread(this);
       m_hThreads[r] = t;