浏览代码

Z991239-5945 #comment 优化win下摄像头亮度调节功能

80274480 8 月之前
父节点
当前提交
2483f53c7c
共有 3 个文件被更改,包括 39 次插入8 次删除
  1. 32 6
      Module/mod_mediacontroller/capture.cpp
  2. 4 1
      Module/mod_sipphone/mod_sipphone.cpp
  3. 3 1
      Module/mod_sipphone/video_render.cpp

+ 32 - 6
Module/mod_mediacontroller/capture.cpp

@@ -2166,7 +2166,7 @@ namespace MediaController {
 		HRESULT rst = S_OK;
 		if (cap && cap->env_video && (nCode != Error_EnvCamera) && (nCode != Error_AllCamera))
 		{
-			HRESULT rst = videocap_get_brightness(cap->env_video->cap, &nValue1);
+			rst = videocap_get_brightness(cap->env_video->cap, &nValue1);
 		}
 		HRESULT rst2 = S_OK;
 		if (cap && cap->opt_video && (nCode != Error_OptCamera) && (nCode != Error_AllCamera))
@@ -2235,15 +2235,29 @@ namespace MediaController {
 	int capture_get_camera_brightness(int* ibrightness, capture_t* cap, ErrorCodeEnum nCode, int icameraid)
 	{
 		int iret = -1;
-#ifdef RVC_OS_WIN
 
+#ifdef RVC_OS_WIN
+		if (0 == icameraid) {
+			if (cap && cap->env_video && (nCode != Error_EnvCamera) && (nCode != Error_AllCamera)){
+				if (S_OK == videocap_get_brightness(cap->env_video->cap, ibrightness)) {
+					iret = 0;
+				}
+			}
+		}
+		else if (1 == icameraid) {
+			if (cap && cap->opt_video && (nCode != Error_OptCamera) && (nCode != Error_AllCamera)){
+				if (S_OK == videocap_get_brightness(cap->opt_video->cap, ibrightness)) {
+					iret = 0;
+				}
+			}
+		}
 #else
 		if (0 == icameraid) {
 			if (cap && cap->env_video && cap->env_video->pVideoCap && (nCode != Error_EnvCamera) && (nCode != Error_AllCamera)) {
 				iret = cap->env_video->pVideoCap->GetCamBrightness(ibrightness, false);
 			}
 		}
-		else {
+		else if(1 == icameraid){
 			if (cap && cap->opt_video && cap->opt_video->pVideoCap && (nCode != Error_OptCamera) && (nCode != Error_AllCamera)) {
 				iret = cap->opt_video->pVideoCap->GetCamBrightness(ibrightness, false);
 			}
@@ -2256,15 +2270,27 @@ namespace MediaController {
 	{
 		int iret = -1;
 #ifdef RVC_OS_WIN
-
+		if (0 == icameraid) {
+			if (cap && cap->env_video && (nCode != Error_EnvCamera) && (nCode != Error_AllCamera)){
+				if (S_OK == videocap_adj_brightness(cap->env_video->cap, ibrightness)) {
+					iret = 0;
+				}
+			}
+		}
+		else if (1 == icameraid) {
+			if (cap && cap->opt_video && (nCode != Error_OptCamera) && (nCode != Error_AllCamera)){
+				if (S_OK == videocap_adj_brightness(cap->opt_video->cap, ibrightness)) {
+					iret = 0;
+				}
+			}
+		}
 #else
-
 		if (0 == icameraid) {
 			if (cap && cap->env_video && cap->env_video->pVideoCap && (nCode != Error_EnvCamera) && (nCode != Error_AllCamera)) {
 				iret = cap->env_video->pVideoCap->SetCamBrightness(ibrightness, false);
 			}
 		}
-		else {
+		else if (1 == icameraid) {
 			if (cap && cap->opt_video && cap->opt_video->pVideoCap && (nCode != Error_OptCamera) && (nCode != Error_AllCamera)) {
 				iret = cap->opt_video->pVideoCap->SetCamBrightness(ibrightness, false);
 			}

+ 4 - 1
Module/mod_sipphone/mod_sipphone.cpp

@@ -2489,7 +2489,10 @@ int CSIPEntity::StopCameraRender()
 	}
 
 #ifdef RVC_OS_WIN
-
+	if (NULL != m_render->local_render_stop_event) {
+		CloseHandle(m_render->local_render_stop_event);
+		m_render->local_render_stop_event = NULL;
+	}
 #else
 	if (NULL != &m_render->local_render_stop_sem) {
 		sem_destroy(&m_render->local_render_stop_sem);

+ 3 - 1
Module/mod_sipphone/video_render.cpp

@@ -446,6 +446,7 @@ int rvc_stop_video_render(rvc_video_render_t* prender)
 	rvc_stop_remote_video_render(prender);
 	if (NULL != prender->local_render_thread) {
 		WaitForSingleObject(prender->local_render_thread, INFINITE);
+		CloseHandle(prender->local_render_thread);
 		prender->local_render_thread = NULL;
 	}
 #else
@@ -467,9 +468,10 @@ int rvc_stop_video_render(rvc_video_render_t* prender)
 int rvc_stop_remote_video_render(rvc_video_render_t* prender)
 {
 #ifdef RVC_OS_WIN
-	SetEvent(prender->remote_render_stop_event);
 	if (NULL != prender->remote_render_thread) {
+		SetEvent(prender->remote_render_stop_event);
 		WaitForSingleObject(prender->remote_render_thread, INFINITE);
+		CloseHandle(prender->remote_render_thread);
 		prender->remote_render_thread = NULL;
 	}
 #else