Forráskód Böngészése

Z991239-5525 #comment 解决UOS下单摄像头故障时存在实体lost问题

80274480 1 éve
szülő
commit
f59225646e

+ 1 - 1
Module/mod_mediacontroller/Event.h

@@ -68,7 +68,7 @@
 #define LOG_EVT_MEDIACONTROLLER_OPTCAM_OPEN					0x20880077  //打开下摄像头
 #define LOG_EVT_MEDIACONTROLLER_OPTCAM_CLOSE				0x20880078  //关闭下摄像头
 #define LOG_EVT_MEDIACONTROLLER_CAMOPEN_FAILED_INFO			0x20880079  //摄像头失败原因
-
+#define LOG_EVT_MEDIACONTROLLER_RESTART_CAME_SUCCESS		0x20880080  //重新打开摄像头成功
 
 #define LOG_EVT_MEDIACONTROLLER_CAMERA_STARTED				0x20890001	//摄像头已开启
 #define LOG_EVT_MEDIACONTROLLER_CAMERA_STOPPED				0x20890002  //摄像头已关闭

+ 6 - 11
Module/mod_mediacontroller/capture.cpp

@@ -1356,11 +1356,13 @@ static int video_capture_start_linux(video_capture_t* video_cap)
 			else {
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("VideoCap StartVideoCapture failed!");
 				DestroyVideoCaptureObj(video_cap->pVideoCap);
+				video_cap->pVideoCap = NULL;
 			}
 		}
 		else {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("VideoCap SetVideoCaptureParam failed!");
 			DestroyVideoCaptureObj(video_cap->pVideoCap);
+			video_cap->pVideoCap = NULL;
 		}
 	}
 	else{
@@ -1804,7 +1806,7 @@ namespace MediaController {
 		}
 	}
 
-	int capture_detect_camera_bug(capture_t *cap, int *env_n, int *opt_n, bool IsPad)
+	int capture_detect_camera_bug(capture_t *cap, int *env_n, int *opt_n, bool bsinglecam)
 	{
 		*env_n = 0;
 		*opt_n = 0;
@@ -1829,7 +1831,7 @@ namespace MediaController {
 		} 
 		else 
 		{
-			if (!IsPad)
+			if (!bsinglecam)
 			{		
 				*opt_n = -1;
 			}
@@ -1837,7 +1839,6 @@ namespace MediaController {
 			{
 				*opt_n = 1;
 			}
-
 		}
 		return 0;
 	}
@@ -1854,10 +1855,7 @@ namespace MediaController {
 				*env_n  = cap->env_video->rtp_shm_queue->GetLastFrameTime();
 			}
 		} 
-		else 
-		{
-			*env_n = 0;
-		}
+
 
 		if (cap->opt_video) 
 		{
@@ -1866,10 +1864,7 @@ namespace MediaController {
 				*opt_n  = cap->opt_video->rtp_shm_queue->GetLastFrameTime();
 			}
 		} 
-		else 
-		{
-			*opt_n = 0;
-		}
+
 		return 0;
 	}
 

+ 1 - 1
Module/mod_mediacontroller/capture.h

@@ -158,7 +158,7 @@ namespace MediaController {
 	void capture_stop(capture_t *cap);
 	int capture_lib_init(int* ivideonum);
 
-	int capture_detect_camera_bug(capture_t *cap, int *env_n, int *opt_n,bool IsPad);
+	int capture_detect_camera_bug(capture_t *cap, int *env_n, int *opt_n, bool bsinglecam);
 	int capture_get_last_frametime(capture_t *cap, unsigned int* env_n, unsigned int* opt_n);
 
 	int salesaudio_capture_create(rvc_audio_capture_config_t *config, rvc_sales_audio_capture_t **p_cap);

+ 81 - 94
Module/mod_mediacontroller/mod_mediacontroller.cpp

@@ -88,7 +88,7 @@ static int GetFormatString(char* strVala, size_t uValaLen, char* strValb, size_t
 
 
 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_nEnvCameraRestartNum(0), m_nOptCameraRestartNum(0), 
+	m_lCaptureEnvOptCount(0), m_lCaptureOptCount(0), 
 	m_nCameraCount(2), m_pHMClient(NULL),m_pMediaControllerChannel(NULL),m_bIsRemoteRecord(false), m_bHasStartSpeakerRender(false), m_bConnectedAssist(false)
 {
 #ifdef RVC_OS_LINUX
@@ -100,7 +100,6 @@ CMediaControllerEntity::CMediaControllerEntity(): m_capture(NULL), m_salesaudio_
 	m_pAudioRenderObj = NULL;
 	m_bSpeakerCap = true;
 #endif
-	m_bNeedPost = false;
 	m_iCamTimeout = CAMERA_TIMEOUT;
 	m_iDelayTime = RVC_MAX_DELAY_TIME;
 	m_interValTime = RVC_CAM_INTERVAL_TIME;
@@ -591,50 +590,57 @@ void CMediaControllerEntity::OnTimeCameraStatusCheck()
 {
 	int env_n = -1, opt_n = -1;
 	unsigned int nLastEnvTime = 0, nLastOptTime = 0;
-	bool bEnvTimeout = false;
-	bool bOptTimeout = false;
+	static bool bEnvTimeout = false, bOptTimeout = false;
+	static int iEnvEmptyTimes(0), iOptEmptyTimes(0), iEnvCameraRestartNum(0), iOptCameraRestartNum(0);
 
-	bool bIsSingleCamera = false;
+	bool bSingleCamera = false;
 	if (eStand1SPlusType == m_eDeviceType){
-		bIsSingleCamera = true;
+		bSingleCamera = true;
 	}
 
 	//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s:%d.", __FUNCTION__, __LINE__);
 
-	capture_detect_camera_bug(m_capture, &env_n, &opt_n, bIsSingleCamera);
+	capture_detect_camera_bug(m_capture, &env_n, &opt_n, bSingleCamera);
 
 	capture_get_last_frametime(m_capture, &nLastEnvTime, &nLastOptTime);
 
 	if (env_n == 0) {
-		if (m_iEnvEmptyTimes < CAMERA_BUG_THRESHOLD){
-			m_iEnvEmptyTimes++; 
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get env camera picture fail,Times=%d",m_iEnvEmptyTimes);
+		if (iEnvEmptyTimes < CAMERA_BUG_THRESHOLD){
+			iEnvEmptyTimes++; 
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get env camera picture fail, times=%d.",iEnvEmptyTimes);
 		}	
 	} 
 	else if (env_n == -1){
-		m_iEnvEmptyTimes = CAMERA_BUG_THRESHOLD;
+		iEnvEmptyTimes = CAMERA_BUG_THRESHOLD;
 	}
 	else {
-		if (m_iEnvEmptyTimes == CAMERA_BUG_THRESHOLD){
-
+		if (iEnvEmptyTimes == CAMERA_BUG_THRESHOLD){
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("env camera get video right again.");
 		}
-		m_iEnvEmptyTimes = 0;
+		iEnvEmptyTimes = 0;
 	}
+
 	//env图像是否超时
 	if(nLastEnvTime > 0)
 	{
 		if(((y2k_time_now()-nLastEnvTime) > m_iCamTimeout)&&!bEnvTimeout)
 		{
 			bEnvTimeout = true;
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("bEnvTimeout.");
 		} 
 		else if (((y2k_time_now()-nLastEnvTime) < m_iCamTimeout)&&bEnvTimeout)
 		{
 			bEnvTimeout = false;
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("change env camera from bEnvTimeout to ok.");
 		}
 	}
+	else {
+		bEnvTimeout = true;
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("bEnvTimeout.");
+	}
 
-	//env是否30S没有图像或者图像20秒没有更新
-	if(((m_iEnvEmptyTimes == CAMERA_BUG_THRESHOLD)||bEnvTimeout)&&(m_nCameraErrorCode!=Error_EnvCamera)&&(m_nCameraErrorCode!=Error_AllCamera))
+	//env是否30S没有图像或者图像15秒没有更新
+	if(((iEnvEmptyTimes == CAMERA_BUG_THRESHOLD)||bEnvTimeout)&&(m_nCameraErrorCode!=Error_EnvCamera)&&(m_nCameraErrorCode!=Error_AllCamera))
 	{
 		char strMessage[MAX_PATH*2] = {0};
 		get_camera_exception_message(strMessage, MAX_PATH*2, conf.strVideoEnv, "Env camera bug detected!");
@@ -648,57 +654,36 @@ void CMediaControllerEntity::OnTimeCameraStatusCheck()
 		
 		LogWarn(Severity_Middle, Error_Hardware, ERROR_MOD_MEDIACONTROLLER_ENVCAMERA_BUG, strInfo);
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("CaptureEnvCam").setLogCode(MediaService_LogCode_StartCamera).setResultCode("RTA2805")("上摄像头故障,采集不到图像");
-		if (eStand2sType != m_eDeviceType){
-			if (m_bNeedPost){
-				LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_MEDIACONTROLLER_CONFIG_ALLERROR, "single camera device, camera error for can't get video from it.");
-				m_bNeedPost = false;
-			}
-		}
 
-		if (eStand1SPlusType == m_eDeviceType)
-		{
+		if (eStand1SPlusType == m_eDeviceType){
 			m_nCameraErrorCode = Error_AllCamera;
-			ChangeSysvar(Error_EnvCamera);
-			if (!m_bIsRemoteRecord) {
-				RealSelfCheck();
-			}
-			return;
 		}
 		else{
 			if (m_nCameraErrorCode == Error_Succeed){
 				m_nCameraErrorCode = Error_EnvCamera;
-				ChangeSysvar(m_nCameraErrorCode);
 			}
 			else if (m_nCameraErrorCode == Error_OptCamera){
 				m_nCameraErrorCode = Error_AllCamera;
-				ChangeSysvar(m_nCameraErrorCode);
-				if (!m_bIsRemoteRecord) {
-					RealSelfCheck();
-				}
-
-				return;
 			}
 		}
+		ChangeSysvar(m_nCameraErrorCode);
 	}
-	else if((m_iEnvEmptyTimes != CAMERA_BUG_THRESHOLD)&&!bEnvTimeout&&((m_nCameraErrorCode == Error_EnvCamera)||(m_nCameraErrorCode == Error_AllCamera)))
+	else if((iEnvEmptyTimes != CAMERA_BUG_THRESHOLD)&&!bEnvTimeout&&((m_nCameraErrorCode == Error_EnvCamera)||(m_nCameraErrorCode == Error_AllCamera)))
 	{
-		if (eStand1SPlusType == m_eDeviceType)
-		{
+		if (eStand1SPlusType == m_eDeviceType){
 			m_nCameraErrorCode = Error_Succeed;
-			ChangeSysvar(m_nCameraErrorCode);
 		}
 		else{
 			if (m_nCameraErrorCode == Error_EnvCamera){
 				m_nCameraErrorCode = Error_Succeed;
-				ChangeSysvar(m_nCameraErrorCode);
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("changeSysvar to No_Error");
 			}
 			else if (m_nCameraErrorCode == Error_AllCamera){
 				m_nCameraErrorCode = Error_OptCamera;
-				ChangeSysvar(m_nCameraErrorCode);
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("changeSysvar to Opt_Error");
 			}
 		}
+		ChangeSysvar(m_nCameraErrorCode);
 	}
 
 	//opt是否没有图像
@@ -706,41 +691,49 @@ void CMediaControllerEntity::OnTimeCameraStatusCheck()
 	{
 		if (opt_n == 0) 
 		{
-			if (m_iOptEmptyTimes < CAMERA_BUG_THRESHOLD)
+			if (iOptEmptyTimes < CAMERA_BUG_THRESHOLD)
 			{
-				m_iOptEmptyTimes++; 
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get opt camera picture fail, Times=%d",m_iOptEmptyTimes);
+				iOptEmptyTimes++; 
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get opt camera picture fail, times = %d.",iOptEmptyTimes);
 			}
 		}
 		else if (opt_n == -1)
 		{
-			m_iOptEmptyTimes = CAMERA_BUG_THRESHOLD;
+			iOptEmptyTimes = CAMERA_BUG_THRESHOLD;
 		}
 		else 
 		{
-			if (m_iOptEmptyTimes == CAMERA_BUG_THRESHOLD)
+			if (iOptEmptyTimes == CAMERA_BUG_THRESHOLD)
 			{
-				//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("opt camera get right!");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("opt camera get video right again!");
 			}
-			m_iOptEmptyTimes = 0;
+			iOptEmptyTimes = 0;
 		}
 	}
 
 	//opt图像是否超时
-	if((nLastOptTime > 0)&&(eStand2sType == m_eDeviceType))
-	{
-		if(((y2k_time_now()-nLastOptTime) > m_iCamTimeout)&&!bOptTimeout)
+	if (eStand2sType == m_eDeviceType) {
+		if (nLastOptTime > 0)
 		{
+			if (((y2k_time_now() - nLastOptTime) > m_iCamTimeout) && !bOptTimeout)
+			{
+				bOptTimeout = true;
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("bOptTimeout");
+			}
+			else if (((y2k_time_now() - nLastOptTime) < m_iCamTimeout) && bOptTimeout)
+			{
+				bOptTimeout = false;
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("change opt camera from bOptTimeout to ok");
+			}
+		}
+		else {
 			bOptTimeout = true;
-		} 
-		else if (((y2k_time_now()-nLastOptTime) < m_iCamTimeout)&&bOptTimeout)
-		{
-			bOptTimeout = false;
-			//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("change opt camera from bOptTimeout to OK");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("bOptTimeout");
 		}
 	}
+
 	//opt是否100S没有图像或者图像20秒没有更新
-	if(((m_iOptEmptyTimes == CAMERA_BUG_THRESHOLD)||bOptTimeout)&&(m_nCameraErrorCode!=Error_OptCamera)&&(m_nCameraErrorCode!=Error_AllCamera)&&(eStand2sType == m_eDeviceType))
+	if(((iOptEmptyTimes == CAMERA_BUG_THRESHOLD)||bOptTimeout)&&(m_nCameraErrorCode!=Error_OptCamera)&&(m_nCameraErrorCode!=Error_AllCamera)&&(eStand2sType == m_eDeviceType))
 	{
 		char strMessage[MAX_PATH*2] = {0};
 		get_camera_exception_message(strMessage, MAX_PATH*2, conf.strVideoOpt, "Opt camera bug detected!");
@@ -757,102 +750,97 @@ void CMediaControllerEntity::OnTimeCameraStatusCheck()
 		if (m_nCameraErrorCode == Error_Succeed)
 		{
 			m_nCameraErrorCode = Error_OptCamera;
-			ChangeSysvar(m_nCameraErrorCode);
 		}
 		else if (m_nCameraErrorCode == Error_EnvCamera)
 		{
 			m_nCameraErrorCode = Error_AllCamera;
-			ChangeSysvar(m_nCameraErrorCode);
-			if (!m_bIsRemoteRecord) {
-				RealSelfCheck();
-			}
-			return;
 		}
+		ChangeSysvar(m_nCameraErrorCode);
 	}
-	else if((m_iOptEmptyTimes != CAMERA_BUG_THRESHOLD)&&!bOptTimeout&&((m_nCameraErrorCode == Error_OptCamera)||(m_nCameraErrorCode == Error_AllCamera))&&(eStand2sType == m_eDeviceType))
+	else if((iOptEmptyTimes != CAMERA_BUG_THRESHOLD)&&!bOptTimeout&&((m_nCameraErrorCode == Error_OptCamera)||(m_nCameraErrorCode == Error_AllCamera))&&(eStand2sType == m_eDeviceType))
 	{
 		if (m_nCameraErrorCode == Error_OptCamera)
 		{
 			m_nCameraErrorCode = Error_Succeed;
-			ChangeSysvar(m_nCameraErrorCode);
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("changeSysvar to No_Error");
 		}
 		else if (m_nCameraErrorCode == Error_AllCamera)
 		{
 			m_nCameraErrorCode = Error_EnvCamera;
-			ChangeSysvar(m_nCameraErrorCode);
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("changeSysvar to Env_Error");
 		}
+		ChangeSysvar(m_nCameraErrorCode);
 	}
 
-	//重摄像头
-	if((m_nCameraErrorCode == Error_EnvCamera)&&(m_nEnvCameraRestartNum<CAMERA_RESTARTNUM))
+	//重新打开摄像头
+	if((m_nCameraErrorCode == Error_EnvCamera)&&(iEnvCameraRestartNum<CAMERA_RESTARTNUM))
 	{
 		if (ReStartCamera(ENVCAMERA) != Error_Succeed){
-			m_nEnvCameraRestartNum++;
+			iEnvCameraRestartNum++;
 		}
 		else
 		{
-			m_nEnvCameraRestartNum = 0;
+			iEnvCameraRestartNum = 0;
 			m_nCameraErrorCode = Error_Succeed;
 			ChangeSysvar(m_nCameraErrorCode);
-			m_iEnvEmptyTimes = 0;
+			iEnvEmptyTimes = 0;
 			bEnvTimeout = false;
-			//重置上次取图像时间,防止出现重启摄像头5s内取不到图像不断重启摄像头问题
-			nLastEnvTime = y2k_time_now();
+			LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_RESTART_CAME_SUCCESS, "restart env camera success.");
 		}
 	}
-	else if((m_nCameraErrorCode == Error_OptCamera)&&(m_nOptCameraRestartNum<CAMERA_RESTARTNUM)&&(eStand2sType == m_eDeviceType))
+	else if((m_nCameraErrorCode == Error_OptCamera)&&(iOptCameraRestartNum<CAMERA_RESTARTNUM)&&(eStand2sType == m_eDeviceType))
 	{
 		if (ReStartCamera(OPTCAMERA) != Error_Succeed) {
-			m_nOptCameraRestartNum++;
+			iOptCameraRestartNum++;
 		}
 		else
 		{
-			m_nOptCameraRestartNum = 0;
+			iOptCameraRestartNum = 0;
 			m_nCameraErrorCode = Error_Succeed;
 			ChangeSysvar(m_nCameraErrorCode);
-			m_iOptEmptyTimes = 0;
+			iOptEmptyTimes = 0;
 			bOptTimeout = false;
-			//重置上次取图像时间,防止出现重启摄像头5s内取不到图像不断重启摄像头问题
-			nLastOptTime = y2k_time_now();
+			LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_RESTART_CAME_SUCCESS, "restart opt camera success.");
 		}
 	}
 	else if (m_nCameraErrorCode == Error_AllCamera)
 	{
-		if (m_nEnvCameraRestartNum<CAMERA_RESTARTNUM)
+		if (iEnvCameraRestartNum<CAMERA_RESTARTNUM)
 		{
-			if (ReStartCamera(ENVCAMERA) != Error_Succeed)
-				m_nEnvCameraRestartNum++;
+			if (ReStartCamera(ENVCAMERA) != Error_Succeed) {
+				iEnvCameraRestartNum++;
+			}
 			else
 			{
-				m_nEnvCameraRestartNum = 0;
+				iEnvCameraRestartNum = 0;
 				m_nCameraErrorCode = Error_OptCamera;
 				ChangeSysvar(m_nCameraErrorCode);
-				m_iEnvEmptyTimes = 0;
+				iEnvEmptyTimes = 0;
 				bEnvTimeout = false;
+				LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_RESTART_CAME_SUCCESS, "restart env camera success.");
 			}
 		}
 
-		if((m_nOptCameraRestartNum<CAMERA_RESTARTNUM)&&(eStand2sType == m_eDeviceType))
+		if((iOptCameraRestartNum<CAMERA_RESTARTNUM)&&(eStand2sType == m_eDeviceType))
 		{
-			if (ReStartCamera(OPTCAMERA) != Error_Succeed)
-				m_nOptCameraRestartNum++;
+			if (ReStartCamera(OPTCAMERA) != Error_Succeed) {
+				iOptCameraRestartNum++;
+			}
 			else
 			{
-				m_nOptCameraRestartNum = 0;
-				m_iOptEmptyTimes = 0;
+				iOptCameraRestartNum = 0;
+				iOptEmptyTimes = 0;
 				bOptTimeout = false;
 				if (m_nCameraErrorCode == Error_AllCamera)
 				{
 					m_nCameraErrorCode = Error_EnvCamera;
-					ChangeSysvar(m_nCameraErrorCode);
 				} 
 				else
 				{
 					m_nCameraErrorCode = Error_Succeed;
-					ChangeSysvar(m_nCameraErrorCode);
 				}
+				ChangeSysvar(m_nCameraErrorCode);
+				LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_RESTART_CAME_SUCCESS, "restart opt camera success.");
 			}
 		}
 	}
@@ -1609,7 +1597,6 @@ void CMediaControllerEntity::StartCameraAndSetSysVar()
 		SetCameraSysVar(CAMERA_NO_ERROR);
 		m_bStartCamera = true;
 		m_nCameraErrorCode = Error_Succeed;
-		m_bNeedPost = true;
 	}
 	else{
 		if (Error == Error_EnvCamera){
@@ -1649,7 +1636,7 @@ ErrorCodeEnum CMediaControllerEntity::ReStartCamera(int nCamera)
 		Sleep(2000);
 			
 		ErrorCodeEnum Error = Error_Succeed;
-		Error = capture_create(&conf, m_capture,nCamera);
+		Error = capture_create(&conf, m_capture, nCamera);
 		if (Error == Error_Succeed) 
 		{
 			Error = capture_start(m_capture,nCamera);

+ 0 - 5
Module/mod_mediacontroller/mod_mediacontroller.h

@@ -127,10 +127,6 @@ public:
 
 public:
 	bool m_bSendCameraError;
-	int m_iEnvEmptyTimes;
-	int m_iOptEmptyTimes;
-	int m_nEnvCameraRestartNum;
-	int m_nOptCameraRestartNum;
 	DeviceTypeEnum m_eDeviceType;
 	bool m_bStartCamera;
 	capture_config_t conf;
@@ -154,7 +150,6 @@ private:
 	bool m_bIsRemoteRecord;					
 	bool m_bConnectedAssist;
 	int m_iCamTimeout;
-	bool m_bNeedPost;
 
 #ifdef RVC_OS_WIN
 	IAudioRender* m_pAudioRenderObj;