Skip to content
Snippets Groups Projects
Commit cbc02ddd authored by Emmanuel Lepage Vallee's avatar Emmanuel Lepage Vallee
Browse files

video: Add color space getter

Refs #70057
parent 64496d22
Branches
Tags
No related merge requests found
......@@ -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>
......@@ -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)
};
......
......@@ -340,6 +340,11 @@ const QByteArray& ShmRenderer::currentFrame() const
return Renderer::currentFrame();
}
Video::Renderer::ColorSpace ShmRenderer::colorSpace() const
{
return Video::Renderer::ColorSpace::BGRA;
}
/*****************************************************************************
* *
* Setters *
......
......@@ -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);
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment