#pragma once #include "ivideorenderinterface.h" #ifdef _WIN32 #else #include #endif // _WIN32 #ifndef MAX_PATH #define MAX_PATH 260 #endif typedef struct rvc_video_box_move_callback_s { void (*on_video_box_move)(int imessagetype, int ivideotype, int ileft, int ibottom, void* user_data); void* user_data; }rvc_video_box_move_callback_t; typedef struct rvc_video_render_callback_s { int (*on_stop_remote_video_render)(void* user_data); int (*on_remote_video_render)(void* videoframe, void* user_data); void* user_data; }rvc_video_render_callback_t; typedef struct rvc_video_render_window_type_callback_s { int (*on_window_type)(void* user_data); void* user_data; }rvc_video_render_window_type_callback_t; typedef struct rvc_video_render_params_s { int ilocal_view_x; int ilocal_view_y; int ilocal_view_cx; int ilocal_view_cy; int iremote_view_x; int iremote_view_y; int iremote_view_cx; int iremote_view_cy; int ilocal_move; int iremote_move; int ilocal_fresh_time; int iremote_fresh_time; }rvc_video_render_params_t; typedef struct rvc_video_render_s { IVideoRender* plocal_render; IVideoRender* premote_render; #ifdef _WIN32 #else pthread_t local_render_threadid; sem_t local_render_stop_sem; pthread_t remote_render_threadid; sem_t remote_render_stop_sem; #endif rvc_video_render_params_t render_param; rvc_video_render_window_type_callback_t cb; }rvc_video_render_t; int rvc_start_video_render(rvc_video_render_t* prender, bool bremote, rvc_video_box_move_callback_t* cb); int rvc_stop_video_render(rvc_video_render_t* prender); int rvc_remote_video_render(rvc_video_render_t* prender, void* videoframe); int rvc_stop_remote_video_render(rvc_video_render_t* prender);