VideoRendererOverlay.h
上传用户:hxb_1234
上传日期:2010-03-30
资源大小:8328k
文件大小:2k
源码类别:

VC书籍

开发平台:

Visual C++

  1. /**************************************************************************************
  2.  *                                                                                    *
  3.  *                                                                                    *
  4.  **************************************************************************************/
  5. #ifndef VIDEORENDERER_OVERLAY_H
  6. #define VIDEORENDERER_OVERLAY_H
  7. /*
  8.  * 基类
  9.  */
  10. #include "MediaClasses.h"
  11. #include "Resizer.h"
  12. /*
  13.  * 包括直接显示
  14.  *
  15.  */
  16. #include <ddraw.h>
  17. /*
  18.  * 叠加目标色度键
  19.  */
  20. //像素深度是用位/像素(bpp)决定
  21. #define DD_OVERLAY_COLORKEY_16BPP      0x00000001 
  22. #define DD_OVERLAY_COLORKEY_32BPP      0x0000000F 
  23. #define DD_OVERLAY_COLORREF            0x000F0000 
  24. #define DD_OVERLAY_COLORKEY_FULLSCREEN 0x00000001 
  25. #define DD_OVERLAY_COLORREF_FULLSCREEN 0x000F0000 
  26. /*
  27.  * 叠加视频补偿器类
  28.  */
  29. class MediaVideoRendererOverlay : public MediaItemVideoRenderer {
  30. private:
  31. MediaItemSubtitler  *subtitler;
  32. MediaBuffer         *lastPicture;
  33. DWORD                invertFlag;
  34. LPDIRECTDRAW7        lpdd;
  35. LPDIRECTDRAWSURFACE7 lpddsPrimary;
  36. LPDIRECTDRAWCLIPPER  lpddClipper;
  37. LPDIRECTDRAWSURFACE7 lpddsOverlay;
  38. unsigned int         width;
  39. unsigned int         height;
  40. media_video_mode_t   videoMode;
  41. unsigned int         fullscreenWidth;
  42. unsigned int         fullscreenHeight;
  43. DWORD                bpp;
  44. DWORD                physicalDepth;
  45. RECT                 fullRects[3];
  46. HWND                 hwndPlayback;
  47. public:
  48. MediaVideoRendererOverlay();
  49. ~MediaVideoRendererOverlay();
  50. /*
  51.  * 媒体项方法
  52.  */
  53. media_type_t  GetType();
  54. char         *GetName();
  55. MP_RESULT     Connect(MediaItem *item);
  56. MP_RESULT     ReleaseConnections();
  57. DWORD         GetCaps();
  58. MP_RESULT     Configure(HINSTANCE hInstance, HWND hwnd);
  59. /*
  60.  * 专用的叠加探测方法
  61.  *
  62.  */
  63. BOOL      AreOverlaysSupported();
  64. /*
  65.  * 视频补偿方法
  66.  */
  67. MP_RESULT Init(HWND hwnd, unsigned int width, unsigned int height);
  68. MP_RESULT InitFullscreen(HWND hwnd, unsigned int width, unsigned int height);
  69. media_video_mode_t GetVideoMode();
  70. MP_RESULT          Stop();
  71. RECT              *GetFullscreenRects(); 
  72. MP_RESULT Draw(MediaBuffer *buffer, RECT *rect, int frameNumber, int invertFlag);
  73. MP_RESULT DrawFullscreen(MediaBuffer *buffer, int frameNumber, int invertFlag, int desktopMode);
  74. MP_RESULT Close();
  75. };
  76. #endif