Browse Source

Z991239-5223 #comment 优化获取音视频设备信息接口

80274480 1 năm trước cách đây
mục cha
commit
24a15dbafb

+ 4 - 0
Module/mod_interactivecontrol/InteractiveControl.xml

@@ -499,7 +499,11 @@
 				<param name="PickupIn" type="string"/>
 				<param name="PickupOut" type="string"/>
 				<param name="EnvCamera" type="string"/>
+				<param name="EnvUsbPort" type="string"/>
+				<param name="EnvReserved" type="string"/>
 				<param name="OptCamera" type="string"/>
+				<param name="OptUsbPort" type="string"/>
+				<param name="OptReserved" type="string"/>
 			</res>
 		</twoway>
 		<twoway name="GetPickUpStatus" overlap="true">

+ 5 - 1
Module/mod_interactivecontrol/InteractiveControl_def_g.h

@@ -1442,11 +1442,15 @@ struct UIService_GetMediaDeviceInfo_Ans
 	CSimpleStringA PickupIn;
 	CSimpleStringA PickupOut;
 	CSimpleStringA EnvCamera;
+	CSimpleStringA EnvUsbPort;
+	CSimpleStringA EnvReserved;
 	CSimpleStringA OptCamera;
+	CSimpleStringA OptUsbPort;
+	CSimpleStringA OptReserved;
 
 	void Serialize(SpBuffer &Buf)
 	{
-		auto & buf = Buf & HandfreeIn & HandfreeOut & PickupIn & PickupOut & EnvCamera & OptCamera;
+		auto & buf = Buf & HandfreeIn & HandfreeOut & PickupIn & PickupOut & EnvCamera & EnvUsbPort & EnvReserved & OptCamera & OptUsbPort & OptReserved;
 	}
 
 };

+ 12 - 19
Module/mod_interactivecontrol/mod_interactivecontrol.cpp

@@ -1450,9 +1450,6 @@ ErrorCodeEnum CITCtrlEntity::ConnectAssistChannel()
 		m_pChannelClient = NULL;
 		return Error;
 	}
-	else {
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ChannelClient Connect Success!");
-	}
 
 	ChannelService_BeginRecv_Sub Sub;
 	Sub.type = ACM_TYPE_IM;
@@ -1462,9 +1459,6 @@ ErrorCodeEnum CITCtrlEntity::ConnectAssistChannel()
 		m_pChannelClient = NULL;
 		return Error;
 	}
-	else {
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BeginRecv ACM_TYPE_IM Success!");
-	}
 
 	Sub.type = ACM_TYPE_FLW;
 	Error = (*m_pChannelClient)(EntityResource::getLink().upgradeLink())->BeginRecv(Sub);
@@ -1473,9 +1467,6 @@ ErrorCodeEnum CITCtrlEntity::ConnectAssistChannel()
 		m_pChannelClient = NULL;
 		return Error;
 	}
-	else {
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BeginRecv ACM_TYPE_FLW Success!");
-	}
 
 	Sub.type = ACM_TYPE_DEVICE;
 	Error = (*m_pChannelClient)(EntityResource::getLink().upgradeLink())->BeginRecv(Sub);
@@ -1484,9 +1475,6 @@ ErrorCodeEnum CITCtrlEntity::ConnectAssistChannel()
 		m_pChannelClient = NULL;
 		return Error;
 	}
-	else {
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BeginRecv ACM_TYPE_DEVICE Success!");
-	}
 
 	Sub.type = ACM_TYPE_H5_SYNC;
 	Error = (*m_pChannelClient)(EntityResource::getLink().upgradeLink())->BeginRecv(Sub);
@@ -1495,9 +1483,6 @@ ErrorCodeEnum CITCtrlEntity::ConnectAssistChannel()
 		m_pChannelClient = NULL;
 		return Error;
 	}
-	else {
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BeginRecv ACM_TYPE_H5_SYNC Success!");
-	}
 
 	ChannelService_BeginState_Sub Sub1;
 	Error = (*m_pChannelClient)(EntityResource::getLink().upgradeLink())->BeginState(Sub1);
@@ -1974,7 +1959,9 @@ ErrorCodeEnum CITCtrlEntity::GetVideoDeviceInfo(int& iDeviceCount, CSimpleString
 }
 
 
-ErrorCodeEnum CITCtrlEntity::GetMediaDeviceInfo(CSimpleStringA& strHandfreeIn, CSimpleStringA& strHandfreeOut, CSimpleStringA& strPickUpIn, CSimpleStringA& strPickUpOut, CSimpleStringA& strEnvCamera, CSimpleStringA& strOptCamera, DWORD dwTimeout)
+ErrorCodeEnum CITCtrlEntity::GetMediaDeviceInfo(CSimpleStringA& strHandfreeIn, CSimpleStringA& strHandfreeOut, CSimpleStringA& strPickUpIn, CSimpleStringA& strPickUpOut, 
+	CSimpleStringA& strEnvCamera, CSimpleStringA& strEnvUsbPort, CSimpleStringA& strEnvReserved, 
+	CSimpleStringA& strOptCamera, CSimpleStringA& strOptUsbPort, CSimpleStringA& strOptReserved, DWORD dwTimeout)
 {
 	auto rc = Error_Succeed;
 
@@ -1987,8 +1974,13 @@ ErrorCodeEnum CITCtrlEntity::GetMediaDeviceInfo(CSimpleStringA& strHandfreeIn, C
 		rc = (*m_pMediaCtlClient)(EntityResource::getLink().upgradeLink())->GetCameraInfos(camerareq, cameraans, 5000);
 
 		if (Error_Succeed == rc) {
-			strEnvCamera = cameraans.strEnvCamera;
-			strOptCamera = cameraans.strOptCamera;
+			strEnvCamera = cameraans.EnvCamera;
+			strEnvUsbPort = cameraans.EnvUsbPort;
+			strEnvReserved = cameraans.EnvReserved;
+
+			strOptCamera = cameraans.OptCamera;
+			strOptUsbPort = cameraans.OptUsbPort;
+			strOptReserved = cameraans.OptReserved;
 		}
 		else {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get camera info failed for 0x%08x.", rc);
@@ -2653,7 +2645,8 @@ void UIServiceSession::Handle_GetCameraInfo(SpReqAnsContext<UIService_GetCameraI
 void UIServiceSession::Handle_GetMediaDeviceInfo(SpReqAnsContext<UIService_GetMediaDeviceInfo_Req, UIService_GetMediaDeviceInfo_Ans>::Pointer ctx)
 {
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	ErrorCodeEnum Error = m_pEntity->GetMediaDeviceInfo(ctx->Ans.HandfreeIn, ctx->Ans.HandfreeOut, ctx->Ans.PickupIn, ctx->Ans.PickupOut, ctx->Ans.EnvCamera, ctx->Ans.OptCamera, 2000);
+	ErrorCodeEnum Error = m_pEntity->GetMediaDeviceInfo(ctx->Ans.HandfreeIn, ctx->Ans.HandfreeOut, ctx->Ans.PickupIn, ctx->Ans.PickupOut, ctx->Ans.EnvCamera, ctx->Ans.EnvUsbPort, ctx->Ans.EnvReserved,
+		ctx->Ans.OptCamera, ctx->Ans.OptUsbPort, ctx->Ans.OptReserved, 2000);
 	ctx->Answer(Error);
 }
 

+ 3 - 1
Module/mod_interactivecontrol/mod_interactivecontrol.h

@@ -217,7 +217,9 @@ public:
 
 	ErrorCodeEnum GetVideoDeviceInfo(int& iDeviceCount, CSimpleStringA& strVideoDev, DWORD dwTimeout);
 
-	ErrorCodeEnum GetMediaDeviceInfo(CSimpleStringA& strHandfreeIn, CSimpleStringA& strHandfreeOut, CSimpleStringA& strPickUpIn, CSimpleStringA& strPickUpOut, CSimpleStringA& strEnvCamera, CSimpleStringA& strOptCamera, DWORD dwTimeout);
+	ErrorCodeEnum GetMediaDeviceInfo(CSimpleStringA& strHandfreeIn, CSimpleStringA& strHandfreeOut, CSimpleStringA& strPickUpIn, CSimpleStringA& strPickUpOut, 
+		CSimpleStringA& strEnvCamera, CSimpleStringA& strEnvUsbPort, CSimpleStringA& strEnvReserved,
+		CSimpleStringA& strOptCamera, CSimpleStringA& strOptUsbPort, CSimpleStringA& strOptReserved, DWORD dwTimeout);
 
 	ErrorCodeEnum GetPickUpStatus(int& iStatus, DWORD dwTimeout);
 

+ 7 - 3
Module/mod_mediacontroller/MediaController_def_g.h

@@ -218,12 +218,16 @@ struct MediaService_GetCameraInfos_Req
 struct MediaService_GetCameraInfos_Ans
 {
 	int retCode;
-	CSimpleStringA strEnvCamera;
-	CSimpleStringA strOptCamera;
+	CSimpleStringA EnvCamera;
+	CSimpleStringA EnvUsbPort;
+	CSimpleStringA EnvReserved;
+	CSimpleStringA OptCamera;
+	CSimpleStringA OptUsbPort;
+	CSimpleStringA OptReserved;
 
 	void Serialize(SpBuffer &Buf)
 	{
-		auto & buf = Buf & retCode & strEnvCamera & strOptCamera;
+		auto & buf = Buf & retCode & EnvCamera & EnvUsbPort & EnvReserved & OptCamera & OptUsbPort & OptReserved;
 	}
 
 };

+ 7 - 3
Module/mod_mediacontroller/MediaService.xml

@@ -58,9 +58,13 @@
        	</twoway>
 	<twoway name="GetCameraInfos" overlap="true">
             <res>
-           	<param name="retCode" type="int"/>
-           	<param name="strEnvCamera" type="string"/>
-		<param name="strOptCamera" type="string"/>
+		<param name="retCode" type="int"/>
+		<param name="EnvCamera" type="string"/>
+		<param name="EnvUsbPort" type="string"/>
+		<param name="EnvReserved" type="string"/>
+		<param name="OptCamera" type="string"/>
+		<param name="OptUsbPort" type="string"/>
+		<param name="OptReserved" type="string"/>
             </res>
         </twoway>
 	<twoway name="ManipulateCameras" overlap="true">

+ 34 - 19
Module/mod_mediacontroller/unix/mod_mediacontroller.cpp

@@ -29,21 +29,24 @@ static void __audiomgrlog(void* user_data, const char* fmt, va_list arg)
 }
 
 
-static int ReplaceDestChar(char* strOut, size_t uDstLen, const char* pSrc, size_t uSrcLen, char cWord) 
+static int GetFormatString(char* strVala, size_t uValaLen, char* strValb, size_t uValbLen, const char* pSrc, size_t uSrcLen, char cWord)
 {
-	int iRet = 0;
-	if (NULL == pSrc || 0 == uSrcLen) {
+	int iRet = -1;
+	if (NULL == pSrc || 0 == uSrcLen || MAX_PATH < uSrcLen) {
 		return iRet;
 	}
 
 	char strBuffer[MAX_PATH] = { 0 };
-	snprintf(strBuffer, MAX_PATH, "%s", pSrc);
+	memcpy(strBuffer, pSrc, uSrcLen);
 	char* pIndex = NULL;
 	if (pIndex = strrchr(strBuffer, cWord)) {
 		char* pHash = pIndex + sizeof(char);
 		*pIndex = '\0';
-		snprintf(strOut, uDstLen, "%s;%s", strBuffer, pHash);
-		iRet = strlen(strOut);
+		if (NULL != pHash) {
+			memcpy(strVala, strBuffer, pIndex - strBuffer);
+			memcpy(strValb, pHash, strlen(pHash));
+			iRet = 0;
+		}
 	}
 
 	return iRet;
@@ -2210,26 +2213,38 @@ void MediaServiceSession::Handle_GetCameraInfos(SpReqAnsContext<MediaService_Get
 	DbgToBeidou(ctx->link, __FUNCTION__)();
 	ErrorCodeEnum Error = Error_Succeed;
 
-#ifdef RVC_OS_WIN
-	ctx->Ans.strEnvCamera = m_pEntity->conf.strVideoEnv;
-	ctx->Ans.strOptCamera = m_pEntity->conf.strVideoOpt;
-#else
-	char strEnv[MAX_PATH] = { 0 };
-	if (ReplaceDestChar(strEnv, MAX_PATH, m_pEntity->conf.strVideoEnv.GetData(), m_pEntity->conf.strVideoEnv.GetLength(), ':') > 0) {
-		ctx->Ans.strEnvCamera = strEnv;
+	char strEnvCamera[MAX_PATH] = { 0 };
+	char strEnvUsbPort[MAX_PATH] = { 0 };
+	char strOptCamera[MAX_PATH] = { 0 };
+	char strOptUsbPort[MAX_PATH] = { 0 };
+	char cWord = ';';
+
+#ifdef RVC_OS_LINUX
+		cWord = ':';
+#endif // RVC_OS_LINUX
+
+
+	if (0 == GetFormatString(strEnvCamera, MAX_PATH, strEnvUsbPort, MAX_PATH, m_pEntity->conf.strVideoEnv.GetData(), m_pEntity->conf.strVideoEnv.GetLength(), cWord)){
+		ctx->Ans.EnvCamera = strEnvCamera;
+		ctx->Ans.EnvUsbPort = strEnvUsbPort;
+		ctx->Ans.EnvReserved = "";
 	}
 	else {
-		ctx->Ans.strEnvCamera = "";
+		ctx->Ans.EnvCamera = "";
+		ctx->Ans.EnvUsbPort = "";
+		ctx->Ans.EnvReserved = "";
 	}
 
-	char strOpt[MAX_PATH] = { 0 };
-	if (ReplaceDestChar(strOpt, MAX_PATH, m_pEntity->conf.strVideoOpt.GetData(), m_pEntity->conf.strVideoOpt.GetLength(), ':') > 0) {
-		ctx->Ans.strOptCamera = strOpt;
+	if (0 == GetFormatString(strOptCamera, MAX_PATH, strOptUsbPort, MAX_PATH, m_pEntity->conf.strVideoOpt.GetData(), m_pEntity->conf.strVideoOpt.GetLength(), cWord)) {
+		ctx->Ans.OptCamera = strOptCamera;
+		ctx->Ans.OptUsbPort = strOptUsbPort;
+		ctx->Ans.OptReserved = "";
 	}
 	else {
-		ctx->Ans.strOptCamera = "";
+		ctx->Ans.OptCamera = "";
+		ctx->Ans.OptUsbPort = "";
+		ctx->Ans.OptReserved = "";
 	}
-#endif // RVC_OS_WIN
 
 	ctx->Ans.retCode = (int)Error;
 

+ 26 - 4
Module/mod_mediacontroller/win/mod_mediacontroller.cpp

@@ -34,10 +34,35 @@ static void __audio_render_log(void* user_data, const char* fmt, va_list arg)
 	}
 }
 
+
+static int GetFormatString(char* strVala, size_t uValaLen, char* strValb, size_t uValbLen, const char* pSrc, size_t uSrcLen, char cWord)
+{
+	int iRet = -1;
+	if (NULL == pSrc || 0 == uSrcLen || MAX_PATH < uSrcLen) {
+		return iRet;
+	}
+
+	char strBuffer[MAX_PATH] = { 0 };
+	memcpy(strBuffer, pSrc, uSrcLen);
+	char* pIndex = NULL;
+	if (pIndex = strrchr(strBuffer, cWord)) {
+		char* pHash = pIndex + sizeof(char);
+		*pIndex = '\0';
+		if (NULL != pHash) {
+			memcpy(strVala, strBuffer, pIndex - strBuffer);
+			memcpy(strValb, pHash, strlen(pHash));
+			iRet = 0;
+		}
+	}
+
+	return iRet;
+}
+
+
 CMediaControllerEntity::CMediaControllerEntity() : m_capture(NULL), m_salesaudio_capture(NULL), m_lCaptureEnvCount(0), m_nCameraErrorCode(Error_Succeed),
 	m_lCaptureEnvOptCount(0), m_lCaptureOptCount(0), m_iEnvEmptyTimes(0), m_iOptEmptyTimes(0), m_bSendCameraError(false),
 	m_nEnvCameraRestartNum(0), m_nOptCameraRestartNum(0), m_nCameraCount(2), m_pSelfcheckClient(NULL),
-	strFrontCam("$"), strRearCam("$"), strEnvCam("$"), strUSBCam("$"), strEwsCam("$"), m_bCustomerwareBegin(false),
+	strFrontCam("$"), strRearCam("$"), strEnvCam("$"), strUSBCam("$"), m_bCustomerwareBegin(false),
 	m_pAudioRenderObj(NULL), m_bRecordPCM(false), m_bIsRemoteRecord(false), m_bHasStartSpeakerRender(false), m_strAudioPriority(""), m_bDeskToPadFlag(true)
 {
 	m_bNeedPost = false;
@@ -54,12 +79,10 @@ CMediaControllerEntity::CMediaControllerEntity() : m_capture(NULL), m_salesaudio
 	m_iDelayTime = RVC_MAX_DELAY_TIME;
 }
 
-
 void CMediaControllerEntity::OnSysVarEvent(const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName)
 {
 	if (_stricmp(pszKey, SYSVAR_CALLTYPE) == 0) 
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("sys call type from: %c to %c", pszOldValue[0], pszValue[0]);
 		if(pszValue[0] == CALLTYPE_NORMAL)
 		{
 			m_nSysCallType = 0;
@@ -77,7 +100,6 @@ void CMediaControllerEntity::OnSysVarEvent(const char *pszKey, const char *pszVa
 	{
 		CSimpleStringA strState;
 		GetFunction()->GetSysVar("UIState", strState);
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("sys call state from: %c to %c, and UIState is %s.", pszOldValue[0], pszValue[0], strState.GetData());
 		if ('C' == pszValue[0]) {
 			if (1 == m_iCamOnMode) {
 				if (!m_bStartCamera) {