video_render.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #pragma once
  2. #include "ivideorenderinterface.h"
  3. #ifdef _WIN32
  4. #else
  5. #include<semaphore.h>
  6. #endif // _WIN32
  7. #ifndef MAX_PATH
  8. #define MAX_PATH 260
  9. #endif
  10. typedef struct rvc_video_box_move_callback_s {
  11. void (*on_video_box_move)(int imessagetype, int ivideotype, int ileft, int ibottom, void* user_data);
  12. void* user_data;
  13. }rvc_video_box_move_callback_t;
  14. typedef struct rvc_video_render_callback_s {
  15. int (*on_stop_remote_video_render)(void* user_data);
  16. int (*on_remote_video_render)(void* videoframe, void* user_data);
  17. void* user_data;
  18. }rvc_video_render_callback_t;
  19. typedef struct rvc_video_render_window_type_callback_s {
  20. int (*on_window_type)(void* user_data);
  21. void* user_data;
  22. }rvc_video_render_window_type_callback_t;
  23. typedef struct rvc_video_render_params_s {
  24. int ilocal_view_x;
  25. int ilocal_view_y;
  26. int ilocal_view_cx;
  27. int ilocal_view_cy;
  28. int iremote_view_x;
  29. int iremote_view_y;
  30. int iremote_view_cx;
  31. int iremote_view_cy;
  32. int ilocal_move;
  33. int iremote_move;
  34. int ilocal_fresh_time;
  35. int iremote_fresh_time;
  36. int ilocal_render_queue;
  37. }rvc_video_render_params_t;
  38. typedef struct rvc_video_render_s {
  39. IVideoRender* plocal_render;
  40. IVideoRender* premote_render;
  41. #ifdef _WIN32
  42. #else
  43. pthread_t local_render_threadid;
  44. sem_t local_render_stop_sem;
  45. pthread_t remote_render_threadid;
  46. sem_t remote_render_stop_sem;
  47. #endif
  48. rvc_video_render_params_t render_param;
  49. rvc_video_render_window_type_callback_t cb;
  50. }rvc_video_render_t;
  51. int rvc_start_video_render(rvc_video_render_t* prender, bool bremote, rvc_video_box_move_callback_t* cb);
  52. int rvc_stop_video_render(rvc_video_render_t* prender);
  53. int rvc_remote_video_render(rvc_video_render_t* prender, void* videoframe);
  54. int rvc_stop_remote_video_render(rvc_video_render_t* prender);