diff --git a/src/avmodel.cpp b/src/avmodel.cpp
index 98c0beddcad9cf9ce1987f29e68d99ed4067c110..100e267e15fedcb300af15f7cb0d8872bba517f2 100644
--- a/src/avmodel.cpp
+++ b/src/avmodel.cpp
@@ -489,6 +489,26 @@ AVModelPimpl::init()
             this, &AVModelPimpl::slotCallStateChanged);
     connect(&*renderers_[video::PREVIEW_RENDERER_ID], &api::video::Renderer::frameUpdated,
         this, &AVModelPimpl::slotFrameUpdated);
+
+    auto startedPreview = false;
+    auto restartRenderers = [&](const QStringList& callList) {
+        for (const auto& callId : callList)
+        {
+            MapStringString rendererInfos = VideoManager::instance().
+                getRenderer(callId);
+            auto shmPath = rendererInfos[DRing::Media::Details::SHM_PATH].toStdString();
+            auto width = rendererInfos[DRing::Media::Details::WIDTH].toInt();
+            auto height = rendererInfos[DRing::Media::Details::HEIGHT].toInt();
+            if (width > 0 && height > 0) {
+                startedPreview = true;
+                startedDecoding(callId.toStdString(), shmPath, width, height);
+            }
+        }
+    };
+    restartRenderers(CallManager::instance().getCallList());
+    restartRenderers(CallManager::instance().getConferenceList());
+    if (startedPreview)
+        restartRenderers({"local"});
 }
 
 std::string
@@ -517,7 +537,6 @@ void
 AVModelPimpl::startedDecoding(const std::string& id, const std::string& shmPath, int width, int height)
 {
     const std::string res = std::to_string(width) + "x" + std::to_string(height);
-    qDebug() << "startedDecoding for sink id: " << id.c_str();
     {
         std::lock_guard<std::mutex> lk(renderers_mtx_);
         auto search = renderers_.find(id);
diff --git a/src/qtwrapper/videomanager_wrap.h b/src/qtwrapper/videomanager_wrap.h
index 211e9da61ad0ca1bacca9d10d7d74287324cad67..57f92f68eebb44897b02dfb67fb7b7ce580a8eeb 100644
--- a/src/qtwrapper/videomanager_wrap.h
+++ b/src/qtwrapper/videomanager_wrap.h
@@ -230,6 +230,11 @@ public Q_SLOTS: // METHODS
         return QString::fromStdString(DRing::startLocalRecorder(audioOnly, path.toStdString()));
     }
 
+    MapStringString getRenderer(const QString& id)
+    {
+        return convertMap(DRing::getRenderer(id.toStdString()));
+    }
+
 Q_SIGNALS: // SIGNALS
     void deviceEvent();
     void startedDecoding(const QString &id, const QString &shmPath, int width, int height, bool isMixer);
diff --git a/test/mocks/videomanager_mock.h b/test/mocks/videomanager_mock.h
index 530db103f303e9903ccaa2c8925f2de478ad573c..558c0b616c47a7df9ee41adaf307dd9cdf805f43 100644
--- a/test/mocks/videomanager_mock.h
+++ b/test/mocks/videomanager_mock.h
@@ -190,6 +190,13 @@ public Q_SLOTS: // METHODS
         return "/tmp/foobar";
     }
 
+    MapStringString getRenderer(const QString& id)
+    {
+        Q_UNUSED(id)
+        return {};
+    }
+
+
 Q_SIGNALS: // SIGNALS
     void deviceEvent();
     void startedDecoding(const QString &id, const QString &shmPath, int width, int height, bool isMixer);