From cbc02dddfd8be5be33f55eb81bbf8097e171783f Mon Sep 17 00:00:00 2001 From: Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com> Date: Fri, 10 Apr 2015 11:33:09 -0400 Subject: [PATCH] video: Add color space getter Refs #70057 --- src/private/directrenderer.cpp | 36 +++++++++++++++++----------------- src/private/directrenderer.h | 25 ++++++++++++----------- src/private/shmrenderer.cpp | 5 +++++ src/private/shmrenderer.h | 3 ++- src/video/renderer.h | 11 +++++++++++ 5 files changed, 50 insertions(+), 30 deletions(-) diff --git a/src/private/directrenderer.cpp b/src/private/directrenderer.cpp index 7cd788a5..6fcb1bcb 100644 --- a/src/private/directrenderer.cpp +++ b/src/private/directrenderer.cpp @@ -40,17 +40,13 @@ class DirectRendererPrivate : public QObject Q_OBJECT public: DirectRendererPrivate(Video::DirectRenderer* parent); - - //Attributes - private: - Video::DirectRenderer* q_ptr; - +// Video::DirectRenderer* q_ptr; }; } -Video::DirectRendererPrivate::DirectRendererPrivate(Video::DirectRenderer* parent) : QObject(parent), q_ptr(parent) +Video::DirectRendererPrivate::DirectRendererPrivate(Video::DirectRenderer* parent) : QObject(parent)/*, q_ptr(parent)*/ { } @@ -67,26 +63,30 @@ Video::DirectRenderer::~DirectRenderer() void Video::DirectRenderer::startRendering() { - - qWarning() << "STARTING RENDERING"; - Video::Renderer::d_ptr->m_isRendering = true; - emit started(); + qWarning() << "STARTING RENDERING"; + Video::Renderer::d_ptr->m_isRendering = true; + emit started(); } void Video::DirectRenderer::stopRendering () { - qWarning() << "STOPPING RENDERING"; - Video::Renderer::d_ptr->m_isRendering = false; - emit stopped(); + qWarning() << "STOPPING RENDERING"; + Video::Renderer::d_ptr->m_isRendering = false; + emit stopped(); } void Video::DirectRenderer::onNewFrame(const QByteArray& frame) { - if (!isRendering()) { - return; - } + if (!isRendering()) { + return; + } - Video::Renderer::d_ptr->m_pFrame = const_cast<char*>(frame.data()); - emit frameUpdated(); + Video::Renderer::d_ptr->m_pFrame = const_cast<char*>(frame.data()); + emit frameUpdated(); +} + +Video::Renderer::ColorSpace Video::DirectRenderer::colorSpace() const +{ + return Video::Renderer::ColorSpace::RGBA; } #include <directrenderer.moc> diff --git a/src/private/directrenderer.h b/src/private/directrenderer.h index a71fb06b..db6a2d99 100644 --- a/src/private/directrenderer.h +++ b/src/private/directrenderer.h @@ -42,21 +42,24 @@ class LIB_EXPORT DirectRenderer : public Renderer { Q_OBJECT #pragma GCC diagnostic pop - public: +public: - //Constructor - DirectRenderer (const QByteArray& id, const QSize& res); - virtual ~DirectRenderer(); + //Constructor + DirectRenderer (const QByteArray& id, const QSize& res); + virtual ~DirectRenderer(); - void onNewFrame(const QByteArray& frame); + //Getter + virtual ColorSpace colorSpace() const override; - public Q_SLOTS: - virtual void startRendering() override; - virtual void stopRendering () override; + void onNewFrame(const QByteArray& frame); - private: - QScopedPointer<DirectRendererPrivate> d_ptr; - Q_DECLARE_PRIVATE(DirectRenderer) +public Q_SLOTS: + virtual void startRendering() override; + virtual void stopRendering () override; + +private: + QScopedPointer<DirectRendererPrivate> d_ptr; + Q_DECLARE_PRIVATE(DirectRenderer) }; diff --git a/src/private/shmrenderer.cpp b/src/private/shmrenderer.cpp index 1cced05c..32564661 100644 --- a/src/private/shmrenderer.cpp +++ b/src/private/shmrenderer.cpp @@ -340,6 +340,11 @@ const QByteArray& ShmRenderer::currentFrame() const return Renderer::currentFrame(); } +Video::Renderer::ColorSpace ShmRenderer::colorSpace() const +{ + return Video::Renderer::ColorSpace::BGRA; +} + /***************************************************************************** * * * Setters * diff --git a/src/private/shmrenderer.h b/src/private/shmrenderer.h index f77a31ee..63e042d2 100644 --- a/src/private/shmrenderer.h +++ b/src/private/shmrenderer.h @@ -54,8 +54,9 @@ public: bool startShm (); //Getters - virtual int fps() const; + int fps() const; virtual const QByteArray& currentFrame() const override; + virtual ColorSpace colorSpace () const override; //Setters void setShmPath(const QString& path); diff --git a/src/video/renderer.h b/src/video/renderer.h index 9541d334..a2db70f0 100644 --- a/src/video/renderer.h +++ b/src/video/renderer.h @@ -58,6 +58,16 @@ class LIB_EXPORT Renderer : public QObject friend class VideoRendererManagerPrivate ; public: + + /** + * Each platform may have its preferred color space. To be able to use a + * client on multiple platforms, they need to check the colorspace. + */ + enum class ColorSpace { + BGRA , /*!< 32bit BLUE GREEN RED ALPHA */ + RGBA , /*!< 32bit ALPHA GREEN RED BLUE */ + }; + //Constructor Renderer (const QByteArray& id, const QSize& res); virtual ~Renderer(); @@ -67,6 +77,7 @@ public: virtual const QByteArray& currentFrame () const; virtual QSize size () const; virtual QMutex* mutex () const; + virtual ColorSpace colorSpace () const = 0; void setSize(const QSize& size) const; -- GitLab