📄 ddutil.h
字号:
// Define some error messages.
// YUVDISPLAY_Init
//#define USE_OFFSCREEN 1
//#define USE_OVERLAY 2
//#define USE_GDIFUNCTION 3
//#define USE_GDI_WITH_DD 4
#define YD_OK 0
#define YD_ERR 100//NODEFINE
#define YDERR_NOINIT 1// no Inital (Please first call YUVDisplay_Init)
#define YDERR_NOFREE 2// not Release object before call YUVDisplay_Init ,please call YUVDisplay_Relase
#define YDERR_ALLOCATE 3 //YUVDISPLAY_Init() function Can't allocate memory
#define YDERR_INIT_DIRECTDRAW 11
#define YDERR_NOOVERLAYHARDWARE 12 // hardware not support overlays
#define YDERR_CREATEOVERLAY 13
// "Your display adapter appears to support overlays, but we were unable to create an overlay
//in any of the formats . this app supports (16-bit RGB and YUV). You may want to try shutting down other
//DirectX apps to free video memory, or try rerunning this app in a different display mode."
#define YDERR_BUFFER2URFACE 14 //Load Image To Surface
#define YDERR_DIPSLAYOVERLAY 15
//DisplayOverlay()
#define YDERR_NODD 16 // gm_lpdd or gm_lpddsPrimary ==NULL
#define YDERR_GETCAP 41
#define YDERR_DISPLAY_OVERLAY_NO_DD 42
#define YDERR_UPDATEOVERLAY 43
#define YDERR_NOTSUPPESTOVERLAY 44
//CreateOverlay()
#define YDERR_CREATEOVERLAYSURFACE 51// couldn't create an overlay surface.
enum tagDrawMethod
{
USE_AUTO =0,
USE_GDIFUNCTION = 1,
USE_OFFSCREEN = 2,
USE_OVERLAY = 4
};
class YUVDisplay
{
protected:
/**** member Variables: ****/
tagDrawMethod m_DM ; //Current Show Method
BOOL m_bOverlaySupported;
BOOL m_bFourCCSupported;
//BOOL m_bUseGDIFunction;
HWND m_hWnd;
//DWORD m_nDisplayXPosition, m_nDisplayYPosition;
DWORD m_nDisplayHeight , m_nDisplayWidth;
//LPBYTE m_lpbYUVData;
//DWORD m_YUVSize;
COLORREF m_crColorKey ;
/*#ifdef DIRECTDRAW_6
LPDIRECTDRAW4 m_lpdd = NULL;
LPDIRECTDRAWSURFACE4 m_lpddsPrimary = NULL;
LPDIRECTDRAWSURFACE4 m_lpddsOverlay = NULL;
#else*/
LPDIRECTDRAW2 m_lpdd ;
LPDIRECTDRAWSURFACE m_lpddsPrimary ;
LPDIRECTDRAWSURFACE m_lpddsDisplay;
LPDIRECTDRAWSURFACE m_lpddsBackBuffer;
//#endif
LPDIRECTDRAWCLIPPER m_lpddcClipper ;
protected:
void FreeDirectDraw(void);
BOOL InitDirectDraw();
HRESULT CreatePrimarySurface();
DWORD CreateDisplaySurface(HWND hWnd,BOOL CreateOverlay); //Create Overlay/Off-Screen Surface
BOOL AreOverlaysSupported();
BOOL AreFourCCSupport(LPDIRECTDRAWSURFACE lpdds);
BOOL CopyYUV420ToYUV422Surface(LPDIRECTDRAWSURFACE lpDDSurf,LPBYTE lpSoureYUV ,DWORD dwSize);
BOOL GDIShowYUV(LPBYTE buffer,RECT rd);
DWORD DisplayOverlay(COLORREF rgb,RECT rD);
DWORD DisplayOffScreen(COLORREF rgb,RECT rd);
public:
YUVDisplay();
~YUVDisplay();
DWORD DisplayYUV(LPBYTE buffer,RECT rcDest);
DWORD InitYUVDisplay(HWND hWnd ,COLORREF crColorKey, DWORD dwWidth ,DWORD dwHeight);
};
/************************************************************
// Function: DRAWFRM_Init
//
// Description:
// Init DRAWFRM
// value of ColorKey pass as RGB(255,255,255)
//
// Ex:DRAWFRM_Init(NULL,RGB(255,255,255),352,240)
// Color key = white , size 353*240
//
// Return:
// YUVDipsly object or NULL
//
// dwMethod:
// USE_OFFSCREEN 1
// USE_OVERLAY 2
// USE_GDIFUNCTION 3
*************************************************************/
LPVOID DRAWFRM_Init(HWND hWnd ,COLORREF ColorKey, DWORD dwWidth ,DWORD dwHeight, DWORD *pdwMethod, char *RegistryPath );
/************************************************************
// Function: DRAWFRM_Show
//
// Description:
//
// Ex:DRAWFRM_Show(buffer,rect)
// Show Buffer(YUV4:2:0 format) at rect
//
// Return:
// YD_OK
// YDERR_BUFFER2URFACE may size if buffer too small or pointer not void
// YDERR_DIPSLAYOVERLAY Show Image Error,may hardware not support
*************************************************************/
DWORD DRAWFRM_Show(LPVOID lpObject, LPBYTE buffer,RECT rcDest );
/************************************************************
// Function: DRAWFRM_Close
//
// Description:
// Free DirectDraw object and resource
//
// Return:
// always true
*************************************************************/
BOOL DRAWFRM_Close(LPVOID lpObject);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -