video_render.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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. #ifndef rvc_snprintf
  13. #ifdef RVC_OS_WIN
  14. #define rvc_snprintf _snprintf
  15. #else
  16. #define rvc_snprintf snprintf
  17. #endif // RVC_OS_WIN
  18. #endif // rvc_snprintf
  19. enum eVideoRenderQueue {
  20. ePreview_Queue,
  21. eSnapshot_Queue
  22. };
  23. enum eVideoRenderMode {
  24. eRender_Local_Single,
  25. eRender_LocalRemote,
  26. eRender_Local_Both
  27. };
  28. typedef struct rvc_video_box_move_callback_s {
  29. void (*on_video_box_move)(int imessagetype, int ivideotype, int ileft, int ibottom, void* user_data);
  30. void* user_data;
  31. }rvc_video_box_move_callback_t;
  32. typedef struct rvc_video_render_callback_s {
  33. int (*on_stop_remote_video_render)(void* user_data);
  34. int (*on_remote_video_render)(void* videoframe, void* user_data);
  35. void* user_data;
  36. }rvc_video_render_callback_t;
  37. typedef struct rvc_video_render_window_type_callback_s {
  38. int (*on_window_type)(void* user_data);
  39. void* user_data;
  40. }rvc_video_render_window_type_callback_t;
  41. typedef struct rvc_video_render_params_s {
  42. int ilocal_view_x;
  43. int ilocal_view_y;
  44. int ilocal_view_cx;
  45. int ilocal_view_cy;
  46. int iremote_view_x;
  47. int iremote_view_y;
  48. int iremote_view_cx;
  49. int iremote_view_cy;
  50. int ilocal_move;
  51. int iremote_move;
  52. int ilocal_fresh_time;
  53. int iremote_fresh_time;
  54. eVideoRenderQueue erender_queue;
  55. }rvc_video_render_params_t;
  56. typedef struct rvc_video_render_s {
  57. IVideoRender* plocal_render;
  58. IVideoRender* premote_render;
  59. #ifdef _WIN32
  60. HANDLE local_render_thread;
  61. HANDLE local_render_stop_event;
  62. HANDLE remote_render_thread;
  63. HANDLE remote_render_stop_event;
  64. #else
  65. pthread_t local_render_threadid;
  66. sem_t local_render_stop_sem;
  67. pthread_t remote_render_threadid;
  68. sem_t remote_render_stop_sem;
  69. #endif
  70. rvc_video_render_params_t render_param;
  71. rvc_video_render_window_type_callback_t cb;
  72. }rvc_video_render_t;
  73. int rvc_start_video_render(rvc_video_render_t* prender, eVideoRenderMode eMode, rvc_video_box_move_callback_t* cb);
  74. int rvc_stop_video_render(rvc_video_render_t* prender);
  75. int rvc_remote_video_render(rvc_video_render_t* prender, void* videoframe);
  76. int rvc_stop_remote_video_render(rvc_video_render_t* prender);