Skip to content

Commit

Permalink
remove some platform depended video renderer headers.
Browse files Browse the repository at this point in the history
  • Loading branch information
wang-bin committed Aug 4, 2014
1 parent e4edfb6 commit 5cf98a9
Show file tree
Hide file tree
Showing 10 changed files with 158 additions and 274 deletions.
5 changes: 0 additions & 5 deletions examples/filters/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,6 @@

#include <QtAV/AVPlayer.h>
#include <QtAV/VideoRendererTypes.h>
#include <QtAV/WidgetRenderer.h>
#include <QtAV/GLWidgetRenderer.h>
#include <QtAV/Direct2DRenderer.h>
#include <QtAV/GDIRenderer.h>
#include <QtAV/XVRenderer.h>
#include "SimpleFilter.h"

using namespace QtAV;
Expand Down
47 changes: 46 additions & 1 deletion src/Direct2DRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,12 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
******************************************************************************/

#include "QtAV/Direct2DRenderer.h"
#include "QtAV/VideoRenderer.h"
#include <QWidget>
#include <QResizeEvent>
#include <QtCore/QLibrary>
#include "QtAV/private/VideoRenderer_p.h"
#include "QtAV/prepost.h"

//#define CINTERFACE //http://rxlib.ru/faqs/faqc_en/15596.html
//#include <windows.h>
Expand Down Expand Up @@ -53,6 +55,49 @@ inline void SafeRelease(Interface **ppInterfaceToRelease)
}
}

class Direct2DRendererPrivate;
class Direct2DRenderer : public QWidget, public VideoRenderer
{
Q_OBJECT
DPTR_DECLARE_PRIVATE(Direct2DRenderer)
public:
Direct2DRenderer(QWidget* parent = 0, Qt::WindowFlags f = 0);
virtual VideoRendererId id() const;
virtual bool isSupported(VideoFormat::PixelFormat pixfmt) const;

/* WA_PaintOnScreen: To render outside of Qt's paint system, e.g. If you require
* native painting primitives, you need to reimplement QWidget::paintEngine() to
* return 0 and set this flag
*/
virtual QPaintEngine* paintEngine() const;
virtual QWidget* widget() { return this; }
protected:
virtual bool receiveFrame(const VideoFrame& frame);
virtual bool needUpdateBackground() const;
//called in paintEvent before drawFrame() when required
virtual void drawBackground();
virtual bool needDrawFrame() const;
//draw the current frame using the current paint engine. called by paintEvent()
virtual void drawFrame();
/*usually you don't need to reimplement paintEvent, just drawXXX() is ok. unless you want do all
*things yourself totally*/
virtual void paintEvent(QPaintEvent *);
virtual void resizeEvent(QResizeEvent *);
//stay on top will change parent, hide then show(windows). we need GetDC() again
virtual void showEvent(QShowEvent *);
};
extern VideoRendererId VideoRendererId_Direct2D;
FACTORY_REGISTER_ID_AUTO(VideoRenderer, Direct2D, "Direct2D")

void RegisterVideoRendererDirect2D_Man()
{
FACTORY_REGISTER_ID_MAN(VideoRenderer, Direct2D, "Direct2D")
}

VideoRendererId Direct2DRenderer::id() const
{
return VideoRendererId_Direct2D;
}
class Direct2DRendererPrivate : public VideoRendererPrivate
{
public:
Expand Down
52 changes: 51 additions & 1 deletion src/GDIRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,13 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
******************************************************************************/

#include "QtAV/GDIRenderer.h"
#include "QtAV/VideoRenderer.h"
#include "QtAV/private/VideoRenderer_p.h"
#include <QWidget>
#include <windows.h> //GetDC()
#include <gdiplus.h>
#include <QResizeEvent>
#include "QtAV/prepost.h"

#define USE_GRAPHICS 0

Expand All @@ -33,6 +35,54 @@
using namespace Gdiplus;
namespace QtAV {

class GDIRendererPrivate;
class GDIRenderer : public QWidget, public VideoRenderer
{
Q_OBJECT
DPTR_DECLARE_PRIVATE(GDIRenderer)
public:
GDIRenderer(QWidget* parent = 0, Qt::WindowFlags f = 0); //offscreen?
virtual VideoRendererId id() const;
virtual bool isSupported(VideoFormat::PixelFormat pixfmt) const;
/* WA_PaintOnScreen: To render outside of Qt's paint system, e.g. If you require
* native painting primitives, you need to reimplement QWidget::paintEngine() to
* return 0 and set this flag
*/
virtual QPaintEngine* paintEngine() const;

/*http://lists.trolltech.com/qt4-preview-feedback/2005-04/thread00609-0.html
* true: paintEngine.getDC(), double buffer is enabled by defalut.
* false: GetDC(winId()), no double buffer, should reimplement paintEngine()
*/
virtual QWidget* widget() { return this; }
protected:
virtual bool receiveFrame(const VideoFrame& frame);
virtual bool needUpdateBackground() const;
//called in paintEvent before drawFrame() when required
virtual void drawBackground();
//draw the current frame using the current paint engine. called by paintEvent()
virtual void drawFrame();
/*usually you don't need to reimplement paintEvent, just drawXXX() is ok. unless you want do all
*things yourself totally*/
virtual void paintEvent(QPaintEvent *);
virtual void resizeEvent(QResizeEvent *);
//stay on top will change parent, hide then show(windows). we need GetDC() again
virtual void showEvent(QShowEvent *);
};

extern VideoRendererId VideoRendererId_GDI;
FACTORY_REGISTER_ID_AUTO(VideoRenderer, GDI, "GDI")

void RegisterVideoRendererGDI_Man()
{
FACTORY_REGISTER_ID_MAN(VideoRenderer, GDI, "GDI")
}

VideoRendererId GDIRenderer::id() const
{
return VideoRendererId_GDI;
}

class GDIRendererPrivate : public VideoRendererPrivate
{
public:
Expand Down
69 changes: 0 additions & 69 deletions src/QtAV/Direct2DRenderer.h

This file was deleted.

68 changes: 0 additions & 68 deletions src/QtAV/GDIRenderer.h

This file was deleted.

5 changes: 1 addition & 4 deletions src/QtAV/QtAV.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,10 @@
#include <QtAV/VideoRendererTypes.h>
#include <QtAV/VideoOutput.h>
//The following renderer headers can be removed
#include <QtAV/Direct2DRenderer.h>
#include <QtAV/GDIRenderer.h>
#include <QtAV/GLWidgetRenderer.h>
#include <QtAV/QPainterRenderer.h>
#include <QtAV/GraphicsItemRenderer.h>
#include <QtAV/WidgetRenderer.h>
#include <QtAV/XVRenderer.h>
#include <QtAV/GLWidgetRenderer.h>
#include <QtAV/GLWidgetRenderer2.h>

#endif // QTAV_H
74 changes: 0 additions & 74 deletions src/QtAV/XVRenderer.h

This file was deleted.

Loading

0 comments on commit 5cf98a9

Please sign in to comment.