video_render.h 1.6 KB

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