video_render.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #pragma once
  2. #include "ivideorenderinterface.h"
  3. #ifdef _WIN32
  4. #include <windows.h>
  5. #include <process.h>
  6. #else
  7. #include<semaphore.h>
  8. #endif // _WIN32
  9. #ifndef MAX_PATH
  10. #define MAX_PATH 260
  11. #endif
  12. enum eVideoRenderQueue {
  13. ePreview_Queue,
  14. eSnapshot_Queue
  15. };
  16. enum eVideoRenderMode {
  17. eRender_Local_Single,
  18. eRender_LocalRemote,
  19. eRender_Local_Both
  20. };
  21. typedef struct rvc_video_box_move_callback_s {
  22. void (*on_video_box_move)(int imessagetype, int ivideotype, int ileft, int ibottom, void* user_data);
  23. void* user_data;
  24. }rvc_video_box_move_callback_t;
  25. typedef struct rvc_video_render_callback_s {
  26. int (*on_stop_remote_video_render)(void* user_data);
  27. int (*on_remote_video_render)(void* videoframe, void* user_data);
  28. void* user_data;
  29. }rvc_video_render_callback_t;
  30. typedef struct rvc_video_render_window_type_callback_s {
  31. int (*on_window_type)(void* user_data);
  32. void* user_data;
  33. }rvc_video_render_window_type_callback_t;
  34. typedef struct rvc_video_render_params_s {
  35. int ilocal_view_x;
  36. int ilocal_view_y;
  37. int ilocal_view_cx;
  38. int ilocal_view_cy;
  39. int iremote_view_x;
  40. int iremote_view_y;
  41. int iremote_view_cx;
  42. int iremote_view_cy;
  43. int ilocal_move;
  44. int iremote_move;
  45. int ilocal_fresh_time;
  46. int iremote_fresh_time;
  47. eVideoRenderQueue erender_queue;
  48. }rvc_video_render_params_t;
  49. typedef struct rvc_video_render_s {
  50. IVideoRender* plocal_render;
  51. IVideoRender* premote_render;
  52. #ifdef _WIN32
  53. HANDLE local_render_thread;
  54. HANDLE local_render_stop_event;
  55. HANDLE remote_render_thread;
  56. HANDLE remote_render_stop_event;
  57. #else
  58. pthread_t local_render_threadid;
  59. sem_t local_render_stop_sem;
  60. pthread_t remote_render_threadid;
  61. sem_t remote_render_stop_sem;
  62. #endif
  63. rvc_video_render_params_t render_param;
  64. rvc_video_render_window_type_callback_t cb;
  65. }rvc_video_render_t;
  66. int rvc_start_video_render(rvc_video_render_t* prender, eVideoRenderMode eMode, rvc_video_box_move_callback_t* cb);
  67. int rvc_stop_video_render(rvc_video_render_t* prender);
  68. int rvc_remote_video_render(rvc_video_render_t* prender, void* videoframe);
  69. int rvc_stop_remote_video_render(rvc_video_render_t* prender);