KLAviFile.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //---------------------------------------------------------------------------
  2. // Sword3 Engine (c) 1999-2000 by Kingsoft
  3. //
  4. // File: KAviFile.h
  5. // Date: 2000.08.08
  6. // Code: Daniel Wang
  7. // Desc: Header file
  8. //---------------------------------------------------------------------------
  9. #ifndef __KLAviFile_H__
  10. #define __KLAviFile_H__
  11. //#include <afx.h>
  12. #include <mmsystem.h>
  13. #include "KLCFile.h"
  14. // SOME USEFUL MACROS
  15. #define PAD_EVEN(x) (((x) + 1) & ~1)
  16. #define AVIIF_KEYFRAME 0x00000010L
  17. //---------------------------------------------------------------------------
  18. // video index
  19. typedef struct
  20. {
  21. long pos;
  22. long len;
  23. long flags;
  24. } video_index_entry;
  25. //---------------------------------------------------------------------------
  26. // autio index
  27. typedef struct
  28. {
  29. long pos;
  30. long len;
  31. long tot;
  32. } audio_index_entry;
  33. //---------------------------------------------------------------------------
  34. // avi file class
  35. class KLAviFile
  36. {
  37. private:
  38. BITMAPINFOHEADER m_BitmapInfoHeader;
  39. WAVEFORMATEX m_WaveFormatEx;
  40. char m_compressor[8];
  41. int m_fps;    
  42. long m_video_strn;
  43. long m_video_frames;
  44. char m_video_tag[4];
  45. long m_video_pos;
  46. long m_audio_strn;
  47. long m_audio_bytes;
  48. long m_audio_chunks;
  49. char m_audio_tag[4];
  50. long m_audio_posc;
  51. long m_audio_posb;
  52. char (*m_idx)[16];
  53. long m_idx_num;
  54. long m_idx_type;
  55. video_index_entry* m_video_index;
  56. audio_index_entry* m_audio_index;
  57. long m_movi_start;
  58. KLCFile m_AviFile;
  59. public:
  60. KLAviFile();
  61. ~KLAviFile();
  62. BOOL Open(char* FileName);
  63. BOOL FillHeader();
  64. BOOL GetAudioIndex();
  65. BOOL GetVideoIndex();
  66. void GetCompressMethod(char* method);
  67. void GetBitmapInfoHeader(PBITMAPINFOHEADER pBmpInfoHead);
  68. void GetWaveFormat(PWAVEFORMATEX pWavFmt);
  69. int  VideoStreams();
  70. int  AudioStreams();
  71. int FrameRate();
  72. int CurrentFrame();
  73. int TotalFrames();
  74. int  NextFrame(unsigned char *buffer);
  75. int  ReadAudio(unsigned char *buffer, int size);
  76. int  VideoSeek(int percent);
  77. int  AudioSeek(int percent);
  78. BOOL IsKeyframe(int frame);
  79. int  NextKeyFrame();
  80. int  PreviousKeyFrame();
  81. int Rewind();
  82. void Close();
  83. };
  84. //---------------------------------------------------------------------------
  85. #endif // KAviFile_H