VideoCodec.h
上传用户:popouu88
上传日期:2013-02-11
资源大小:2894k
文件大小:2k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. // VideoCode.h: interface for the CVideoCodec class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #ifndef __VIDEOCODEC_H__
  5. #define __VIDEOCODEC_H__
  6. #include "vfw.h"
  7. class CVideoCodec  
  8. {
  9. public:
  10.             CVideoCodec();
  11.   
  12. virtual ~CVideoCodec();
  13.     //初始化解压器
  14. virtual  BITMAPINFOHEADER * InitDecode( int width , int height , int depth , const char * szType );
  15.     //初始化解压器
  16. virtual  bool InitDecode( BITMAPINFOHEADER * header );
  17.     //初始化压缩器
  18. virtual  BITMAPINFOHEADER * InitEncode( int width , int height , int depth , const char * szType = NULL , int kbps = 0 );
  19.     //初始化压缩器
  20. virtual  bool InitEncode( BITMAPINFOHEADER header );
  21.     //解压
  22. void   * Decode( void * in_buffer , int size );
  23.     //压缩
  24. void   * Encode( void * in_buffer , int * size );
  25.     //释放解压器
  26. bool     ReleaseDecode( void );
  27.     //释放压缩器
  28. bool     ReleaseEncode( void );
  29. //通过一个Word取mmioFOURCC 的4个字节
  30. static  char * GetString(int word );
  31.     //取得压缩的时间
  32. time_t   GetEncodeTime( void );
  33. //判断是否初始化压缩
  34. bool     IsInitEncode( void ){ return this->codec_type == ENCODE; }
  35.     //判断是否初始化解压
  36. bool     IsInitDecode( void ){ return this->codec_type == DECODE; }
  37. protected:
  38. enum{ DECODE  = 1, ENCODE };
  39.    
  40. private:
  41.     //压缩解压器结构体
  42. COMPVARS cv;
  43.     //输出内存
  44. char   * out_buffer;
  45. //压缩 or 解压标志
  46. int      codec_type;
  47. //帧压缩的当前时间
  48. time_t   encode_time;
  49. //压缩方式
  50. bool    sequent_compress;
  51.     //输入数据位图头信息
  52. BITMAPINFOHEADER in ;
  53.     //输出位兔头信息
  54. BITMAPINFOHEADER out;
  55. };
  56. #endif