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

VC书籍

开发平台:

Visual C++

  1. /**************************************************************************************
  2.  *                                                                                    *
  3.  *                                                                                    *
  4.  **************************************************************************************/
  5. #ifndef VIDEODECODER_VFW_H
  6. #define VIDEODECODER_VFW_H
  7. /*
  8.  * 基类
  9.  */
  10. #include "MediaClasses.h"
  11. #include <vfw.h>
  12. #define VFW_INPUT_SIZE 128000
  13. typedef struct _my_BITMAPINFO {
  14. BITMAPINFOHEADER bmiHeader;
  15. DWORD            bmiColors[3];
  16. } my_BITMAPINFO;
  17. /*
  18.  * 视频解码器类
  19.  */
  20. class MediaVideoDecoderVFW : public MediaItemVideoDecoder {
  21. private:
  22. HIC                hic;
  23. BITMAPINFO         in_bih;
  24. my_BITMAPINFO      out_bih;
  25. media_video_mode_t videoMode;
  26. BOOL               invertFlag;
  27. MediaItemDecaps   *decaps;
  28. MediaBuffer       *inputBuffer;
  29. public:
  30. MediaVideoDecoderVFW();
  31. ~MediaVideoDecoderVFW();
  32. /*
  33.  * 媒体项方法
  34.  */
  35. media_type_t  GetType();
  36. char         *GetName();
  37. MP_RESULT     Connect(MediaItem *item);
  38. MP_RESULT     ReleaseConnections();
  39. DWORD         GetCaps();
  40. MP_RESULT     Configure(HINSTANCE hInstance, HWND hwnd);
  41. /*
  42.  * 视频解码器方法
  43.  *
  44.  */
  45. unsigned int       GetFrameSize();
  46. media_video_mode_t GetVideoMode();
  47. BOOL               GetInvertFlag();
  48. MP_RESULT          SetVideoMode(media_video_mode_t mode);
  49. MP_RESULT          SetQuality(DWORD quality);
  50. DWORD              GetQuality();
  51. MP_RESULT          Decompress(MediaBuffer *mb_out, unsigned int stride);
  52. MP_RESULT          Drop(MediaBuffer *mb_out, unsigned int stride);
  53. };
  54. #endif