libvideocapture.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #pragma once
  2. #include "ivideocaptureinterface.h"
  3. #include "../libvideoframework/videoutil.h"
  4. #include "../rvcmediacommon/common_video/videocommon.h"
  5. static const int mode_width[VIDEOCAP_MAX_MODE] = {
  6. VIDEOCAP_SQCIF_WIDTH,VIDEOCAP_QQVGA_WIDTH,
  7. VIDEOCAP_QCIF_WIDTH,VIDEOCAP_QVGA_WIDTH,
  8. VIDEOCAP_CIF_WIDTH,VIDEOCAP_VGA_WIDTH,
  9. VIDEOCAP_4CIF_WIDTH,VIDEOCAP_SVGA_WIDTH,
  10. VIDEOCAP_NHD_WIDTH,VIDEOCAP_SXGA_WIDTH,
  11. VIDEOCAP_720P_WIDTH,VIDEOCAP_1080P_WIDTH,
  12. };
  13. static const int mode_height[VIDEOCAP_MAX_MODE] = {
  14. VIDEOCAP_SQCIF_HEIGHT,VIDEOCAP_QQVGA_HEIGHT,
  15. VIDEOCAP_QCIF_HEIGHT,VIDEOCAP_QVGA_HEIGHT,
  16. VIDEOCAP_CIF_HEIGHT,VIDEOCAP_VGA_HEIGHT,
  17. VIDEOCAP_4CIF_HEIGHT,VIDEOCAP_SVGA_HEIGHT,
  18. VIDEOCAP_NHD_HEIGHT,VIDEOCAP_SXGA_HEIGHT,
  19. VIDEOCAP_720P_HEIGHT,VIDEOCAP_1080P_HEIGHT,
  20. };
  21. typedef struct videocap_s
  22. {
  23. videocap_param_t param;
  24. int running;
  25. int cap_index;
  26. video_frame cap_frame;
  27. video_frame res_frame;
  28. struct SwsContext* sws_context; /* for image scaling and format converting */
  29. } videocap_t;
  30. class VideoCaptureImpl : public IVideoCapture
  31. {
  32. public:
  33. VideoCaptureImpl(ICaptureCallback* pCallback);
  34. ~VideoCaptureImpl();
  35. virtual int VideoCaptureInit(videocap_param_t* param);
  36. virtual int StartVideoCapture();
  37. virtual int StopVideoCapture();
  38. virtual void VideoCaptureDestroy();
  39. bool VideoCaptureStarted();
  40. ICaptureCallback* GetCaptureCallback();
  41. int GetCaptureVideoFd();
  42. private:
  43. ICaptureCallback* m_callback;
  44. videocap_t* m_capture;
  45. bool m_bCaptureStarted;
  46. int m_deviceId;
  47. int m_deviceFd;
  48. int m_frame_fmt;
  49. int m_capture_width;
  50. int m_capture_height;
  51. VideoType m_captureVideoType;
  52. int m_currentFrameRate;
  53. };