VideoRendererRGB.h
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:2k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /**************************************************************************************
  2.  *                                                                                    *
  3.  *                                                                                    *
  4.  **************************************************************************************/
  5. #ifndef VIDEORENDERER_RGB_H
  6. #define VIDEORENDERER_RGB_H
  7. /*
  8.  * 基类
  9.  */
  10. #include "MediaClasses.h"
  11. #include "Resizer.h"
  12. /*
  13.  * 包括直接显示
  14.  *
  15.  */
  16. #include <ddraw.h>
  17. /*
  18.  * 叠加视频缓冲器类
  19.  */
  20. class MediaVideoRendererRGB : public MediaItemVideoRenderer {
  21. private:
  22. MediaItemSubtitler  *subtitler;
  23. LPDIRECTDRAW7        lpdd;
  24. LPDIRECTDRAWSURFACE7 lpddsPrimary;
  25. LPDIRECTDRAWCLIPPER  lpddClipper;
  26. LPDIRECTDRAWSURFACE7 lpddsBack;
  27. LPDIRECTDRAWSURFACE7 lpddsImage;
  28. unsigned int         width;
  29. unsigned int         height;
  30. unsigned int         bpp;
  31. media_video_mode_t   videoMode;
  32. unsigned int         fullscreenWidth;
  33. unsigned int         fullscreenHeight;
  34. BOOL                 fullscreenFlip;
  35. unsigned int         fullscreenVideoHeight;
  36. HWND                 hwndPlayback;
  37. public:
  38. MediaVideoRendererRGB();
  39. ~MediaVideoRendererRGB();
  40. /*
  41.  * 媒体项方法
  42.  */
  43. media_type_t  GetType();
  44. char         *GetName();
  45. MP_RESULT     Connect(MediaItem *item);
  46. MP_RESULT     ReleaseConnections();
  47. DWORD         GetCaps();
  48. MP_RESULT     Configure(HINSTANCE hInstance, HWND hwnd);
  49. /*
  50.  * 视频补偿方法
  51.  */
  52. MP_RESULT Init(HWND hwnd, unsigned int width, unsigned int height);
  53. MP_RESULT InitFullscreen(HWND hwnd, unsigned int width, unsigned int height);
  54. media_video_mode_t GetVideoMode();
  55. MP_RESULT          Stop();
  56. RECT              *GetFullscreenRects(); 
  57. MP_RESULT Draw(MediaBuffer *buffer, RECT *rect, int frameNumber, int invertFlag);
  58. MP_RESULT DrawFullscreen(MediaBuffer *buffer, int frameNumber, int invertFlag, int desktopMode);
  59. MP_RESULT Close();
  60. };
  61. #endif