| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345 |
- #include "stdafx.h"
- #include "y2k_time.h"
- #include "capture.h"
- #include "Event.h"
- #include "iaudiorenderinterface.h"
- #include "EventCode.h"
- #include "../mod_snapshot/Event.h"
- #include "mod_mediacontroller.h"
- #include "../mod_interactivecontrol/Event.h"
- #include "../mod_recorder/Event.h"
- #include "../mod_ScannerSet/ScannerSet_client_g.h"
- #include "../mod_ScannerSet/ScannerSet_def_g.h"
- using namespace ScannerSet;
- static void __audio_render_log(void* user_data, const char* fmt, va_list arg)
- {
- int n = _vscprintf(fmt, arg);
- if (n >= MAX_PATH) {
- char* buf = (char*)malloc((size_t)(n + 1));
- _vsnprintf(buf, n + 1, fmt, arg);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s", buf);
- free(buf);
- }
- else{
- char strlog[MAX_PATH] = {0};
- _vsnprintf(strlog, MAX_PATH, fmt, arg);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s", strlog);
- }
- }
- 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("$"), m_bCustomerwareBegin(false),
- m_pAudioRenderObj(NULL), m_bRecordPCM(false), m_bIsRemoteRecord(false), m_bHasStartSpeakerRender(false), m_strAudioPriority(""), m_bDeskToPadFlag(true)
- {
- m_bNeedPost = false;
- m_VideoCapType = 1;
- m_bSpeakerCap = true;
- m_strEnvCam = "$";
- m_strOptCam = "$";
- m_strHandfreeIn = "$";
- m_strHandfreeOut = "$";
- m_pMediaControllerChannel = NULL;
- m_bConnectedAssist = FALSE;
- m_iCamTimeout = CAMERA_TIMEOUT;
- m_iCamOnMode = 0;
- 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)
- {
- if(pszValue[0] == CALLTYPE_NORMAL)
- {
- m_nSysCallType = 0;
- }
- else if(pszValue[0] == CALLTYPE_MOBILE)
- {
- m_nSysCallType = 1;
- }
- else
- {
- m_nSysCallType = -1;
- }
- }
- else if (_stricmp(pszKey, SYSVAR_CALLSTATE) == 0)
- {
- CSimpleStringA strState;
- GetFunction()->GetSysVar("UIState", strState);
- if ('C' == pszValue[0]) {
- if (1 == m_iCamOnMode) {
- if (!m_bStartCamera) {
- StartCameraAndSetSysVar();
- if (m_bStartCamera) {
- OnCameraStarted();
- }
- }
- 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.");
- }
- }
- }
- }
- }
- else if ('O' == pszValue[0]){
- if (1 == m_iCamOnMode) {
- 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.");
- }
- }
- }
- }
- }
- }
- }
- void CMediaControllerEntity::OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext)
- {
- m_eDeviceType = eStand2sType;
- g_eDeviceType = eStand2sType;
- //is Pad Version
- m_eDeviceType = RvcGetDeviceType();
- g_eDeviceType = m_eDeviceType;
- CSmartPointer<IEntityFunction> Func = GetFunction();
- CSimpleStringA strValue;
- Func->RegistSysVarEvent(SYSVAR_CALLTYPE, this);
- Func->GetSysVar(SYSVAR_CALLTYPE, strValue);
- if (strValue[0] == CALLTYPE_NORMAL) {
- m_nSysCallType = 0;
- }
- else if (strValue[0] == CALLTYPE_MOBILE) {
- m_nSysCallType = 1;
- }
- else {
- assert(0);
- }
- if (GetFunction()->RegistSysVarEvent("SessionID", this) != Error_Succeed){
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("register sysvar %s failed!", "SessionID");
- }
- if (GetFunction()->RegistSysVarEvent(SYSVAR_CALLSTATE, this) != Error_Succeed) {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("register sysvar %s failed!", SYSVAR_CALLSTATE);
- }
- int i = 0;
- m_arrListener.Init(16);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, MOD_EVENT_SNAPSHOT_START_CAPTURE_ENV);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, MOD_EVENT_SNAPSHOT_START_CAPTURE_OPT);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, MOD_EVENT_SNAPSHOT_START_CAPTURE_ENVOPT);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_MOD_ASSISCHAN_STARTED_SUCCESS,NULL,false);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_Middle, Error_IgnoreAll, EVENT_MOD_CUSTOMERAWARE_BEGIN, NULL, false);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_Middle, Error_IgnoreAll, EVENT_MOD_CUSTOMERAWARE_END, NULL, false);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_RECORDFAILED,NULL,false);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_UI_RECORDFAILED,NULL,false);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_UI_STARTREMOTERECORD,NULL,false);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_UI_STOPREMOTERECORD,NULL,false);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_UI_STARTRECORD,NULL,false);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_UI_STOPRECORD,NULL,false);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_UI_STARTRECORDPREVIEW,NULL,false);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_MOD_SALESRECORDER_STARTED_SUCCESS, NULL, false);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_Middle, Error_IgnoreAll, LOG_EVT_BEGIN_HANDLE_BUSINESS, NULL, false);
- GetFunction()->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_Middle, Error_IgnoreAll, LOG_EVT_END_HANDLE_BUSINESS, NULL, false);
- pTransactionContext->SendAnswer(Error_Succeed);
- }
- void CMediaControllerEntity::OnStarted()
- {
- m_bStartCamera = FALSE;
- m_bExternControlCam = FALSE;
- m_nSysCallType =0;
- m_xIdlePre = m_xKernelPre = m_xUserPre = 0;
- ErrorCodeEnum Error = Error_Succeed;
- //MessageBoxA(0,0,0,0);
- m_pMediaControllerChannel = new ChannelMediaControllerClient(this);
- if (Error_Succeed == ConnectAssistChannel()) {
- m_bConnectedAssist = TRUE;
- }
- m_pSelfcheckClient = new SelfChekerClient(this);
- Error = m_pSelfcheckClient->Connect();
- if (Error != Error_Succeed){
- m_pSelfcheckClient->SafeDelete();
- m_pSelfcheckClient = NULL;
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SelfcheckClient connect fail!");
- }
- if (Error_Succeed == GetMediaConfig()) {
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get video capture frame type (%d) success.", m_VideoCapType);
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("m_strEnvCam = %s, m_strOptCam = %s.", m_strEnvCam.GetData(), m_strOptCam.GetData());
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("cam timeout time is %d.", m_iCamTimeout);
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CamOnMode is %d, and max delay time is %d.", m_iCamOnMode, m_iDelayTime);
- }
- if (Error_Succeed == GetSalesRecordAudioParam()) {
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get sales record audio param success, record local PCM flag is %s.", m_bRecordPCM ? "true" : "false");
- }
- audiorender_callback_t t_callback = { 0 };
- t_callback.debug = &__audio_render_log;
- t_callback.user_data = this;
- m_pAudioRenderObj = CreateIAudioRenderObj(&t_callback);
- if (NULL == m_pAudioRenderObj){
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create audio render failed.");
- }
- memset(&conf,0,sizeof(capture_config_t));
- memset(&m_sales_audio_conf, 0, sizeof(rvc_audio_capture_config_t));
- Error = (ErrorCodeEnum)capture_lib_init(&m_iAudioInCount, &m_iAudioOutCount, m_strAudioIn, m_strAudioOut);
- if (Error == Error_Succeed)
- {
- Error = LoadConfig(&conf);
- conf.video_cap_type = m_VideoCapType; //video capture type 0 RGB24, 1 YUY2
- if (Error!=Error_Succeed)
- {
- if((Error == Error_OptCamera)||(Error == Error_EnvCamera))
- {
- if (Error == Error_EnvCamera)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Load EnvCamera Config failed!");
- SetCameraSysVar(CAMERA_ENV_ERROR);
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_ENV_ERROR");
- m_nCameraErrorCode = Error_EnvCamera;
- GetFunction()->SetUserDefineState(USER_MEDIA_ENVERRROR);
- }
- else if (Error == Error_OptCamera)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Load OptCamera Config failed!");
- SetCameraSysVar(CAMERA_OPT_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_OPT_ERROR");
- m_nCameraErrorCode = Error_OptCamera;
- GetFunction()->SetUserDefineState(USER_MEDIA_OPTERROR);
- }
- }
- else
- {
- if (Error == Error_AllCamera)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Load all camera Config failed!");
- SetCameraSysVar(CAMERA_BOTH_ERROR);
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_BOTH_ERROR");
- m_nCameraErrorCode = Error_AllCamera;
- GetFunction()->SetUserDefineState(USER_MEDIA_ALLERROR);
- }
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Load Config failed!");
- }
- }
- }
- else{
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("capture_lib_init failed!");
- }
- //PAD版获取客户感知状态
- CSimpleStringA strCustomerAware;
- if (Error != Error_AllCamera)
- {
- CSmartPointer<IEntityFunction> Func = GetFunction();
- if (Func->RegistSysVarEvent("CustomerHandle", this) != Error_Succeed) {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("register sys var %s failed!", "CustomerHandle");
- }
- else{
- Func->GetSysVar("CustomerHandle", strCustomerAware);
- }
- }
- //启动摄像头
- if ((Error!=Error_AllCamera)&&(strCustomerAware.GetLength()>0)&&(strCustomerAware[0] != 'N')&&(1 != m_iCamOnMode))
- {
- Error = StartCamera();
- if (Error == Error_Succeed)
- {
- m_bStartCamera = TRUE;
- SetCameraSysVar(CAMERA_NO_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_NO_ERROR");
- m_nCameraErrorCode = Error_Succeed;
- GetFunction()->SetUserDefineState(USER_MEDIA_IDLE);
- }
- else
- {
- if((Error == Error_EnvCamera)||(Error == Error_OptCamera))
- {
- m_bStartCamera = TRUE;
- if (Error == Error_EnvCamera)
- {
- SetCameraSysVar(CAMERA_ENV_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_ENV_ERROR");
- m_nCameraErrorCode = Error_EnvCamera;
- GetFunction()->SetUserDefineState(USER_MEDIA_ENVERRROR);
- Error = Error_Succeed;
- }
- else if (Error == Error_OptCamera)
- {
- SetCameraSysVar(CAMERA_OPT_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("StartCamera = Error_OptCamera");
- m_nCameraErrorCode = Error_OptCamera;
- GetFunction()->SetUserDefineState(USER_MEDIA_OPTERROR);
- Error = Error_Succeed;
- }
- }
- else if(Error == Error_AllCamera)
- {
- SetCameraSysVar(CAMERA_BOTH_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_BOTH_ERROR");
- m_nCameraErrorCode = Error_AllCamera;
- m_bStartCamera = FALSE;
- GetFunction()->SetUserDefineState(USER_MEDIA_ALLERROR);
- }
- else
- {
- SetCameraSysVar(Error);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to Other Error");
- m_nCameraErrorCode = Error;
- m_bStartCamera = FALSE;
- }
- }
- if (m_bStartCamera) {
- CSimpleStringA strSessionId;
- CSmartPointer<IEntityFunction> Func = GetFunction();
- Func->GetSysVar("SessionID", strSessionId);
- LogEvent(Severity_Middle, EVENT_MOD_BEGIN_RECORD, strSessionId);
- OnCameraStarted();
- }
- }
- LogEvent(Severity_Middle, LOG_EVT_MOD_MEDIACONTROLLER_STARTED_SUCCESS, "mediacontroller entity started successfully.");
- }
- DeviceTypeEnum CMediaControllerEntity::RvcGetDeviceType()
- {
- DeviceTypeEnum eType = eStand2sType;
- CSmartPointer<IEntityFunction> spFunction = GetFunction();
- CSystemStaticInfo stStaticinfo;
- spFunction->GetSystemStaticInfo(stStaticinfo);
- if (_stricmp(stStaticinfo.strMachineType, "RVC.Stand1SPlus") == 0) {
- eType = eStand1SPlusType;
- }
- else if (_stricmp(stStaticinfo.strMachineType, "RVC.PAD") == 0) {
- if (_stricmp(stStaticinfo.strSite, "CMB.FLB") == 0) {
- eType = eMobilePadType;
- }
- }
- else if (_stricmp(stStaticinfo.strMachineType, "RPM.Stand1S") == 0) {
- eType = eRpm1sType;
- }
- else if (stricmp(stStaticinfo.strMachineType, "RVC.CardStore") == 0 || stricmp(stStaticinfo.strMachineType, "RVC.CardPrinter") == 0) {
- eType = eCardStore;
- }
- else {
- eType = eStand2sType;
- }
- if (eType >= 0 && eType < sizeof(Device_Type_Table) / sizeof(char*)) {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("device type is %s.", Device_Type_Table[eType]);
- }
- return eType;
- }
- DeviceTypeEnum CMediaControllerEntity::RvcDeviceType()
- {
- return m_eDeviceType;
- }
- void CMediaControllerEntity::SetCameraSysVar(int n)
- {
- if (n==0){
- SetCameraSysVar(CAMERA_OPT_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_OPT_ERROR");
- }
- else if (n==1){
- SetCameraSysVar(CAMERA_ENV_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_ENV_ERROR");
- }
- else if (n==-1){
- SetCameraSysVar(CAMERA_BOTH_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_BOTH_ERROR");
- }
- else if (n==3){
- SetCameraSysVar(CAMERA_NO_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_NO_ERROR");
- }
- }
- ErrorCodeEnum CMediaControllerEntity::GetSalesRecordAudioParam()
- {
- CSmartPointer<IConfigInfo> spConfig;
- SpIniMappingTable table;
- int iPlayType = 0;
- ErrorCodeEnum Error = GetFunction()->OpenConfig(Config_CenterSetting, spConfig);
- if (Error == Error_Succeed){
- table.AddEntryBoolean("SalesRecorder", "IsRecordPCM", m_bRecordPCM, false);
- table.AddEntryInt("LocalMediaPlay", "PlayType", iPlayType, 0);
- Error= table.Load(spConfig);
- }
- if (0 != iPlayType){
- m_bSpeakerCap = false;
- }
- return Error;
- }
- void CMediaControllerEntity::UpdateMediaConfig()
- {
- if (m_strEnvCam.GetLength() > 1) {
- conf.strVideoEnv = m_strEnvCam;
- LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_AUTO_MODIFY_ENV, CSimpleStringA::Format("use center setting env camera [%s].", m_strEnvCam.GetData()).GetData());
- }
- if (m_strOptCam.GetLength() > 1) {
- conf.strVideoOpt = m_strOptCam;
- LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_AUTO_MODIFY_OPT, CSimpleStringA::Format("use center setting opt camera [%s].", m_strOptCam.GetData()).GetData());
- }
- if (m_strHandfreeIn.GetLength() > 1) {
- conf.strAudioIn = m_strHandfreeIn;
- }
- if (m_strHandfreeOut.GetLength() > 1) {
- conf.strAudioOut = m_strHandfreeOut;
- }
- }
- ErrorCodeEnum CMediaControllerEntity::AutoCorrectAudioConfig()
- {
- ErrorCodeEnum Error = Error_Param;
- if (eStand2sType != m_eDeviceType) {
- if (2 == m_iAudioInCount && 2 == m_iAudioOutCount) {
- if (NULL == strstr(m_strAudioIn.GetData(), conf.strAudioIn.GetData()) || NULL == strstr(m_strAudioOut.GetData(), conf.strAudioOut.GetData())) {
- conf.strAudioIn = m_strAudioIn;
- conf.strAudioOut = m_strAudioOut;
- LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_AUDIO_CONFIG_AUTO_CORRECT, CSimpleStringA::Format("auto correct audio in(%s), audio out(%s).", conf.strAudioIn.GetData(), conf.strAudioOut.GetData()).GetData());
- }
- Error = Error_Succeed;
- }
- }
- return Error;
- }
- ErrorCodeEnum CMediaControllerEntity::GetMediaConfig()
- {
- ErrorCodeEnum Error = Error_Succeed;
- CSmartPointer<IConfigInfo> spConfig;
- SpIniMappingTable table;
- CSimpleStringA strEnv;
- CSimpleStringA strOpt;
- CSimpleStringA strHandfreeIn;
- CSimpleStringA strHandfreeOut;
- int itimeout = CAMERA_TIMEOUT;
- int iAudioLibType = 0;
- int iCamOnMode = 0;
- int iDelayTime = RVC_MAX_DELAY_TIME;
- int iRecordMode = 0;
- Error = GetFunction()->OpenConfig(Config_CenterSetting, spConfig);
- if (Error == Error_Succeed)
- {
- table.AddEntryString("MediaController", "EnvCam", strEnv, "$");
- table.AddEntryString("MediaController", "OptCam", strOpt, "$");
- table.AddEntryInt("MediaController", "CamTimeOut", itimeout, CAMERA_TIMEOUT);
- table.AddEntryString("SipPhone", "HandfreeIn", strHandfreeIn, "$");
- table.AddEntryString("SipPhone", "HandfreeOut", strHandfreeOut, "$");
- table.AddEntryInt("MediaController", "AudioLibType", iAudioLibType, 0);
- table.AddEntryInt("MediaController", "CamOnMode", iCamOnMode, 0);
- table.AddEntryInt("MediaController", "MaxDelayTime", iDelayTime, RVC_MAX_DELAY_TIME);
- table.AddEntryInt("InteractiveControl", "RecordMode", iRecordMode, 0);
- Error= table.Load(spConfig);
- }
- if (Error_Succeed != Error){
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get entity config from config failed!");
- }
- else{
- if (strEnv.GetLength() > 1){
- m_strEnvCam = strEnv;
- }
-
- if (strOpt.GetLength() > 1){
- m_strOptCam = strOpt;
- }
- if (itimeout >= CAMERA_MIN_TIMEOUT && itimeout <= CAMERA_TIMEOUT) {
- m_iCamTimeout = itimeout;
- }
- if (strHandfreeIn.GetLength() > 1) {
- m_strHandfreeIn = strHandfreeIn;
- }
- if (strHandfreeOut.GetLength() > 1) {
- m_strHandfreeOut = strHandfreeOut;
- }
- if (1 == iCamOnMode && 1 == iRecordMode) {
- m_iCamOnMode = 1;
- }
- if (iDelayTime > 0) {
- m_iDelayTime = iDelayTime;
- }
- }
- return Error;
- }
- ErrorCodeEnum CMediaControllerEntity::SetEnvCameraOnSysVar(const CSimpleStringA strOnState)
- {
- ErrorCodeEnum Error = Error_Succeed;
- CSmartPointer<IEntityFunction> spFunction = this->GetFunction();
- Error = spFunction->SetSysVar(SYSVAR_ENVCAMERAON, strOnState.GetData());
- return Error;
- }
- ErrorCodeEnum CMediaControllerEntity::SetCameraSysVar(const CSimpleStringA &newVal)
- {
- CSmartPointer<IEntityFunction> spFunction = this->GetFunction();
-
- CSimpleStringA val = newVal;
- if('B' == val[0]){
- LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_MEDIACONTROLLER_CONFIG_ALLERROR, "all config cameras error");
- }
- if (eStand2sType == m_eDeviceType)
- {
- return spFunction->SetSysVar(SYSVAR_CAMERASTATE, (LPCTSTR)newVal);
- }
- switch (val[0])
- {
- case 'E':
- {
- if (!strstr((LPCTSTR)strFrontCam,";"))
- {
- val = val.Append((LPCTSTR)strFrontCam);
- }
- else
- {
- val = val.Append((LPCTSTR)strFrontCam.SubString(0,strFrontCam.IndexOf(";")));
- }
- }
- break;
- case 'O':
- if (!strstr((LPCTSTR)strRearCam,";"))
- {
- val = val.Append((LPCTSTR)strRearCam);
- }
- else
- {
- val = val.Append((LPCTSTR)strRearCam.SubString(0,strRearCam.IndexOf(";")));
- }
- break;
- case 'B':
- val = val.Append("内置前、后");
- break;
- case 'N':
- case 'I':
- default:
- break;
- }
-
- return spFunction->SetSysVar(SYSVAR_CAMERASTATE, (LPCTSTR)val);
- }
- void CMediaControllerEntity::OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
- {
- CSmartPointer<IEntityFunction> spFunction = GetFunction();
- for (int i = 0; i < m_arrListener.GetCount(); ++i) {
- spFunction->UnsubscribeLog(m_arrListener[i]);
- }
- spFunction->UnregistSysVarEvent(SYSVAR_CALLTYPE);
- spFunction->UnregistSysVarEvent(SYSVAR_CALLSTATE);
- if (m_capture) {
- capture_stop(m_capture);
- capture_destroy(m_capture);
- m_capture = NULL;
- }
- if (m_salesaudio_capture){
- salesrecord_audio_capture_stop(m_salesaudio_capture);
- salesaudio_capture_destroy(m_salesaudio_capture);
- m_salesaudio_capture = NULL;
- }
- if (NULL != m_pAudioRenderObj){
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("destroy audio render obj,and it's addr is 0x%08x.", m_pAudioRenderObj);
- DestroyIAudioRenderObj(m_pAudioRenderObj);
- }
- capture_lib_term();
- pTransactionContext->SendAnswer(Error_Succeed);
- }
- void CMediaControllerEntity::OnTimeout(DWORD dwTimerID)
- {
- if (dwTimerID == 1) {
- if (!m_capture) {
- return;
- }
- if (!m_bStartCamera) {
- return;
- }
- OnTimeCameraStatusCheck();
- }
- else if (2 == dwTimerID) {
- if (FALSE == m_bConnectedAssist) {
- if (Error_Succeed == ConnectAssistChannel()) {
- m_bConnectedAssist = TRUE;
- }
- }
- if (TRUE == m_bConnectedAssist) {
- GetFunction()->KillTimer(2);
- }
- }
- else if (3 == dwTimerID) {
- if (m_bStartCamera) {
- CSimpleStringA strCallState("");
- if (Error_Succeed == GetFunction()->GetSysVar(SYSVAR_CALLSTATE, strCallState)) {
- if (strCallState.Compare("O") == 0) {
- OnCameraStopped();
- if (m_capture) {
- GetFunction()->KillTimer(1);
- capture_stop(m_capture);
- capture_destroy(m_capture);
- 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.");
- }
- }
- }
- }
- }
- }
- void CMediaControllerEntity::OnTimeCameraStatusCheck()
- {
- int env_n = -1, opt_n = -1;
- unsigned int nLastEnvTime = 0, nLastOptTime = 0;
- bool bEnvTimeout = false;
- bool bOptTimeout = false;
- BOOL bIsPadType = FALSE;
- if (eMobilePadType == m_eDeviceType){
- bIsPadType = TRUE;
- }
- capture_detect_camera_bug(m_capture, &env_n, &opt_n, bIsPadType);
- capture_get_last_frametime(m_capture, &nLastEnvTime, &nLastOptTime, bIsPadType);
- 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);
- }
- }
- else if (env_n == -1){
- m_iEnvEmptyTimes = CAMERA_BUG_THRESHOLD;
- }
- else {
- if (m_iEnvEmptyTimes == CAMERA_BUG_THRESHOLD){
- }
- m_iEnvEmptyTimes = 0;
- }
- //env图像是否超时
- if(nLastEnvTime > 0)
- {
- if(((y2k_time_now()-nLastEnvTime) > m_iCamTimeout)&&!bEnvTimeout)
- {
- bEnvTimeout = true;
- }
- else if (((y2k_time_now()-nLastEnvTime) < m_iCamTimeout)&&bEnvTimeout)
- {
- bEnvTimeout = false;
- }
- }
- //env是否30S没有图像或者图像20秒没有更新
- if(((m_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!");
- char strInfo[MAX_PATH*2] = {0};
- if (NULL != m_capture && NULL != m_capture->env_video) {
- _snprintf(strInfo, MAX_PATH * 2, "%s and cpu usage is %f, and current time = %u, env last capture time = %u, video queue LastEnvTime = %u.", strMessage, GetSystemCpuUsage(), y2k_time_now(), m_capture->env_video->ulastcaptime, nLastEnvTime);
- }
- else {
- _snprintf(strInfo, MAX_PATH * 2, "%s and cpu usage is %f.", strMessage, GetSystemCpuUsage());
- }
-
- LogWarn(Severity_Middle, Error_Hardware, ERROR_MOD_MEDIACONTROLLER_ENVCAMERA_BUG, strInfo);
- if (eStand2sType != m_eDeviceType){
- if (m_bNeedPost){
- LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_MEDIACONTROLLER_CONFIG_ALLERROR, "device type is pad, camera error for can't get video from it.");
- m_bNeedPost = false;
- }
- }
- if ((ePadtype == m_eDeviceType)||(eMobilePadType == m_eDeviceType)||(eDesk2SType == m_eDeviceType)||(eDesk1SType == m_eDeviceType)||(eDesk2SIntegratedType == 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;
- }
- }
- }
- else if((m_iEnvEmptyTimes != CAMERA_BUG_THRESHOLD)&&!bEnvTimeout&&((m_nCameraErrorCode == Error_EnvCamera)||(m_nCameraErrorCode == Error_AllCamera)))
- {
- if ((ePadtype == m_eDeviceType)||(eMobilePadType == m_eDeviceType)||(eDesk2SType == m_eDeviceType)||(eDesk1SType == m_eDeviceType)||(eDesk2SIntegratedType == 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");
- }
- }
- }
- //opt是否没有图像
- if (eStand2sType == m_eDeviceType)
- {
- if (opt_n == 0)
- {
- if (m_iOptEmptyTimes < CAMERA_BUG_THRESHOLD)
- {
- m_iOptEmptyTimes++;
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get opt camera picture fail, Times=%d",m_iOptEmptyTimes);
- }
- }
- else if (opt_n == -1)
- {
- m_iOptEmptyTimes = CAMERA_BUG_THRESHOLD;
- }
- else
- {
- if (m_iOptEmptyTimes == CAMERA_BUG_THRESHOLD)
- {
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("opt camera get right!");
- }
- m_iOptEmptyTimes = 0;
- }
- }
- //opt图像是否超时
- if((nLastOptTime > 0)&&(eStand2sType == m_eDeviceType))
- {
- if(((y2k_time_now()-nLastOptTime) > m_iCamTimeout)&&!bOptTimeout)
- {
- 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");
- }
- }
- //opt是否100S没有图像或者图像20秒没有更新
- if(((m_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!");
- char strInfo[MAX_PATH*2] = {0};
- if (NULL != m_capture && NULL != m_capture->opt_video) {
- _snprintf(strInfo, MAX_PATH * 2, "%s and cpu usage is %f, and current time = %u, opt last capture time = %u, video queue LastOptTime = %u.", strMessage, GetSystemCpuUsage(), y2k_time_now(), m_capture->opt_video->ulastcaptime, nLastOptTime);
- }
- else {
- _snprintf(strInfo, MAX_PATH * 2, "%s and cpu usage is %f.", strMessage, GetSystemCpuUsage());
- }
-
- LogWarn(Severity_Middle, Error_Hardware, ERROR_MOD_MEDIACONTROLLER_OPECAMERA_BUG, strInfo);
- 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;
- }
- }
- else if((m_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");
- }
- }
- //重启摄像头
- if((m_nCameraErrorCode == Error_EnvCamera)&&(m_nEnvCameraRestartNum<CAMERA_RESTARTNUM))
- {
- if (ReStartCamera(ENVCAMERA) != Error_Succeed){
- m_nEnvCameraRestartNum++;
- }
- else
- {
- m_nEnvCameraRestartNum = 0;
- m_nCameraErrorCode = Error_Succeed;
- ChangeSysvar(m_nCameraErrorCode);
- m_iEnvEmptyTimes = 0;
- bEnvTimeout = false;
- //重置上次取图像时间,防止出现重启摄像头5s内取不到图像不断重启摄像头问题
- nLastEnvTime = y2k_time_now();
- }
- }
- else if((m_nCameraErrorCode == Error_OptCamera)&&(m_nOptCameraRestartNum<CAMERA_RESTARTNUM)&&(eStand2sType == m_eDeviceType))
- {
- if (ReStartCamera(OPTCAMERA) != Error_Succeed) {
- m_nOptCameraRestartNum++;
- }
- else
- {
- m_nOptCameraRestartNum = 0;
- m_nCameraErrorCode = Error_Succeed;
- ChangeSysvar(m_nCameraErrorCode);
- m_iOptEmptyTimes = 0;
- bOptTimeout = false;
- //重置上次取图像时间,防止出现重启摄像头5s内取不到图像不断重启摄像头问题
- nLastOptTime = y2k_time_now();
- }
- }
- else if (m_nCameraErrorCode == Error_AllCamera)
- {
- if (m_nEnvCameraRestartNum<CAMERA_RESTARTNUM)
- {
- if (ReStartCamera(ENVCAMERA) != Error_Succeed)
- m_nEnvCameraRestartNum++;
- else
- {
- m_nEnvCameraRestartNum = 0;
- m_nCameraErrorCode = Error_OptCamera;
- ChangeSysvar(m_nCameraErrorCode);
- m_iEnvEmptyTimes = 0;
- bEnvTimeout = false;
- }
- }
- if((m_nOptCameraRestartNum<CAMERA_RESTARTNUM)&&(eStand2sType == m_eDeviceType))
- {
- if (ReStartCamera(OPTCAMERA) != Error_Succeed)
- m_nOptCameraRestartNum++;
- else
- {
- m_nOptCameraRestartNum = 0;
- m_iOptEmptyTimes = 0;
- bOptTimeout = false;
- if (m_nCameraErrorCode == Error_AllCamera)
- {
- m_nCameraErrorCode = Error_EnvCamera;
- ChangeSysvar(m_nCameraErrorCode);
- }
- else
- {
- m_nCameraErrorCode = Error_Succeed;
- ChangeSysvar(m_nCameraErrorCode);
- }
- }
- }
- }
- }
- bool CMediaControllerEntity::SetAutoBright(ErrorCodeEnum nCode)
- {
- return capture_set_autobrightness(m_capture,nCode);
- }
- //camera gain adjust
- void CMediaControllerEntity::OnReceivePkt(int sub_type, const char *buffer, int size)
- {
- if (sub_type == ACM_SET_CAMERABRIGHT)
- {
- if (m_bStartCamera)
- {
- if (eStand2sType == m_eDeviceType)
- {
- //vamera bright adj
- CCameraBrightValue num;
- SpBuffer buf;
- buf.OpenRead(buffer,size);
- num.Serialize(buf);
- if (capture_adj_brightness(m_capture,num.nValue,m_nCameraErrorCode) == true)
- {
- SendCameraBright();
- }
- else
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ACM_SET_CAMERABRIGHT fail!");
- }
- }
- else
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("pad type cannot adj brightness");
- }
- }
- else
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("the camera not start!");
- }
- }
- }
- ErrorCodeEnum CMediaControllerEntity::RealSelfCheck()
- {
- ErrorCodeEnum Error = Error_Succeed;
- if (m_pSelfcheckClient)
- {
- SelfCheckerService_RealCheck_Req req;
- req.name = GetEntityName();
- SelfCheckerService_RealCheck_Ans ans;
- DWORD Timeout = 500;
- Error = (*m_pSelfcheckClient)(EntityResource::getLink().upgradeLink())->RealCheck(req,ans,Timeout);
- if (Error!=Error_Succeed)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("RealSelfcheck fail!");
- }
- else
- {
- LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_REAL_SELF_CHECK, "media controller entity auto restart.");
- }
- }
- return Error;
- }
- void CMediaControllerEntity::SendCameraBright()
- {
- if (m_nSysCallType == 0)
- {
- ChannelService_Send_Info Info;
- Info.compress = false;
- Info.encrypt = false;
- Info.type = ACM_TYPE_DEVICE;
- Info.id = 0;
- Info.sub_type = ACM_CAMERA_BRIGHT;
- Info.data.Alloc(sizeof(int));
- SpBuffer buf;
- buf.OpenWrite();
- int nValue = 0;
- bool rslt = true;
- nValue = capture_get_brightness(m_capture,m_nCameraErrorCode);
- if (nValue >= 0)
- {
- buf & nValue;
- Info.data = buf.ToBlob();
- m_pMediaControllerChannel->Send(Info);
- }
- else
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("send cur camera bright value Fail!");
- }
- }
- else
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("cur call type cannot send pkt");
- }
- }
- ErrorCodeEnum CMediaControllerEntity::StartCameras()
- {
- ErrorCodeEnum Error = Error_Succeed;
- if (FALSE == m_bStartCamera){
- Error = StartCamera();
- if (Error_Succeed == Error){
- SetCameraSysVar(CAMERA_NO_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_NO_ERROR");
- m_bStartCamera = TRUE;
- }
- }
- else{
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("camera already start.");
- }
- return Error;
- }
- ErrorCodeEnum CMediaControllerEntity::StopCameras()
- {
- if (m_capture){
- GetFunction()->KillTimer(1);
- capture_stop(m_capture);
- capture_destroy(m_capture);
- m_capture = NULL;
- }
- m_bStartCamera = FALSE;
- return Error_Succeed;
- }
- ErrorCodeEnum CMediaControllerEntity::StopCamerasAndRecord()
- {
- LogEvent(Severity_Middle, EVENT_MOD_PAUSE_RECORD, "pause record.");
- ErrorCodeEnum CamRet = StopCameras();
- return CamRet;
- }
- ErrorCodeEnum CMediaControllerEntity::StartCamerasAndRecord()
- {
- ErrorCodeEnum CamRet = StartCameras();
-
- LogEvent(Severity_Middle, EVENT_MOD_CONTINUE_RECORD, "continue record.");
- return CamRet;
- }
- ErrorCodeEnum CMediaControllerEntity::LoadRunConfig(CSimpleStringA& frontcam, CSimpleStringA& rearcam)
- {
- CSmartPointer<IEntityFunction> spFunction = GetFunction();
- CSmartPointer<IConfigInfo> spConfig;
- ErrorCodeEnum Error = spFunction->OpenConfig(Config_Run, spConfig);
- if (Error == Error_Succeed) {
- SpIniMappingTable table;
- table.AddEntryString("Video", "FrontCamera", frontcam, "$");
- table.AddEntryString("Video", "RearCamera", rearcam, "$");
- Error = table.Load(spConfig);
- if (Error != Error_Succeed)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("[dbg] failed to load run config.");
- }
- }
- else {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("[dbg] failed to open run config.");
- }
- return Error;
- }
-
- ErrorCodeEnum CMediaControllerEntity::CheckConfigCameraName(capture_config_t *conf)
- {
- ErrorCodeEnum Error = Error_Succeed;
- int EnvConfigNameError = 0; //0:环境摄像头配置名能成功打开 -1:环境摄像头配置名不能打开 1:未配置环境摄像头名字
- int OptConfigNameError = 0; //0:操作摄像头配置名能成功打开 -1:操作摄像头配置名不能打开 1:未配置操作摄像头名字
- //check env device
- if (conf->strVideoEnv.GetLength() > 1)
- { // is not "$"
- conf->video_env_dev = capture_get_video_device_id(conf->strVideoEnv.GetData());
- if (conf->video_env_dev == -1)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("find strVideoEnv:%s(-1)",(LPCTSTR)conf->strVideoEnv);
- EnvConfigNameError = -1;
- }
- }
- else {
- conf->video_env_dev = -1;
- EnvConfigNameError = 1;
- }
- //check opt device
- if (conf->strVideoOpt.GetLength() > 1)
- { // is not "$"
- conf->video_opt_dev = capture_get_video_device_id(conf->strVideoOpt.GetData());
- if (conf->video_opt_dev == -1)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("find strVideoOpt:%s(-1)",(LPCTSTR)conf->strVideoOpt);
- OptConfigNameError = -1;
- }
- }
- else
- {
- conf->video_opt_dev = -1;
- OptConfigNameError = 1;
- }
- //环境摄像头配置名不能打开
- if (EnvConfigNameError == -1){
- //操作摄像头配置名不能打开,此时表明摄像头都不可用
- if(OptConfigNameError == -1){
- Error = Error_AllCamera;
- }
- //未配置操作摄像头名字or操作摄像头配置名能打开,此时表明只有操作摄像头OK
- else{
- Error = Error_EnvCamera;
- }
- }
- //环境摄像头配置名能打开
- else if (EnvConfigNameError == 0){
- //操作摄像头配置名不能打开,此时表明只有环境摄像头OK
- if (OptConfigNameError == -1){
- Error = Error_OptCamera;
- }
- //环境摄像头配置名能打开,未配置操作摄像头名字,此时也认为摄像头都OK(无操作摄像头场景)
- }
- //环境摄像头未配置
- else {
- //操作摄像头配置名不能打开,此时表明只有操作摄像头OK
- if(OptConfigNameError == -1){
- Error = Error_OptCamera;
- }
- //操作摄像头未配置,此时表明摄像头都不可用
- else if (OptConfigNameError == 1){
- Error = Error_AllCamera;
- }
- //操作摄像头名字能打开,此时也认为摄像头都OK(无环境摄像头场景)
- }
-
- return Error;
- }
- bool CMediaControllerEntity::IsNamedDeviceHasInserted(const char* strDeviceName)
- {
- LOG_FUNCTION();
- bool bRet = false;
- if (NULL == strDeviceName){
- return bRet;
- }
- if (capture_get_audio_device_id(true , strDeviceName) >= 0){
- if (capture_get_audio_device_id(false, strDeviceName) >= 0){
- bRet = true;
- }
- }
- return bRet;
- }
- bool CMediaControllerEntity::IsMatchSpecifyedAudioDevice(CSimpleStringA strAudioIn, CSimpleStringA strAudioOut)
- {
- bool bRet = false;
- if (m_strAudioPriority.GetLength() > 0){
- CAutoArray<CSimpleStringA> strArr = m_strAudioPriority.Split('|');
- int iCount = strArr.GetCount();
- for (int i = 0; i < iCount; i++){
- if (strAudioIn.IndexOf(strArr[i].GetData()) >= 0){
- if (strAudioOut.IndexOf(strArr[i].GetData()) >= 0){
- bRet = true;
- break;
- }
- }
- }
- }
- return bRet;
- }
- int CMediaControllerEntity::UpdateAudioDeviceConfig(capture_config_t *conf)
- {
- int iCode = -1;
- if (m_strAudioPriority.GetLength() > 0){
- CAutoArray<CSimpleStringA> strArr = m_strAudioPriority.Split('|');
- int iCount = strArr.GetCount();
- for (int i = 0; i < iCount; i++){
- if (IsNamedDeviceHasInserted(strArr[i].GetData())){
- conf->strAudioOut = strArr[i];
- conf->strAudioIn = strArr[i];
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("success reset audio in device to %s.", strArr[i].GetData());
- iCode = 0;
- break;
- }
- }
- }
- return iCode;
- }
- bool CMediaControllerEntity::CheckAudioDeviceConfigure(capture_config_t *conf)
- {
- bool bRet = false;
- if (NULL == conf){
- return bRet;
- }
-
- if (capture_get_audio_device_id(true, conf->strAudioIn) >= 0){
- if (capture_get_audio_device_id(false, conf->strAudioOut) >= 0){
- bRet = true;
- }
- }
- return bRet;
- }
- ErrorCodeEnum CMediaControllerEntity::GetSalesAudioConfig(rvc_audio_capture_config_t *conf, bool bRemoteRecord)
- {
- CSmartPointer<IEntityFunction> spFunction = GetFunction();
- CSmartPointer<IConfigInfo> spConfig;
- SpIniMappingTable table;
- ErrorCodeEnum Error = spFunction->OpenConfig(Config_Root, spConfig);
- if (Error == Error_Succeed) {
- CSimpleStringA strAudioInDevice;
- table.AddEntryString("Audio", "sales_record_in_dev", strAudioInDevice, "$");
- Error = table.Load(spConfig);
- if (Error == Error_Succeed) {
- conf->audio_capture_period = CAPTURE_FRAME_TIME;
- conf->audio_capture_samplerate = CAPTURE_CLOCK;
- conf->strAudioIn = this->conf.strAudioIn;
- conf->strAudioOut = this->conf.strAudioOut;
- if (strAudioInDevice.GetLength() > 0) {
- conf->strAudioIn = strAudioInDevice;
- }
- }
- else {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("load sales audio device config failed!");
- }
- }
- else {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open sales audio device config failed!");
- }
- if (Error_Succeed != Error) {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get sales audio device info failed, now get from default value.");
- conf->strAudioIn = this->conf.strAudioIn;
- conf->audio_capture_period = CAPTURE_FRAME_TIME;
- conf->audio_capture_samplerate = CAPTURE_CLOCK;
- Error = Error_Succeed;
- }
- if (true == bRemoteRecord) {
- conf->audio_capture_samplerate = CAPTURE_CLOCK;
- }
- return Error;
- }
- static CSimpleStringA generateCameraInfosJson(CSimpleStringA strEnv, CSimpleStringA strOpt, int iEnv, int iOpt, int iMtu)
- {
- return CSimpleStringA::Format("{\"EnvCamera\":\"%s\",\"OptCamera\":\"%s\",\"EnvRotate\":\"%d\",\"OptRotate\":\"%d\",\"mtu\":\"%d\"}",
- strEnv.GetData(), strOpt.GetData(), iEnv, iOpt, iMtu);
- }
- ErrorCodeEnum CMediaControllerEntity::LoadConfig(capture_config_t *conf)
- {
- CSmartPointer<IEntityFunction> spFunction = GetFunction();
- CSmartPointer<IConfigInfo> spConfig;
- SpIniMappingTable table;
- ErrorCodeEnum Error = spFunction->OpenConfig(Config_Root, spConfig);
- if (Error == Error_Succeed) {
- int imtu = 0;
- table.AddEntryString("Audio", "handfree_in_dev", conf->strAudioIn, "$");
- table.AddEntryString("Audio", "handfree_out_dev", conf->strAudioOut, "$");
- table.AddEntryString("Video", "EnvCamera", conf->strVideoEnv, "$");
- table.AddEntryString("Video", "OptCamera", conf->strVideoOpt, "$");
- table.AddEntryInt("Video", "EnvRotate", conf->video_env_rotate, 0);
- table.AddEntryInt("Video", "OptRotate", conf->video_opt_rotate, 0);
- table.AddEntryInt("Video", "mtu", imtu, 0);
- Error = table.Load(spConfig);
- if (Error == Error_Succeed)
- {
- //进行Camera路径名自纠正后再检查
- if (m_strEnvCam.GetLength() > 1 || m_strOptCam.GetLength() > 1 || m_strHandfreeIn.GetLength() > 1 || m_strHandfreeOut.GetLength() > 1){
- UpdateMediaConfig();
- }
- AutoCorrectAudioConfig();
- LogWarn(Severity_Low, Error_Debug, ERROR_MOD_MEDIACONTROLLER_ENV_CAMERA_INFO, conf->strVideoEnv.GetData());
- LogWarn(Severity_Low, Error_Debug, ERROR_MOD_MEDIACONTROLLER_OPT_CAMERA_INFO, conf->strVideoOpt.GetData());
- LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_CAMERA_INFOS, generateCameraInfosJson(conf->strVideoEnv, conf->strVideoOpt, conf->video_env_rotate, conf->video_opt_rotate, imtu).GetData());
- Error = CheckConfigCameraName(conf);
- if (Error == Error_EnvCamera || Error == Error_AllCamera){
- char strMessage[MAX_PATH*2] = {0};
- get_camera_exception_message(strMessage, MAX_PATH*2, conf->strVideoEnv ,"env camera start error,please check config file or device.");
- LogWarn(Severity_Middle,Error_DevMedia,ERROR_MOD_MEDIACONTROLLER_ENVCAM_INITFAIL,strMessage);
- } else if (Error == Error_OptCamera){
- char strMessage[MAX_PATH*2] = {0};
- get_camera_exception_message(strMessage, MAX_PATH*2, conf->strVideoOpt, "operation camera start error,please check config file or device.");
- LogWarn(Severity_Middle,Error_DevMedia,ERROR_MOD_MEDIACONTROLLER_OPTCAM_INITFAIL, strMessage);
- }
- }
- else
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("load config failed!");
- }
- }
- else
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open config failed!");
- }
- return Error;
- }
- void CMediaControllerEntity::OnExternalCameraSwitchFailed(const char* pszFailedMsg)
- {
- // 广播给业务系统
- //ExternalCameraSwitchFailed evt;
- //evt.failedmsg = CSimpleStringA2W(pszFailedMsg);
- //SpSendBroadcast(GetFunction(), SP_MSG_OF(ExternalCameraSwitchFailed), SP_MSG_SIG_OF(ExternalCameraSwitchFailed), evt);
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("[dbg] ExternalCameraSwitchFailed broadcast sent!");
- CSmartPointer<IEntityFunction> Func = GetFunction();
- CSimpleStringA strValue;
- Func->GetSysVar("DesktopType", strValue);
- if (strValue == CSimpleStringA("U")) {
- #ifdef RVC_OS_WIN
- MessageBoxA(NULL, pszFailedMsg, NULL, MB_SYSTEMMODAL);
- #else
- #endif // RVC_OS_WIN
- }
- }
- void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
- const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
- const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext& pLinkInfo)
- {
- switch (dwUserCode)
- {
- case MOD_EVENT_SNAPSHOT_START_CAPTURE_ENVOPT:
- {
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("recv MOD_EVENT_SNAPSHOT_START_CAPTURE_ENVOPT");
- InterlockedCompareExchange(&m_lCaptureEnvOptCount, 3, 0);
- }
- break;
- case MOD_EVENT_SNAPSHOT_START_CAPTURE_ENV:
- {
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("recv MOD_EVENT_SNAPSHOT_START_CAPTURE_ENV");
- InterlockedCompareExchange(&m_lCaptureEnvCount, 1, 0);
- }
- break;
- case MOD_EVENT_SNAPSHOT_START_CAPTURE_OPT:
- {
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("recv MOD_EVENT_SNAPSHOT_START_CAPTURE_OPT");
- InterlockedCompareExchange(&m_lCaptureOptCount, 1, 0);
- }
- break;
- case LOG_EVT_MOD_ASSISCHAN_STARTED_SUCCESS:
- {
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("recv LOG_EVT_MOD_ASSISCHAN_STARTED_SUCCESS");
- Sleep(800);
- if (m_pMediaControllerChannel != NULL){
- m_pMediaControllerChannel->GetFunction()->CloseSession();
- m_pMediaControllerChannel->SafeDelete();
- m_pMediaControllerChannel = NULL;
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Close AssistChannel Session ");
- m_bConnectedAssist = FALSE;
- }
- if (Error_Succeed == ConnectAssistChannel()){
- m_bConnectedAssist = TRUE;
- }
- else {
- GetFunction()->SetTimer(2, this, 3350);
- }
- }
- break;
- case EVENT_MOD_CUSTOMERAWARE_BEGIN:
- {
- m_bCustomerwareBegin = true;
- if (1 != m_iCamOnMode)
- {
- if (!m_bStartCamera && !m_bExternControlCam)
- {
- if (eDesk2SIntegratedType != m_eDeviceType) {
- StartCameraAndSetSysVar();
- }
- else {
- CSimpleStringA strOccupy;
- if (Error_Succeed == GetFunction()->GetSysVar(SYSVAR_CAMERAOCCUPY, strOccupy)) {
- if (strOccupy.IsNullOrEmpty()) {
- StartCameraAndSetSysVar();
- }
- else {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera is Occupying by Entity[%s].", strOccupy.GetData());
- }
- }
- }
- if (m_bStartCamera) {
- LogEvent(Severity_Middle, EVENT_MOD_BEGIN_RECORD, pszMessage);
- OnCameraStarted();
- }
- }
- }
- }
- break;
- case LOG_EVT_BEGIN_HANDLE_BUSINESS:
- if (1 == m_iCamOnMode){
- if (!m_bStartCamera){
- StartCameraAndSetSysVar();
- if (m_bStartCamera) {
- OnCameraStarted();
- }
- }
- 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.");
- }
- }
- }
- break;
- case LOG_EVT_END_HANDLE_BUSINESS:
- if (1 == m_iCamOnMode) {
- 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.");
- }
- }
- else {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("end handle business, and camera is not on.");
- }
- }
- break;
- case EVENT_MOD_CUSTOMERAWARE_END:
- {
- m_bCustomerwareBegin = false;
- if (1 != m_iCamOnMode) {
- if (m_bStartCamera && !m_bExternControlCam)
- {
- if (m_capture)
- {
- OnCameraStopped();
- LogEvent(Severity_Middle, EVENT_MOD_END_RECORD, pszMessage);
- GetFunction()->KillTimer(1);
- capture_stop(m_capture);
- capture_destroy(m_capture);
- m_capture = NULL;
- }
- m_bStartCamera = FALSE;
- m_bNeedPost = true;
- }
- }
- }
- break;
- case LOG_EVT_RECORDFAILED:
- {
- GetFunction()->KillTimer(1);
- LogEvent(Severity_Middle, EVENT_MOD_END_RECORD, NULL);
- char FaildFlag = pszMessage[0];
- if (FaildFlag == '0')
- {
- GetFunction()->SetTimer(1, this, 5000);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("本地录音录像失败,已停止!");
- }
- else //if (FaildFlag == '1')
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("本地录音录像设备故障,尝试恢复中(预计10s内),请稍等");
- if (false == m_bIsRemoteRecord) {
- m_nCameraErrorCode = Error_AllCamera;
- }
- //RealSelfCheck(); // 录音录像失败,强行kill实体
- }
- }
- break;
- case LOG_EVT_UI_RECORDFAILED:
- {
- OnExternalCameraSwitchFailed(pszMessage);
- GetFunction()->KillTimer(1);
- if (m_bIsRemoteRecord){
- LogEvent(Severity_Middle, LOG_EVT_UI_STOPREMOTERECORD, NULL);
- }
- else{
- LogEvent(Severity_Middle, LOG_EVT_UI_STOPRECORD, NULL);
- }
-
- GetFunction()->SetTimer(1, this, 5000);
- }
- break;
- case LOG_EVT_MOD_SALESRECORDER_STARTED_SUCCESS:
- m_bIsRemoteRecord = false;
- break;
- case LOG_EVT_UI_STARTREMOTERECORD:
- {
- m_bIsRemoteRecord = true;
- HandleRemoteRecord(pszMessage);
- }
- break;
- case LOG_EVT_UI_STOPREMOTERECORD:
- {
- m_bIsRemoteRecord = false;
- if (Error_Succeed == StopSalesRecordAudioCapture()){
- }
- if (true == m_bHasStartSpeakerRender){
- StopSpeakerAudioRender();
- }
- }
- break;
- default:
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("unknown event.");
- break;
- }
- }
- void CMediaControllerEntity::OnSelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext)
- {
- if (Test_ShakeHand == eTestType)
- {
- if (m_nCameraErrorCode == Error_AllCamera)
- {
- pTransactionContext->SendAnswer(Error_DevMedia);
- }
- else
- {
- pTransactionContext->SendAnswer(Error_Succeed);
- }
- }
- }
- //获取当前使用摄像头,30分钟轮休一次
- int CMediaControllerEntity::GetActiveCamera()
- {
- SYSTEMTIME st;
- GetLocalTime(&st);
- if (st.wMinute<=CAMERA_CHANGE_TIMER){
- return ENVCAMERA;
- }
- else{
- return OPTCAMERA;
- }
- }
- ErrorCodeEnum CMediaControllerEntity::ChangeSysvar(ErrorCodeEnum op)
- {
- switch (op)
- {
- case Error_Succeed:
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to No_Error");
- SetCameraSysVar(CAMERA_NO_ERROR);
- GetFunction()->SetUserDefineState(USER_MEDIA_IDLE);
- break;
- case Error_EnvCamera:
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to Env_Error");
- SetCameraSysVar(CAMERA_ENV_ERROR);
- GetFunction()->SetUserDefineState(USER_MEDIA_ENVERRROR);
- capture_clearsnapshotvideo(m_capture,ENVCAMERA);
- break;
- case Error_OptCamera:
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to Opt_Error");
- SetCameraSysVar(CAMERA_OPT_ERROR);
- GetFunction()->SetUserDefineState(USER_MEDIA_OPTERROR);
- capture_clearsnapshotvideo(m_capture,OPTCAMERA);
- break;
- case Error_AllCamera:
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to Both_Error");
- SetCameraSysVar(CAMERA_BOTH_ERROR);
- GetFunction()->SetUserDefineState(USER_MEDIA_ALLERROR);
- capture_clearsnapshotvideo(m_capture,AlLCAMERA);
- break;
- default:
- break;
- }
- return Error_Succeed;
- }
- //开始销售双录音频采集函数
- ErrorCodeEnum CMediaControllerEntity::StartSalesRecordAudioCapture(bool bRemoteRecord, eRvcPCMTransType eType, void* pData)
- {
- ErrorCodeEnum Error = Error_Succeed;
- if (NULL == m_salesaudio_capture){
- memset(&m_sales_audio_conf, 0, sizeof(m_sales_audio_conf));
- GetSalesAudioConfig(&m_sales_audio_conf, bRemoteRecord);
- Error = (ErrorCodeEnum)salesaudio_capture_create(&m_sales_audio_conf, &m_salesaudio_capture);
- if (Error_Succeed == Error){
- Error = SetSalesRecordAudioCaptureTransActionData(eType, pData);
- }
- }
- if (Error_Succeed == Error){
- Error = salesrecord_audio_capture_start(m_salesaudio_capture);
- if (Error_Succeed != Error){
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("sales record audio capture start failed for param error.");
- }
- }
- return Error;
- }
- //停止销售双录音频采集函数
- ErrorCodeEnum CMediaControllerEntity::StopSalesRecordAudioCapture()
- {
- salesrecord_audio_capture_stop(m_salesaudio_capture);
- salesaudio_capture_destroy(m_salesaudio_capture);
- m_salesaudio_capture = NULL;
- return Error_Succeed;
- }
- ErrorCodeEnum CMediaControllerEntity::StartCamera()
- {
- if (m_capture == NULL)
- {
- ErrorCodeEnum Error = Error_Succeed;
- conf.ref_env_capture_count = &m_lCaptureEnvCount;
- conf.ref_opt_capture_count = &m_lCaptureOptCount;
- conf.ref_envopt_capture_count = &m_lCaptureEnvOptCount;
- Error = (ErrorCodeEnum)capture_create(&conf, &m_capture);
- if (Error == Error_Succeed)
- {
- Error = capture_start(m_capture);
- if (Error != Error_Succeed)
- {
- if((Error == Error_AudioIN)||(Error == Error_AudioOut))
- {
- return Error;
- }
- else if (Error == Error_AllCamera)
- {
- capture_stop(m_capture);
- capture_destroy(m_capture);
- m_capture = NULL;
- return Error;
- }
- else
- {
- SetAutoBright(Error);
- GetFunction()->SetTimer(1, this, 5000);
- if((Error == Error_OptCamera)&&((ePadtype == m_eDeviceType)||(eStand1SPlusType == m_eDeviceType)))
- {
- return Error_Succeed;
- }
- else
- {
- return Error;
- }
- }
- }
- else
- {
- SetAutoBright(Error);
- GetFunction()->SetTimer(1, this, 5000);
- return Error_Succeed;
- }
- }
- else
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create capture failed! 0x%08x", Error);
- m_capture = NULL;
- return Error_Unexpect;
- }
- return Error;
- }
- else
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("m_capture == NULL");
- return Error_Unexpect;
- }
- }
- void CMediaControllerEntity::StartCameraAndSetSysVar()
- {
- ErrorCodeEnum Error = StartCamera();
- if (Error == Error_Succeed){
- SetCameraSysVar(CAMERA_NO_ERROR);
- m_bStartCamera = TRUE;
- m_bNeedPost = true;
- }
- else{
- if (Error == Error_EnvCamera){
- SetCameraSysVar(CAMERA_ENV_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_ENV_ERROR");
- m_bStartCamera = TRUE;
- }
- else if (Error == Error_OptCamera){
- SetCameraSysVar(CAMERA_OPT_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_OPT_ERROR");
- m_bStartCamera = TRUE;
- }
- else if (Error == Error_AllCamera){
- SetCameraSysVar(CAMERA_BOTH_ERROR);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to CAMERA_BOTH_ERROR");
- m_nCameraErrorCode = Error_AllCamera;
- m_bStartCamera = FALSE;
- GetFunction()->SetUserDefineState(USER_MEDIA_ALLERROR);
- }
- else{
- SetCameraSysVar(Error);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Camera State to Other Error");
- m_nCameraErrorCode = Error;
- m_bStartCamera = FALSE;
- }
- }
- }
- ErrorCodeEnum CMediaControllerEntity::ReStartCamera(int nCamera)
- {
- if (m_capture != NULL)
- {
- if((StopCamera(m_capture,nCamera)==-1)){
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ReStartCamera %d,stop camera fail!", nCamera);
- }
- Sleep(2000);
-
- ErrorCodeEnum Error = Error_Succeed;
- Error = capture_create(&conf, m_capture,nCamera);
- if (Error == Error_Succeed)
- {
- Error = capture_start(m_capture,nCamera);
- if (Error != Error_Succeed)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ReStartCamera %d,capture_start fail!", nCamera);
- capture_destroy(m_capture,nCamera);
- return Error;
- }
- else
- {
- return Error_Succeed;
- }
- }
- else
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ReStartCamera %d,capture_create fail!", nCamera);
- capture_destroy(m_capture,nCamera);
- return Error;
- }
- }
- else
- {
- return Error_Unexpect;
- }
- }
-
- CServerSessionBase *CMediaControllerEntity::OnNewSession(const char* pszRemoteEntityName, const char * pszClass)
- {
- return new MediaServiceSession(this);
- }
- ErrorCodeEnum CMediaControllerEntity::ExternStartCamera()
- {
- CSimpleStringA strSessionId;
- CSmartPointer<IEntityFunction> Func = GetFunction();
- Func->GetSysVar("SessionID", strSessionId);
- if (!m_bStartCamera){
- StartCameraAndSetSysVar();
- if (m_bStartCamera) {
- LogEvent(Severity_Middle, EVENT_MOD_BEGIN_RECORD, strSessionId);
- OnCameraStarted();
- }
- }
- m_bExternControlCam = FALSE;
- return Error_Succeed;
- }
- ErrorCodeEnum CMediaControllerEntity::ExternStopCamera()
- {
- if (m_capture) {
- OnCameraStopped();
- LogEvent(Severity_Middle, EVENT_MOD_END_RECORD,NULL);
- GetFunction()->KillTimer(1);
- capture_stop(m_capture);
- capture_destroy(m_capture);
- m_capture = NULL;
- }
- m_bStartCamera = FALSE;
- m_bExternControlCam = TRUE;
- return Error_Succeed;
- }
- ErrorCodeEnum CMediaControllerEntity::SaveInnerCamera()
- {
- if (strFrontCam.GetLength() <= 1) {
- return Error_Resource;
- }
- if (strstr((LPCTSTR)conf.strVideoEnv,(LPCTSTR)strFrontCam)==NULL)
- {
- CSimpleStringA tmp = strRearCam;
- strRearCam = strFrontCam;
- strFrontCam = tmp;
- }
- //DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("[dbg] strFrontCam: %s, strRearCam: %s", (LPCSTR)strFrontCam, (LPCSTR)strRearCam);
- CSmartPointer<IEntityFunction> spFunction = GetFunction();
- CSmartPointer<IConfigInfo> spConfig;
- ErrorCodeEnum Error = spFunction->OpenConfig(Config_Run, spConfig);
- if (Error == Error_Succeed) {
- SpIniMappingTable table;
- table.AddEntryString("Video", "FrontCamera", strFrontCam, "$");
- table.AddEntryString("Video", "RearCamera", strRearCam, "$");
- Error = table.Save(spConfig);
- if (Error != Error_Succeed)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("[dbg] failed to save run config.");
- }
- }
- else {
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("[dbg] failed to open run config.");
- }
- return Error;
- }
- ErrorCodeEnum CMediaControllerEntity::GetHSPCameras(CAutoArray<CSimpleStringA> &HSPCameras)
- {
- enum CapTypeEnum {
- CAMTYPE_UNKNOWN = 0,
- CAMTYPE_ENV,
- CAMTYPE_OPT,
- CAMTYPE_EWS,
- CAMTYPE_HSPS,
- CAMTYPE_CIRCLE,
- CAMTYPE_MAX
- };
- auto rc = Error_Succeed;
- auto pScannerSetClient = new ScannerService_ClientBase(this);
- if (pScannerSetClient->Connect() != Error_Succeed){
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("连接ScannerSet实体失败");
- pScannerSetClient->SafeDelete();
- pScannerSetClient = NULL;
- rc = Error_DevConnFailed;
- }
- else
- {
- ScannerService_GetOnlineCameras_Req req = {};
- ScannerService_GetOnlineCameras_Ans ans = {};
- rc = (*pScannerSetClient)(EntityResource::getLink().upgradeLink())->GetOnlineCameras(req, ans, 10000);
- if (rc != Error_Succeed){
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ScannerSet 调用 GetOnlineCameras 失败: 0x%x", rc);
- }
- else{
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ScannerSet invokes GetOnlineCameras suc.");
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Count: %d", ans.devCount);
- if (ans.devCount > 0) {
- for (int i = 0; i < ans.devFriendlyNames.GetCount(); ++i) {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("[%d]%s(%d)", i, (LPCTSTR)ans.devFriendlyNames[i],
- ans.devType[i]);
- CapTypeEnum devType = (CapTypeEnum)ans.devType[i];
- if (devType == CAMTYPE_HSPS)
- {
- HSPCameras.Append(ans.devFriendlyNames, i, 1);
- }
- }
- }
- }
- pScannerSetClient->GetFunction()->CloseSession();
- pScannerSetClient->SafeDelete();
- pScannerSetClient = NULL;
- }
- return rc;
- }
- ErrorCodeEnum CMediaControllerEntity::HandleSalesRecordPCMAudio(bool bRemoteRecord, const char *pszMessage, audio_frame* pFrame)
- {
- ErrorCodeEnum Error = Error_Succeed;
- char strSwiftName[MAX_PATH] = {0};
- if (NULL != pszMessage){
- size_t ulen = strlen(pszMessage);
- char *tmp = new char[ulen+1];
- memset(tmp, 0, ulen + 1);
- memcpy(tmp, pszMessage, ulen);
- char *result[16] = {0};
- auto arr1 = CSimpleStringA2W(tmp).Split('@');
- auto arr2 = CAutoArray<CSimpleStringA>(arr1.GetCount());
- for (int i = 0; i < arr1.GetCount(); ++i){
- arr2[i] = CSimpleStringW2A(arr1[i]);
- result[i] = const_cast<LPSTR>(arr2[i].GetData());
- }
- if (arr1.GetCount() > 4){
- _snprintf(strSwiftName, MAX_PATH, "%s", result[4]);
- }
- delete tmp;
- tmp = NULL;
- }
- char strMicroName[MAX_PATH] = {0};
- CSimpleStringA strTempDir;
- if (Error_Succeed == GetFunction()->GetPath("Temp", strTempDir)){
- _snprintf(strMicroName, MAX_PATH, "%s\\local_micro_%s.pcm", strTempDir.GetData(), strSwiftName);
- }
- else{
- _snprintf(strMicroName, MAX_PATH, "local_micro_%s.pcm", strSwiftName);
- }
-
- FILE *pRecord = fopen(strMicroName, "wb+");
- if (NULL != pRecord){
- if (Error_Succeed == StartSalesRecordAudioCapture(bRemoteRecord, eSingleWriteLocal, pRecord)){
- }
- }
- else{
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("fopen %s failed.",strMicroName);
- }
- if (true == bRemoteRecord){
- char strSpeakerName[MAX_PATH] = {0};
- if ("" != strTempDir){
- _snprintf(strSpeakerName, MAX_PATH, "%s\\remote_speaker_%s.pcm", strTempDir.GetData(), strSwiftName);
- }
- else{
- _snprintf(strSpeakerName, MAX_PATH, "remote_speaker_%s.pcm", strSwiftName);
- }
- StartSpeakerAudioRender(0, pFrame, strSpeakerName);
- }
-
- return Error;
- }
- void CMediaControllerEntity::HandleRemoteRecord(const char *pszMessage)
- {
- audio_frame frame;
- frame.bitspersample = 16;
- frame.format = 1;
- frame.framesize = 320;
- frame.nchannels = 1;
- frame.samplespersec = 8000;
- if (true == m_bRecordPCM){
- HandleSalesRecordPCMAudio(true, pszMessage, &frame);
- }
- else{
- if (Error_Succeed == StartSalesRecordAudioCapture(true)){
- }
- StartSpeakerAudioRender(0, &frame, NULL);
- }
- }
- ErrorCodeEnum CMediaControllerEntity::StartSpeakerAudioRender(int iQueue, audio_frame* pFrame, const char* strName)
- {
- auto rc = Error_Succeed;
- if (m_bSpeakerCap){
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("start speak audio render.");
- if (NULL != m_pAudioRenderObj){
- if(0 == m_pAudioRenderObj->StartRender(0, pFrame, strName)){
- m_bHasStartSpeakerRender = true;
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start speak audio render success.");
- }
- }
- }
- return rc;
- }
- ErrorCodeEnum CMediaControllerEntity::StopSpeakerAudioRender()
- {
- auto rc = Error_Succeed;
- if (m_bSpeakerCap){
- if (NULL != m_pAudioRenderObj){
- m_pAudioRenderObj->StopRender();
- m_bHasStartSpeakerRender = false;
- }
- }
- return rc;
- }
- ErrorCodeEnum CMediaControllerEntity::SetSalesRecordAudioCaptureTransActionData(eRvcPCMTransType eType, void* pData)
- {
- auto rc = Error_Param;
- if (NULL != m_salesaudio_capture){
- if (NULL != m_salesaudio_capture->rvc_audio){
- m_salesaudio_capture->rvc_audio->eType = eType;
- m_salesaudio_capture->rvc_audio->pdata = pData;
- rc = Error_Succeed;
- }
- }
- return rc;
- }
- ErrorCodeEnum CMediaControllerEntity::ConnectAssistChannel()
- {
- if (NULL == m_pMediaControllerChannel) {
- m_pMediaControllerChannel = new ChannelMediaControllerClient(this);
- }
- ErrorCodeEnum Error = m_pMediaControllerChannel->Connect();
- if (Error != Error_Succeed) {
- m_pMediaControllerChannel->SafeDelete();
- m_pMediaControllerChannel = NULL;
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ChannelMediaControllerClient connect fail!");
- return Error;
- }
- if (Error_Succeed == Error)
- {
- ChannelService_BeginState_Sub Sub;
- Error = (*m_pMediaControllerChannel)(EntityResource::getLink().upgradeLink())->BeginState(Sub);
- if (Error != Error_Succeed) {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("BeginState biz channel failed!");
- m_pMediaControllerChannel->GetFunction()->CloseSession();
- m_pMediaControllerChannel->SafeDelete();
- m_pMediaControllerChannel = NULL;
- return Error;
- }
- }
- if (Error_Succeed == Error)
- {
- ChannelService_BeginRecv_Sub Sub;
- Sub.type = ACM_TYPE_DEVICE;
- Error = (*m_pMediaControllerChannel)(EntityResource::getLink().upgradeLink())->BeginRecv(Sub);
- if (Error != Error_Succeed) {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Begin BeginRecv ACM_TYPE_DEVICE failed!");
- m_pMediaControllerChannel->GetFunction()->CloseSession();
- m_pMediaControllerChannel->SafeDelete();
- m_pMediaControllerChannel = NULL;
- return Error;
- }
- }
- return Error;
- }
- ErrorCodeEnum CMediaControllerEntity::GetAudioDevices(int& iAudioCount, CSimpleStringA& strAudioDev, int iAudioType)
- {
- ErrorCodeEnum Error = Error_Succeed;
- if (0 == iAudioType) {
- iAudioCount = capture_get_audio_device_list(0, strAudioDev);
- }
- else {
- iAudioCount = capture_get_audio_device_list(1, strAudioDev);
- }
- return Error;
- }
- ErrorCodeEnum CMediaControllerEntity::GetVideoDevices(int& iVideoCount, CSimpleStringA& strVideoDev)
- {
- ErrorCodeEnum Error = Error_Succeed;
- iVideoCount = capture_get_video_device_list(strVideoDev);
- return Error;
- }
- double CMediaControllerEntity::GetSystemCpuUsage()
- {
- double ratio = 0;
- #define _WIN32_WINNT 0x0601
- FILETIME idleTime,kernelTime,userTime;
- BOOL ret = GetSystemTimes(&idleTime,&kernelTime,&userTime);
- if (ret == 0){
- return 80.0;
- }
- __int64 xIdle,xKernel,xUser;
- xIdle = idleTime.dwHighDateTime;
- xIdle <<= 32;
- xIdle |= idleTime.dwLowDateTime;
- xKernel = kernelTime.dwHighDateTime;
- xKernel <<= 32;
- xKernel |= kernelTime.dwLowDateTime;
- xUser = userTime.dwHighDateTime;
- xUser <<= 32;
- xUser |= userTime.dwLowDateTime;
- if (m_xIdlePre != 0)
- {
- __int64 xI,xK,xU;
- xI = xIdle - m_xIdlePre;
- xK = xKernel - m_xKernelPre;
- xU = xUser - m_xUserPre;
- if ((xK +xU) != 0)
- ratio = (xK - xI + xU) * 100 / (xK + xU);
- }
- m_xIdlePre = xIdle;
- m_xKernelPre = xKernel;
- m_xUserPre = xUser;
- return ratio;
- }
- void CMediaControllerEntity::OnCameraStarted()
- {
- LogEvent(Severity_Middle, LOG_EVT_MEDIACONTROLLER_CAMERA_STARTED, "camera started.");
- }
- void CMediaControllerEntity::OnCameraStopped()
- {
- LogEvent(Severity_Middle, LOG_EVT_MEDIACONTROLLER_CAMERA_STOPPED, "camera stopped.");
- }
- SelfChekerClient::SelfChekerClient( CMediaControllerEntity *pEntity ) : SelfCheckerService_ClientBase(pEntity)
- {
- }
- ChannelMediaControllerClient::ChannelMediaControllerClient( CMediaControllerEntity *pEntity ) : ChannelService_ClientBase(pEntity)
- {
- }
- void ChannelMediaControllerClient::OnMessage(ErrorCodeEnum Error, ChannelService_State_Info &Msg, CSmartPointer<IReleasable> pData)
- {
- if (Error == Error_Succeed)
- {
- CMediaControllerEntity *pEntity = static_cast<CMediaControllerEntity*>(m_pEntityBase);
- if (Msg.state == eChannelState_Idle)
- {
- if (pEntity->m_bStartCamera)
- {
- if (pEntity->SetAutoBright(pEntity->m_nCameraErrorCode)==false)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SetAutoBright Fail!");
- }
- }
- }
- else if (Msg.state == eChannelState_Connected)
- {
- if (pEntity->m_bStartCamera)
- {
- pEntity->SendCameraBright();
- }
- }
- }
- }
- void ChannelMediaControllerClient::OnMessage( ErrorCodeEnum Error, ChannelService_Packet_Info &Msg, CSmartPointer<IReleasable> pData )
- {
- LOG_FUNCTION();
- if (Error == Error_Succeed)
- {
- CMediaControllerEntity *pEntity = static_cast<CMediaControllerEntity*>(m_pEntityBase);
- pEntity->OnReceivePkt(Msg.sub_type, (const char*)Msg.data.m_pData, Msg.data.m_iLength);
- }
- }
- void MediaServiceSession::Handle_GetVideoDeviceName(SpReqAnsContext<MediaService_GetVideoDeviceName_Req, MediaService_GetVideoDeviceName_Ans>::Pointer ctx)
- {
- DbgToBeidou(ctx->link, __FUNCTION__)();
- CSimpleStringA frontcam = m_pEntity->strFrontCam;
- CSimpleStringA rearcam = m_pEntity->strRearCam;
- if (frontcam.GetLength() > 1 && rearcam.GetLength() > 1)
- {
- ctx->Ans.frontcam = frontcam;
- if (strstr((LPCTSTR)frontcam,";"))
- {
- ctx->Ans.frontcam = frontcam.SubString(0, frontcam.IndexOf(";"));
- }
- ctx->Ans.rearcam = rearcam;
- if (strstr((LPCTSTR)rearcam,";"))
- {
- ctx->Ans.rearcam = rearcam.SubString(0, rearcam.IndexOf(";"));
- }
- }
- ctx->Answer(Error_Succeed);
- }
- void MediaServiceSession::Handle_StartCamera(SpOnewayCallContext<MediaService_StartCamera_Info>::Pointer ctx)
- {
- DbgToBeidou(ctx->link, __FUNCTION__)();
- m_pEntity->ExternStartCamera();
- }
- void MediaServiceSession::Handle_StopCamera(SpOnewayCallContext<MediaService_StopCamera_Info>::Pointer ctx)
- {
- DbgToBeidou(ctx->link, __FUNCTION__)();
- m_pEntity->ExternStopCamera();
- }
- void MediaServiceSession::Handle_StartEnvCamera(SpReqAnsContext<MediaService_StartEnvCamera_Req, MediaService_StartEnvCamera_Ans>::Pointer ctx)
- {
- DbgToBeidou(ctx->link, __FUNCTION__)();
- ctx->Answer(Error_Succeed);
- }
- void MediaServiceSession::Handle_StopEnvCamera(SpOnewayCallContext<MediaService_StopEnvCamera_Info>::Pointer ctx)
- {
- DbgToBeidou(ctx->link, __FUNCTION__)();
- }
- void MediaServiceSession::Handle_StartSpeakerRender(SpOnewayCallContext<MediaService_StartSpeakerRender_Info>::Pointer ctx)
- {
- DbgToBeidou(ctx->link, __FUNCTION__)();
- }
- void MediaServiceSession::Handle_StopSpeakerRender(SpOnewayCallContext<MediaService_StopSpeakerRender_Info>::Pointer ctx)
- {
- DbgToBeidou(ctx->link, __FUNCTION__)();
- if (true == m_pEntity->m_bHasStartSpeakerRender){
- m_pEntity->StopSpeakerAudioRender();
- }
- }
- void MediaServiceSession::Handle_ManipulateMediaDevice(SpReqAnsContext<MediaService_ManipulateMediaDevice_Req, MediaService_ManipulateMediaDevice_Ans>::Pointer ctx)
- {
- DbgToBeidou(ctx->link, __FUNCTION__)();
- ErrorCodeEnum Error = Error_NotImpl;
- ctx->Ans.retCode = (int)Error;
- ctx->Answer(Error_Succeed);
- }
-
- void MediaServiceSession::Handle_GetAudioDevices(SpReqAnsContext<MediaService_GetAudioDevices_Req, MediaService_GetAudioDevices_Ans>::Pointer ctx)
- {
- DbgToBeidou(ctx->link, __FUNCTION__)();
- ErrorCodeEnum Error = Error_NotImpl;
- Error = m_pEntity->GetAudioDevices(ctx->Ans.deviceCount, ctx->Ans.strNames, ctx->Req.audioType);
- ctx->Ans.retCode = (int)Error;
- ctx->Answer(Error_Succeed);
- }
- void MediaServiceSession::Handle_GetVideoDevices(SpReqAnsContext<MediaService_GetVideoDevices_Req, MediaService_GetVideoDevices_Ans>::Pointer ctx)
- {
- DbgToBeidou(ctx->link, __FUNCTION__)();
- ErrorCodeEnum Error = Error_NotImpl;
- Error = m_pEntity->GetVideoDevices(ctx->Ans.deviceCount, ctx->Ans.strNames);
- ctx->Ans.retCode = (int)Error;
- ctx->Answer(Error_Succeed);
- }
- void MediaServiceSession::Handle_GetCameraInfos(SpReqAnsContext<MediaService_GetCameraInfos_Req, MediaService_GetCameraInfos_Ans>::Pointer ctx)
- {
- DbgToBeidou(ctx->link, __FUNCTION__)();
- ErrorCodeEnum Error = Error_Succeed;
- ctx->Ans.strEnvCamera = m_pEntity->conf.strVideoEnv;
- ctx->Ans.strOptCamera = m_pEntity->conf.strVideoOpt;
- ctx->Ans.retCode = (int)Error;
- ctx->Answer(Error_Succeed);
- }
- void MediaServiceSession::Handle_ManipulateCameras(SpReqAnsContext<MediaService_ManipulateCameras_Req, MediaService_ManipulateCameras_Ans>::Pointer ctx)
- {
- DbgToBeidou(ctx->link, __FUNCTION__)();
- ErrorCodeEnum Error = Error_NotImpl;
- DeviceTypeEnum eType = m_pEntity->RvcDeviceType();
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("rvc Device Type is %s, and cmdType is %d.", Device_Type_Table[eType], ctx->Req.cmdType);
-
- if (ctx->Req.cmdType == 0) {
- Error = m_pEntity->StopCamerasAndRecord();
- Sleep(50);
- }
- else {
- Sleep(100);
- Error = m_pEntity->StartCamerasAndRecord();
- }
- ctx->Ans.retCode = (int)Error;
- ctx->Answer(Error_Succeed);
- }
- SP_BEGIN_ENTITY_MAP()
- SP_ENTITY(CMediaControllerEntity)
- SP_END_ENTITY_MAP()
|