1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #ifndef _VID_GDIPLUS_H_
- #define _VID_GDIPLUS_H_
- #include <windows.h>
- #include <gdiplus.h>
- #include "VideoOutputChild.h"
- using namespace Gdiplus;
- class GDIPVideoOutput : public VideoRenderer {
- public:
- GDIPVideoOutput();
- virtual ~GDIPVideoOutput();
- virtual int create(HWND parent, VideoAspectAdjuster *_adjuster, int w, int h, unsigned int type, int flipit, double aspectratio); //return 1 if ok
- virtual int needChange(); //return 1 if need to renegociate video output
- virtual int onPaint(HWND hwnd) { return 0; } //return 1 if override
- virtual void displayFrame(const char *buf, int size, int time);
- virtual void close(); // hides any output of the video
- virtual void timerCallback();
- virtual void drawSubtitle(SubsItem *item) { subs=item; }
- virtual void resetSubtitle() { subs=NULL; }
- virtual void setVFlip(int on) { flip=on; }
- virtual void Refresh();
- protected:
- bool FillFrame(Bitmap *frame, void *buf);
- unsigned int type, w, h, flip, winw, winh;
- Graphics * graphics; // on screen canvas
- Graphics * graphicsback; // off screen canvas
- Bitmap * frame;
- HWND parent;
- int needschange;
- VideoAspectAdjuster *adjuster;
- RECT lastrect;
- HDC backdc;
- void SetupGraphics();
- ULONG_PTR gdiplusToken;
- SubsItem *subs;
- };
- extern GDIPVideoOutput gdiplusVideo;
- #endif // _VID_GDIPLUS_H_
|