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

多媒体编程

开发平台:

Visual C++

  1. /**************************************************************************************
  2.  *                                                                                    *
  3.  *                                                                                    *
  4.  **************************************************************************************/
  5. #ifndef VIDEO_BUFFER_H
  6. #define VIDEO_BUFFER_H
  7. #include "MediaClasses.h"
  8. /*
  9.  * 定义
  10.  */ 
  11. #define VIDEO_BUFFER_SIZE                5
  12. #define VIDEO_BUFFER_END_NOT_REACHED 32768
  13. /* 
  14.  * Video Buffer Class
  15.  *
  16.  *  ——只执行一次
  17.  *
  18.  */
  19. class MediaVideoBuffer : public MediaItemVideoBuffer {
  20. public:
  21. MediaBuffer           *buffer[VIDEO_BUFFER_SIZE];
  22. MediaItemVideoDecoder *decoder;
  23. DWORD                  bufferedFrames;
  24. HANDLE                 bufferingMutex;
  25. HANDLE                 bufferingThread;
  26. DWORD                  bufferingThreadId;
  27. unsigned int           stride;
  28. BOOL                   suspended;
  29. DWORD                  endReachedAt;
  30. BOOL                   enabled;
  31. MediaVideoBuffer();
  32. ~MediaVideoBuffer();
  33. /*
  34.  * 媒体项方法
  35.  */
  36. media_type_t  GetType();
  37. char         *GetName();
  38. MP_RESULT     Connect(MediaItem *item);
  39. MP_RESULT     ReleaseConnections();
  40. DWORD         GetCaps();
  41. MP_RESULT     Configure(HINSTANCE hInstance, HWND hwnd);
  42. /*
  43.  * 视频缓冲方法
  44.  */
  45. MP_RESULT     StartBuffering(unsigned int stride);
  46. MP_RESULT     StopBuffering();
  47. MediaBuffer  *GetOneFrame();
  48. MediaBuffer  *GetLastFrame();
  49. MP_RESULT     DropOneFrame();
  50. };
  51. #endif