|
@@ -452,15 +452,37 @@ static void* rvc_remote_videorender_func(void* arg)
|
|
|
int rvc_start_video_render(rvc_video_render_t* prender, bool bremote, rvc_video_box_move_callback_t* cb)
|
|
|
{
|
|
|
int errcode = -1;
|
|
|
+ if (NULL == prender) {
|
|
|
+ return errcode;
|
|
|
+ }
|
|
|
+
|
|
|
#ifdef RVC_OS_WIN
|
|
|
prender->local_render_stop_event = CreateEventA(NULL, false, false, NULL);
|
|
|
+ if (NULL == prender->local_render_stop_event) {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create local stop event failed!");
|
|
|
+ return Error_Resource;
|
|
|
+ }
|
|
|
+
|
|
|
prender->local_render_thread = (HANDLE)_beginthreadex(NULL, 0, rvc_videorender_func, prender, 0, NULL);
|
|
|
+ if (NULL == prender->local_render_thread) {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create local video render thread failed.");
|
|
|
+ return Error_Resource;
|
|
|
+ }
|
|
|
|
|
|
if (bremote) {
|
|
|
prender->remote_render_stop_event = CreateEventA(NULL, false, false, NULL);
|
|
|
+ if (NULL == prender->local_render_stop_event) {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create remote stop event failed!");
|
|
|
+ return Error_Resource;
|
|
|
+ }
|
|
|
+
|
|
|
prender->remote_render_thread = (HANDLE)_beginthreadex(NULL, 0, rvc_remote_videorender_func, prender, 0, NULL);
|
|
|
+ if (NULL == prender->remote_render_thread) {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create remote video render thread failed.");
|
|
|
+ return Error_Resource;
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
+ errcode = 0;
|
|
|
#else
|
|
|
if (0 != sem_init(&prender->local_render_stop_sem, 0, 0)) {
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create local stop sem failed!");
|