|
@@ -23,6 +23,12 @@
|
|
|
#define MAX_PATH 260
|
|
|
#endif
|
|
|
|
|
|
+
|
|
|
+#ifndef RVC_CAMERA_OFF_TIMER
|
|
|
+#define RVC_CAMERA_OFF_TIMER 3
|
|
|
+#endif // !RVC_CAMERA_OFF_TIMER
|
|
|
+
|
|
|
+
|
|
|
#ifdef RVC_OS_WIN
|
|
|
static void __audio_render_log(void* user_data, const char* fmt, va_list arg)
|
|
|
{
|
|
@@ -82,9 +88,8 @@ 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_bSendCameraError(false),
|
|
|
- m_nEnvCameraRestartNum(0), m_nOptCameraRestartNum(0), m_nCameraCount(2), m_pHMClient(NULL),m_pMediaControllerChannel(NULL),
|
|
|
- m_bIsRemoteRecord(false), m_bHasStartSpeakerRender(false), m_bConnectedAssist(false)
|
|
|
+ m_lCaptureEnvOptCount(0), m_lCaptureOptCount(0), m_iEnvEmptyTimes(0), m_iOptEmptyTimes(0), m_nEnvCameraRestartNum(0), m_nOptCameraRestartNum(0),
|
|
|
+ m_nCameraCount(2), m_pHMClient(NULL),m_pMediaControllerChannel(NULL),m_bIsRemoteRecord(false), m_bHasStartSpeakerRender(false), m_bConnectedAssist(false)
|
|
|
{
|
|
|
#ifdef RVC_OS_LINUX
|
|
|
m_env_mutex = PTHREAD_MUTEX_INITIALIZER;
|
|
@@ -101,6 +106,7 @@ CMediaControllerEntity::CMediaControllerEntity(): m_capture(NULL), m_salesaudio_
|
|
|
m_interValTime = RVC_CAM_INTERVAL_TIME;
|
|
|
m_bOnBusiness = false;
|
|
|
m_bJsOccupyCamera = false;
|
|
|
+ m_bCameraOffTimerOn = false;
|
|
|
}
|
|
|
|
|
|
void CMediaControllerEntity::OnSysVarEvent(const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName)
|
|
@@ -118,8 +124,13 @@ void CMediaControllerEntity::OnSysVarEvent(const char *pszKey, const char *pszVa
|
|
|
}
|
|
|
else {
|
|
|
if (strState.GetLength() > 0 && strState[0] == 'M') {
|
|
|
- if (Error_Succeed != GetFunction()->KillTimer(3)) {
|
|
|
- LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "Call State is Connecting, and UIState is M, KillTimer 3 failed.");
|
|
|
+ if (m_bCameraOffTimerOn) {
|
|
|
+ if (Error_Succeed != GetFunction()->KillTimer(RVC_CAMERA_OFF_TIMER)) {
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "Call State is Connecting, and UIState is M, kill camera off timer failed.");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ m_bCameraOffTimerOn = false;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -127,8 +138,13 @@ void CMediaControllerEntity::OnSysVarEvent(const char *pszKey, const char *pszVa
|
|
|
else if ('O' == pszValue[0]){
|
|
|
if (strState.GetLength() > 0 && strState[0] == 'M') {
|
|
|
if (m_bStartCamera) {
|
|
|
- if (Error_Succeed != GetFunction()->SetTimer(3, this, m_iDelayTime * 1000)) {
|
|
|
- LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_SETTIMER_ERROR, "Call State is OffLine, and UIState is M, SetTimer 3 failed.");
|
|
|
+ if (false == m_bCameraOffTimerOn) {
|
|
|
+ if (Error_Succeed != GetFunction()->SetTimer(RVC_CAMERA_OFF_TIMER, this, m_iDelayTime * 1000)) {
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_SETTIMER_ERROR, "Call State is OffLine, and UIState is M, set camera off timer failed.");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ m_bCameraOffTimerOn = true;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -331,7 +347,7 @@ DeviceTypeEnum CMediaControllerEntity::RvcGetDeviceType()
|
|
|
if (_stricmp(stStaticinfo.strMachineType, "RVC.Stand1SPlus") == 0) {
|
|
|
eType = eStand1SPlusType;
|
|
|
}
|
|
|
- else if (stricmp(stStaticinfo.strMachineType, "RVC.CardStore") == 0 || stricmp(stStaticinfo.strMachineType, "RVC.CardPrinter") == 0) {
|
|
|
+ else if (_stricmp(stStaticinfo.strMachineType, "RVC.CardStore") == 0 || _stricmp(stStaticinfo.strMachineType, "RVC.CardPrinter") == 0) {
|
|
|
eType = eCardStore;
|
|
|
}
|
|
|
else {
|
|
@@ -432,6 +448,7 @@ ErrorCodeEnum CMediaControllerEntity::GetMediaConfig()
|
|
|
return Error;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
ErrorCodeEnum CMediaControllerEntity::SetEnvCameraOnSysVar(const CSimpleStringA strOnState)
|
|
|
{
|
|
|
ErrorCodeEnum Error = Error_Succeed;
|
|
@@ -521,7 +538,7 @@ void CMediaControllerEntity::OnTimeout(DWORD dwTimerID)
|
|
|
GetFunction()->KillTimer(2);
|
|
|
}
|
|
|
}
|
|
|
- else if (3 == dwTimerID) {
|
|
|
+ else if (RVC_CAMERA_OFF_TIMER == dwTimerID) {
|
|
|
if (m_bStartCamera) {
|
|
|
CSimpleStringA strCallState("");
|
|
|
if (Error_Succeed == GetFunction()->GetSysVar(SYSVAR_CALLSTATE, strCallState)) {
|
|
@@ -534,8 +551,13 @@ void CMediaControllerEntity::OnTimeout(DWORD dwTimerID)
|
|
|
m_capture = NULL;
|
|
|
}
|
|
|
m_bStartCamera = false;
|
|
|
- if (Error_Succeed != GetFunction()->KillTimer(3)) {
|
|
|
- LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "Stop Camera, KillTimer 3 failed.");
|
|
|
+ if (m_bCameraOffTimerOn) {
|
|
|
+ if (Error_Succeed != GetFunction()->KillTimer(RVC_CAMERA_OFF_TIMER)) {
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "stop camera, kill camera off timer failed.");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ m_bCameraOffTimerOn = false;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -937,6 +959,15 @@ ErrorCodeEnum CMediaControllerEntity::StopAllCameras()
|
|
|
}
|
|
|
m_bStartCamera = false;
|
|
|
|
|
|
+ if (m_bCameraOffTimerOn) {
|
|
|
+ if (Error_Succeed != GetFunction()->KillTimer(RVC_CAMERA_OFF_TIMER)) {
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "stop camera, kill camera off timer failed.");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ m_bCameraOffTimerOn = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return Error_Succeed;
|
|
|
}
|
|
|
|
|
@@ -1224,6 +1255,7 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
|
|
|
#endif // RVC_OS_WIN
|
|
|
}
|
|
|
break;
|
|
|
+
|
|
|
case MOD_EVENT_SNAPSHOT_START_CAPTURE_ENV:
|
|
|
{
|
|
|
#ifdef RVC_OS_WIN
|
|
@@ -1238,6 +1270,7 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
|
|
|
#endif // RVC_OS_WIN
|
|
|
}
|
|
|
break;
|
|
|
+
|
|
|
case MOD_EVENT_SNAPSHOT_START_CAPTURE_OPT:
|
|
|
{
|
|
|
#ifdef RVC_OS_WIN
|
|
@@ -1252,6 +1285,7 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
|
|
|
#endif // RVC_OS_WIN
|
|
|
}
|
|
|
break;
|
|
|
+
|
|
|
case LOG_EVT_MOD_ASSISCHAN_STARTED_SUCCESS:
|
|
|
{
|
|
|
Sleep(800);
|
|
@@ -1282,8 +1316,13 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
- if (Error_Succeed != GetFunction()->KillTimer(3)) {
|
|
|
- LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "begin handle business, and camera is already on, KillTimer 3 failed.");
|
|
|
+ if (m_bCameraOffTimerOn) {
|
|
|
+ if (Error_Succeed != GetFunction()->KillTimer(RVC_CAMERA_OFF_TIMER)) {
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_KILLTIMER_ERROR, "begin handle business, and camera is already on, kill camera off timer failed.");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ m_bCameraOffTimerOn = false;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1292,8 +1331,13 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
|
|
|
|
|
|
case LOG_EVT_END_HANDLE_BUSINESS:
|
|
|
if (m_bStartCamera) {
|
|
|
- if (Error_Succeed != GetFunction()->SetTimer(3, this, m_iDelayTime * 1000)) {
|
|
|
- LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_SETTIMER_ERROR, "end handle business, SetTimer 3 failed.");
|
|
|
+ if (false == m_bCameraOffTimerOn) {
|
|
|
+ if (Error_Succeed != GetFunction()->SetTimer(RVC_CAMERA_OFF_TIMER, this, m_iDelayTime * 1000)) {
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_SETTIMER_ERROR, "end handle business, set camera off timer failed.");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ m_bCameraOffTimerOn = true;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
@@ -1361,6 +1405,7 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
+
|
|
|
default:
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("unknown event.");
|
|
|
break;
|
|
@@ -1780,7 +1825,7 @@ ErrorCodeEnum CMediaControllerEntity::GetAudioDevices(int& iAudioCount, CSimpleS
|
|
|
else {
|
|
|
iAudioCount = capture_get_audio_device_list(1, strAudioDev);
|
|
|
}
|
|
|
- #else
|
|
|
+#else
|
|
|
if (NULL != m_pAudioCap) {
|
|
|
strAudioDev = "[";
|
|
|
if (1 == iAudioType) {
|
|
@@ -1814,7 +1859,7 @@ ErrorCodeEnum CMediaControllerEntity::GetAudioDevices(int& iAudioCount, CSimpleS
|
|
|
|
|
|
Error = Error_Succeed;
|
|
|
}
|
|
|
- #endif
|
|
|
+#endif
|
|
|
|
|
|
return Error;
|
|
|
}
|