diff --git a/src/api/newvideo.h b/src/api/newvideo.h
index 0d1fcaf59cd68d88f25f1dbba0d1f5687aef0136..c358200337652501befd931494127a4d8a20a88c 100644
--- a/src/api/newvideo.h
+++ b/src/api/newvideo.h
@@ -103,7 +103,7 @@ class LIB_EXPORT Renderer : public QObject {
     Q_OBJECT
 public:
     Renderer(const std::string& id, Settings videoSettings,
-        const std::string& shmPath = "");
+        const std::string& shmPath = "", const bool useAVFrame = false);
     ~Renderer();
 
     /**
diff --git a/src/avmodel.cpp b/src/avmodel.cpp
index 00e871e6dfb4ecf3ba20e0083b41e8a0149ad70e..5a6cd923c69de04920836c4fbf5b71c2fdf16c5f 100644
--- a/src/avmodel.cpp
+++ b/src/avmodel.cpp
@@ -67,6 +67,7 @@ public:
     std::map<std::string, std::unique_ptr<video::Renderer>> renderers_;
     // store if a renderers is for a finished call
     std::map<std::string, bool> finishedRenderers_;
+    bool useAVFrame_ = false;
 
 #ifndef ENABLE_LIBWRAP
     // TODO: Init Video Renderers from daemon (see: https://git.ring.cx/savoirfairelinux/ring-daemon/issues/59)
@@ -441,9 +442,11 @@ AVModel::startLocalRecorder(const bool& audioOnly) const
 
 void
 AVModel::useAVFrame(bool useAVFrame) {
+    pimpl_->useAVFrame_ = useAVFrame;
     for (auto it = pimpl_->renderers_.cbegin(); it != pimpl_->renderers_.cend(); ++it) {
-        it->second->useAVFrame(useAVFrame);
+        it->second->useAVFrame(pimpl_->useAVFrame_);
     }
+    //TODO remove when switch to new av model
     VideoRendererManager::instance().useAVFrame(useAVFrame);
 }
 
@@ -587,7 +590,7 @@ AVModelPimpl::init()
     // add preview renderer
     renderers_.insert(std::make_pair(video::PREVIEW_RENDERER_ID,
                                      std::make_unique<video::Renderer>(video::PREVIEW_RENDERER_ID,
-                                                                       linked_.getDeviceSettings(linked_.getDefaultDeviceName()))));
+                                                                       linked_.getDeviceSettings(linked_.getDefaultDeviceName()),"", useAVFrame_)));
 #ifndef ENABLE_LIBWRAP
     SIZE_RENDERER = renderers_.size();
 #endif
@@ -659,7 +662,7 @@ AVModelPimpl::startedDecoding(const std::string& id, const std::string& shmPath,
             video::Settings settings;
             settings.size = res;
             renderers_.insert(std::make_pair(id,
-                std::make_unique<video::Renderer>(id.c_str(), settings, shmPath)));
+                std::make_unique<video::Renderer>(id.c_str(), settings, shmPath, useAVFrame_)));
             finishedRenderers_.insert(std::make_pair(id, false));
 #ifndef ENABLE_LIBWRAP
             SIZE_RENDERER = renderers_.size();
diff --git a/src/newvideo.cpp b/src/newvideo.cpp
index 0d09fdfc6be2aac3c0be27b1f49358caeb938d23..c7abbca5c3b24cbab70072f776a3a54cc38a51a5 100644
--- a/src/newvideo.cpp
+++ b/src/newvideo.cpp
@@ -38,7 +38,7 @@ class RendererPimpl: public QObject
 public:
     RendererPimpl(Renderer& linked, const std::string& id,
         Settings videoSettings, const std::string& shmPath,
-        bool useAVFrame=false);
+        const bool useAVFrame);
     ~RendererPimpl();
 
     Renderer& linked;
@@ -77,8 +77,8 @@ namespace video
 {
 
 Renderer::Renderer(const std::string& id, Settings videoSettings,
-    const std::string& shmPath)
-: pimpl_(std::make_unique<RendererPimpl>(*this, id, videoSettings, shmPath))
+    const std::string& shmPath, const bool useAVFrame)
+: pimpl_(std::make_unique<RendererPimpl>(*this, id, videoSettings, shmPath, useAVFrame))
 {}
 
 Renderer::~Renderer()