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

多媒体编程

开发平台:

Visual C++

  1. // CXvid.h: interface for the CXvid class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_CXVID_H__419F60F2_C37F_4106_8F08_ED571A40C344__INCLUDED_)
  5. #define AFX_CXVID_H__419F60F2_C37F_4106_8F08_ED571A40C344__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "vfw.h"
  10. #include "InputFile.h"
  11. #include "VideoSource.h"
  12. #include "AudioSource.h"
  13. #include "CLogFile.h"
  14. class CXvid  
  15. {
  16. public:
  17. CXvid();
  18. virtual ~CXvid();
  19. typedef struct
  20. {
  21. bool isIFrame;
  22. int qvalue;
  23. int framesize;
  24. } QUANTS;
  25. int Open(CString filepath); //打开AVI文件,并且设置全局通用属性
  26. int Analyze(CProgressCtrl &progress, CEdit &edit, bool log, int start, int stop); //分析AVI文件
  27. void Close(void); //释放使用的内存,并且重新初始化
  28. float GetRate(void) {return fps;}; //返回AVI文件的 FPS
  29. void SetRate(float rate) {fps = rate;}; //设置AVI文件的 FPS
  30. int GetWidth(void) {return width;}; //返回剪辑的宽度
  31. void SetWidth(int w) {width = w;}; //设置剪辑的宽度
  32. int GetHeight(void) {return height;}; //返回剪辑的高度
  33. void SetHeight(int h) {height = h;}; //设置剪辑的高度
  34. CString GetAviPath(void) {return avipath;}; //返回AVI文件的路径
  35. int GetFrameCount(void) {return nframes;}; //返回帧的全部数目
  36. void SetFrameCount(int fcount) {nframes = fcount;}; //设置帧的全部数目
  37. int GetIFrameCount(void) {return icount;}; //返回全部I帧的数目
  38. void SetIFrameCount(int ifcount) {icount = ifcount;};//设置全部I帧的数目
  39. int GetPFrameCount(void) {return pcount;}; //返回全部P帧的数目
  40. void SetPFrameCount(int pfcount) {pcount = pfcount;};//设置全部P帧的数目
  41. float GetAvgQuants(void) {return navg;}; //返回quants的平均值
  42. void SetAvgQuants(float avg) {navg = avg;}; //设置quants的平均值
  43. int GetMinQuant(void) {return nmin;}; //返回quant的最小值
  44. void SetMinQuant(int min) {nmin = min;}; //设置quant的最小值
  45. int GetMaxQuant(void) {return nmax;}; //返回quant的最大值
  46. void SetMaxQuant(int max) {nmax = max;}; //设置quant的最大值
  47. float GetPAvgQuants(void) {return pavg;}; //返回P帧的quants的平均值
  48. void SetPAvgQuants(float avg) {pavg = avg;}; //设置P帧的quants的平均值
  49. float GetIAvgQuants(void) {return iavg;}; //返回I帧的quants的平均值
  50. void SetIAvgQuants(float avg) {iavg = avg;}; //设置I帧的quants的平均值
  51. int GetMaxFrameSize(void) {return nfsmax;}; //返回最大帧的大小
  52. void SetMaxFrameSize(int max) {nfsmax = max;};
  53. int GetMinFrameSize(void) {return nfsmin;}; //返回最小帧的大小
  54. void SetMinFrameSize(int min) {nfsmin = min;};
  55. int GetIMaxFrameSize(void) {return ifsmax;}; //返回最大I帧的大小
  56. void SetIMaxFrameSize(int max) {ifsmax = max;};
  57. int GetIMinFrameSize(void) {return ifsmin;}; //返回最小I帧的大小
  58. void SetIMinFrameSize(int min) {ifsmin = min;};
  59. int GetPMaxFrameSize(void) {return pfsmax;}; //返回最大P帧的大小
  60. void SetPMaxFrameSize(int max) {pfsmax = max;};
  61. int GetPMinFrameSize(void) {return pfsmin;}; //返回最小P帧的大小
  62. void SetPMinFrameSize(int min) {pfsmin = min;};
  63. QUANTS* GetQuantsArray(void) {return quants;}; //返回整个quants数组
  64. void SetQuantsArray(QUANTS* qvalues, int nelem); //根据文件初始化quants数组
  65. bool IsOpened(void) {return isOpened;}; //如果文件被加载了,返回真
  66. void SetOpened(bool flag) {isOpened = flag;}; //设置文件打开状态
  67. bool IsAnalysed(void) {return isAnalysed;}; //如果文件被分析了,返回真
  68. void SetAnalysed(bool flag) {isAnalysed = flag;}; //设置分析状态
  69. private:
  70. CString avipath; //xvid文件的绝对路径
  71. CLogFile logfile; //日志对象
  72. bool isOpened; //xvid文件是否被打开了?
  73. bool isAnalysed; //xvid文件是否被分析了?
  74. QUANTS* quants; //所有帧的quant数组
  75. float fps; //每秒的帧数
  76. int width; //视频的宽度
  77. int height; //视频的高度
  78. int nframes; //帧的数目
  79. int nmax; //quantizer的最大值
  80. int nmin; //quantizer的最小值
  81. int nsum; //quantizers的和
  82. float navg; //quantizers的平均值
  83. int nfsmax; //帧大小的最大值
  84. int nfsmin; //帧大小的最小值
  85. int icount; //I帧的数目
  86. int isum; //I帧的数目
  87. float iavg; //I帧的数目
  88. int ifsmax; //I帧大小的最大值
  89. int ifsmin; //I帧大小的最小值
  90. int pcount; //P帧的数目
  91. int psum; //P帧的数目
  92. float pavg; //P帧的数目
  93. int pfsmax; //P帧大小的最大值
  94. int pfsmin; //P帧大小的最小值
  95. };
  96. #endif // !defined(AFX_CXVID_H__419F60F2_C37F_4106_8F08_ED571A40C344__INCLUDED_)