⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ddutil.h

📁 jpeg and mpeg 编解码技术源代码
💻 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 + -