|
@@ -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);
|