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()