diff --git a/src/private/directrenderer.cpp b/src/private/directrenderer.cpp index 85b092d585d73df5a6d0ce1cd4723f1cdd9e3dad..128657eba2841f5095bb59c591256518d1c19c97 100644 --- a/src/private/directrenderer.cpp +++ b/src/private/directrenderer.cpp @@ -72,7 +72,8 @@ void Video::DirectRenderer::stopRendering () emit stopped(); } -void Video::DirectRenderer::onNewFrame(const std::shared_ptr<std::vector<unsigned char> >& frame, int w, int h) + +void Video::DirectRenderer::onNewFrame(int w, int h) { if (!isRendering()) { return; @@ -80,7 +81,7 @@ void Video::DirectRenderer::onNewFrame(const std::shared_ptr<std::vector<unsigne Video::Renderer::d_ptr->m_pSize.setWidth(w); Video::Renderer::d_ptr->m_pSize.setHeight(h); - Video::Renderer::d_ptr->m_pSFrame = frame; + Video::Renderer::d_ptr->m_pFrame = reinterpret_cast<char*>(frameBuffer_.data()); emit frameUpdated(); } diff --git a/src/private/directrenderer.h b/src/private/directrenderer.h index 85ae6406ae5398a1b4146cda4fe1dcebfd639be9..7eff8976ca2e56b94465328d0cdb02f18f2c9ceb 100644 --- a/src/private/directrenderer.h +++ b/src/private/directrenderer.h @@ -17,8 +17,6 @@ ***************************************************************************/ #pragma once -#include <memory> - //Base #include <QtCore/QObject> #include "typedefs.h" @@ -52,7 +50,9 @@ public: //Getter virtual ColorSpace colorSpace() const override; - void onNewFrame(const std::shared_ptr<std::vector<unsigned char> >& frame, int w, int h); + void onNewFrame(int w, int h); + + std::vector<unsigned char> frameBuffer_; public Q_SLOTS: virtual void startRendering() override; @@ -61,7 +61,6 @@ public Q_SLOTS: private: QScopedPointer<DirectRendererPrivate> d_ptr; Q_DECLARE_PRIVATE(DirectRenderer) - }; } diff --git a/src/private/videorenderer_p.h b/src/private/videorenderer_p.h index 546b7533eedaaeecc308b12d2b966ce8e7d8f186..1e5d4592bcfc9a60e210c105c225066c3e99ef7d 100644 --- a/src/private/videorenderer_p.h +++ b/src/private/videorenderer_p.h @@ -17,7 +17,6 @@ ***************************************************************************/ #pragma once -#include <memory> //Qt #include <QtCore/QObject> @@ -43,7 +42,6 @@ public: QString m_Id ; QSize m_pSize ; char* m_pFrame ; - std::shared_ptr<std::vector<unsigned char> > m_pSFrame; QByteArray m_Content ; unsigned int m_FrameSize ; diff --git a/src/private/videorenderermanager.cpp b/src/private/videorenderermanager.cpp index 1af06735332d71b1af235352fc924a9aadf74852..f379fec6e767927aad1b2550ad3da343cf96b2d4 100644 --- a/src/private/videorenderermanager.cpp +++ b/src/private/videorenderermanager.cpp @@ -213,9 +213,10 @@ void VideoRendererManagerPrivate::startedDecoding(const QString& id, const QStri m_hRenderers[rid] = r; m_hRendererIds[r]=rid; - DBus::VideoManager::instance().registerSinkTarget(id, [this, id, width, height] (const std::shared_ptr<std::vector<unsigned char> >& frame, int w, int h) { + DBus::VideoManager::instance().registerSinkTarget(id, static_cast<Video::DirectRenderer*>(r)->frameBuffer_, + [this, id, width, height] (int w, int h) { static_cast<Video::DirectRenderer*>(m_hRenderers[id.toLatin1()])->onNewFrame( - frame, w, h + w, h ); }); @@ -243,9 +244,10 @@ void VideoRendererManagerPrivate::startedDecoding(const QString& id, const QStri r->setSize(res); #ifdef ENABLE_LIBWRAP - DBus::VideoManager::instance().registerSinkTarget(id, [this, id, width, height] (const std::shared_ptr<std::vector<unsigned char> >& frame, int w, int h) { + DBus::VideoManager::instance().registerSinkTarget(id, static_cast<Video::DirectRenderer*>(r)->frameBuffer_, + [this, id, width, height] (int w, int h) { static_cast<Video::DirectRenderer*>(m_hRenderers[id.toLatin1()])->onNewFrame( - frame, w, h + w, h ); }); diff --git a/src/qtwrapper/videomanager_wrap.h b/src/qtwrapper/videomanager_wrap.h index 336acb0283104198910c42cfa2c180929037a519..68072c99e6f52211344423471b728c74c3ad345f 100644 --- a/src/qtwrapper/videomanager_wrap.h +++ b/src/qtwrapper/videomanager_wrap.h @@ -195,17 +195,21 @@ public Q_SLOTS: // METHODS #endif } - void registerSinkTarget(const QString &sinkID, std::function<void(std::shared_ptr<std::vector<unsigned char> >&, int, int)>&& cb) + void registerSinkTarget(const QString &sinkID, + std::vector<unsigned char>& frameBuffer, + std::function<void(int, int)>&& cb) { #ifdef ENABLE_VIDEO - DRing::registerSinkTarget(sinkID.toStdString(), std::move(cb)); + DRing::registerSinkTarget(sinkID.toStdString(), frameBuffer, std::move(cb)); #endif } - void registerSinkTarget(const QString &sinkID, std::function<void(std::shared_ptr<std::vector<unsigned char> >&, int, int)>& cb) + void registerSinkTarget(const QString &sinkID, + std::vector<unsigned char>& frameBuffer, + std::function<void(int, int)>& cb) { #ifdef ENABLE_VIDEO - DRing::registerSinkTarget(sinkID.toStdString(), std::move(cb)); + DRing::registerSinkTarget(sinkID.toStdString(), frameBuffer, std::move(cb)); #endif } diff --git a/src/video/renderer.cpp b/src/video/renderer.cpp index 98e5ccb3648cc8cdd7603b0e30ad9d0f91a2920b..e67668e196bf0f8631c78d04f96ebba7d292fcf3 100644 --- a/src/video/renderer.cpp +++ b/src/video/renderer.cpp @@ -73,21 +73,6 @@ const QByteArray& Video::Renderer::currentFrame() const return d_ptr->m_Content; } -const std::shared_ptr<std::vector<unsigned char> >& Video::Renderer::currentSmartFrame() const -{ - return d_ptr->m_pSFrame; -} - -bool Video::Renderer::isFrameSmart() const -{ -#ifdef ENABLE_LIBWRAP - return true; -#else - return false; -#endif -} - - /***************************************************************************** * * * Setters * diff --git a/src/video/renderer.h b/src/video/renderer.h index 18d379848d417cd17a3ff714e359b19d549424cb..ff9691f7037cb3b192aa2d700ac7062f8173ebc2 100644 --- a/src/video/renderer.h +++ b/src/video/renderer.h @@ -17,7 +17,6 @@ ***************************************************************************/ #pragma once -#include <memory> //Base #include <QtCore/QObject> @@ -76,8 +75,6 @@ public: //Getters virtual bool isRendering () const; virtual const QByteArray& currentFrame () const; - virtual const std::shared_ptr<std::vector<unsigned char> >& currentSmartFrame() const; - virtual bool isFrameSmart() const; virtual QSize size () const; virtual QMutex* mutex () const; virtual ColorSpace colorSpace () const = 0;