mod_mediacontroller.h 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. #pragma once
  2. #include "SpBase.h"
  3. #include "SpIni.h"
  4. #include "MediaController_server_g.h"
  5. #include "MediaController_msg_g.h"
  6. #include "../mod_healthmanager/HealthManager_client_g.h"
  7. #include "../mod_healthmanager/HealthManager_def_g.h"
  8. #include "EventCode.h"
  9. // id:0x208
  10. #include "../mod_assistantchannel/AssistantChannel_client_g.h"
  11. #include "../mod_assistantchannel/chan_protocol.h"
  12. using namespace AssistantChannel;
  13. using namespace HealthManager;
  14. using namespace MediaController;
  15. class CMediaControllerEntity;
  16. enum eCameraSate {
  17. eCameraClose,
  18. eCameraOpening,
  19. eCameraOpened
  20. };
  21. struct CCameraBrightValue
  22. {
  23. int nValue;
  24. void Serialize(SpBuffer &Buf)
  25. {
  26. Buf & nValue;
  27. }
  28. };
  29. class ChannelMediaControllerClient : public ChannelService_ClientBase
  30. {
  31. public:
  32. ChannelMediaControllerClient(CMediaControllerEntity *pEntity);
  33. virtual void OnMessage(ErrorCodeEnum Error, ChannelService_State_Info &Msg, CSmartPointer<IReleasable> pData);
  34. virtual void OnMessage(ErrorCodeEnum Error, ChannelService_Packet_Info &Msg, CSmartPointer<IReleasable> pData);
  35. };
  36. class MediaServiceSession : public MediaService_ServerSessionBase
  37. {
  38. public:
  39. MediaServiceSession(CMediaControllerEntity *pEntity) : m_pEntity(pEntity){}
  40. virtual void Handle_GetAudioDevices(SpReqAnsContext<MediaService_GetAudioDevices_Req, MediaService_GetAudioDevices_Ans>::Pointer ctx);
  41. virtual void Handle_GetVideoDevices(SpReqAnsContext<MediaService_GetVideoDevices_Req, MediaService_GetVideoDevices_Ans>::Pointer ctx);
  42. virtual void Handle_GetCameraInfos(SpReqAnsContext<MediaService_GetCameraInfos_Req, MediaService_GetCameraInfos_Ans>::Pointer ctx);
  43. virtual void Handle_ManipulateCameras(SpReqAnsContext<MediaService_ManipulateCameras_Req, MediaService_ManipulateCameras_Ans>::Pointer ctx);
  44. virtual void Handle_GetEnvCameraVideoCaptureInfo(SpReqAnsContext<MediaService_GetEnvCameraVideoCaptureInfo_Req, MediaService_GetEnvCameraVideoCaptureInfo_Ans>::Pointer ctx);
  45. virtual void Handle_GetEnvCamRawBrightnessInfo(SpReqAnsContext<MediaService_GetEnvCamRawBrightnessInfo_Req, MediaService_GetEnvCamRawBrightnessInfo_Ans>::Pointer ctx);
  46. virtual void Handle_SetEnvCamRawBrightness(SpReqAnsContext<MediaService_SetEnvCamRawBrightness_Req, MediaService_SetEnvCamRawBrightness_Ans>::Pointer ctx);
  47. virtual void Handle_TurnOnCamera(SpReqAnsContext<MediaService_TurnOnCamera_Req, MediaService_TurnOnCamera_Ans>::Pointer ctx);
  48. virtual void Handle_TurnOffCamera(SpReqAnsContext<MediaService_TurnOffCamera_Req, MediaService_TurnOffCamera_Ans>::Pointer ctx);
  49. virtual void Handle_IsCameraOnStatus(SpReqAnsContext<MediaService_IsCameraOnStatus_Req, MediaService_IsCameraOnStatus_Ans>::Pointer ctx);
  50. virtual void Handle_GetCameraBrightness(SpReqAnsContext<MediaService_GetCameraBrightness_Req, MediaService_GetCameraBrightness_Ans>::Pointer ctx);
  51. virtual void Handle_SetCameraBrightness(SpReqAnsContext<MediaService_SetCameraBrightness_Req, MediaService_SetCameraBrightness_Ans>::Pointer ctx);
  52. private:
  53. CMediaControllerEntity *m_pEntity;
  54. };
  55. class CMediaControllerEntity : public CEntityBase, public ILogListener, public ITimerListener,public ISysVarListener
  56. {
  57. public:
  58. CMediaControllerEntity();
  59. virtual ~CMediaControllerEntity() {}
  60. virtual const char* GetEntityName() const { return "MediaController"; }
  61. virtual bool IsService()const { return true; }
  62. virtual void OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName);
  63. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<ITransactionContext> pTransactionContext);
  64. virtual void OnStarted();
  65. DeviceTypeEnum RvcGetDeviceType();
  66. ErrorCodeEnum GetSalesRecordAudioParam();
  67. ErrorCodeEnum SetCameraSysVar(const CSimpleStringA &newVal);
  68. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause, CSmartPointer<ITransactionContext> pTransactionContext);
  69. virtual void OnTimeout(DWORD dwTimerID);
  70. bool SetAutoBright(ErrorCodeEnum nCode);
  71. bool SetConfigBright(ErrorCodeEnum nCode);
  72. void OnReceivePkt(int sub_type, const char *buffer, int size);
  73. ErrorCodeEnum RealSelfCheck();
  74. void SendCameraBright(DeviceTypeEnum eType);
  75. ErrorCodeEnum StartAllCameras(bool bstartaudio = true);
  76. ErrorCodeEnum StopAllCameras();
  77. ErrorCodeEnum RvcCheckCameraInfo(int iCamNumber);
  78. void DelayCloseCameras();
  79. ErrorCodeEnum HandleSalesRecordPCMAudio(bool bRemoteRecord, const char* pszMessage, audio_frame* pFrame = NULL);
  80. void HandleRemoteRecord(const char* pszMessage);
  81. ErrorCodeEnum StartSpeakerAudioRender(int iQueue, audio_frame* pFrame, const char* strName);
  82. ErrorCodeEnum StopSpeakerAudioRender();
  83. ErrorCodeEnum StopCamerasAndRecord();
  84. ErrorCodeEnum StartCamerasAndRecord();
  85. DeviceTypeEnum RvcDeviceType();
  86. ErrorCodeEnum GetMediaConfig();
  87. ErrorCodeEnum GetAudioDevices(int& iAudioCount, CSimpleStringA& strAudioDev, int iAudioType);
  88. ErrorCodeEnum GetVideoDevices(int& iVideoCount, CSimpleStringA& strVideoDev);
  89. ErrorCodeEnum RvcGetAudioDevice();
  90. ErrorCodeEnum CheckConfigCameraName(capture_config_t* conf, DeviceTypeEnum eType);
  91. ErrorCodeEnum AutoGetVideoDeviceName(capture_config_t* conf);
  92. void CheckAutoVideoConfig(capture_config_t* conf);
  93. void OnCameraStarted();
  94. void OnCameraStopped();
  95. ErrorCodeEnum GetSalesAudioConfig(rvc_audio_capture_config_t *conf, bool bRemoteRecord);
  96. ErrorCodeEnum LoadConfig(capture_config_t* conf);
  97. virtual void OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
  98. const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
  99. const CAutoArray<DWORD>& Param, const char* pszEntityName, const char* pszModuleName, const char* pszMessage, const linkContext& pLinkInfo);
  100. virtual void OnSelfTest(EntityTestEnum eTestType, CSmartPointer<ITransactionContext> pTransactionContext);
  101. int GetActiveCamera();
  102. ErrorCodeEnum ChangeSysvar(ErrorCodeEnum op);
  103. ErrorCodeEnum StartSalesRecordAudioCapture(bool bRemoteRecord = false);
  104. ErrorCodeEnum StopSalesRecordAudioCapture();
  105. ErrorCodeEnum StartCamera(bool bstartaudio = true);
  106. ErrorCodeEnum ReStartCamera(int nCamera);
  107. virtual CServerSessionBase* OnNewSession(const char* pszRemoteEntityName, const char* pszClass);
  108. void OnTimeCameraStatusCheck();
  109. ErrorCodeEnum ConnectAssistChannel();
  110. void LogTransactionRecordCtrEvt(int iEvtType);
  111. ErrorCodeEnum GetEnvCamRawBrightnessInfo(int* iMin, int* iMax);
  112. ErrorCodeEnum SetEnvCamRawBrightness(int iBrightness);
  113. ErrorCodeEnum GetEnvCameraVideoCaptureInfo(CSimpleStringA& strnotice, CSimpleStringA& strcmd);
  114. void OnTimeHandfreeMicroStatusCheck();
  115. #ifdef DEVOPS_ON_PRD
  116. #else
  117. #ifdef RVC_OS_WIN
  118. #else
  119. void OnBrocastEnvCameraCapInfo(int icaptime, int irealframes, float frealfps, float fstable);
  120. ErrorCodeEnum GetEnvCamCaptureProcess();
  121. ErrorCodeEnum StartSaveEnvCamPhoto(const char* pname, const int interval);
  122. ErrorCodeEnum StopSaveEnvCamPhoto();
  123. void HandleStartCameraCapture(const char* pszMessage);
  124. void HandleStopCameraCapture();
  125. void SetPostCapInfoFlag(bool bpostcapinfo);
  126. bool GetPostCapInfoFlag();
  127. #endif
  128. #endif
  129. void SetCameraState(ErrorCodeEnum errorcode);
  130. void GetCameraBrightness(SpReqAnsContext<MediaService_GetCameraBrightness_Req, MediaService_GetCameraBrightness_Ans>::Pointer ctx);
  131. void SetCameraBrightness(SpReqAnsContext<MediaService_SetCameraBrightness_Req, MediaService_SetCameraBrightness_Ans>::Pointer ctx);
  132. ErrorCodeEnum PostCameraBrightnessInfos(int iBrightness);
  133. bool IsOnlineState();
  134. bool HandleVirtucalCamMsg(const char* strMsg);
  135. public:
  136. DeviceTypeEnum m_eDeviceType;
  137. eCameraSate m_eCameraState;
  138. capture_config_t conf;
  139. rvc_audio_capture_config_t m_sales_audio_conf;
  140. ErrorCodeEnum m_nCameraErrorCode;
  141. capture_t* m_capture;
  142. rvc_sales_audio_capture_t* m_salesaudio_capture;
  143. bool m_bHasStartSpeakerRender;
  144. bool m_bOnBusiness;
  145. bool m_bJsOccupyCamera;
  146. private:
  147. #ifdef RVC_OS_WIN
  148. IAudioRender* m_pAudioRenderObj;
  149. bool m_bSpeakerCap;
  150. HANDLE m_hVirtualCamStateThread;
  151. #else
  152. pthread_mutex_t m_env_mutex;
  153. pthread_mutex_t m_opt_mutex;
  154. pthread_mutex_t m_envopt_mutex;
  155. IAudioMgr* m_pAudioCap;
  156. pthread_t m_iCamStateThreadId;
  157. #endif
  158. LONG m_lCaptureEnvCount;
  159. LONG m_lCaptureOptCount;
  160. LONG m_lCaptureEnvOptCount;
  161. CAutoArray<CUUID> m_arrListener;
  162. ChannelMediaControllerClient* m_pMediaControllerChannel;
  163. HealthManagerService_ClientBase* m_pHMClient;
  164. bool m_bIsRemoteRecord;
  165. bool m_bConnectedAssist;
  166. int m_iCamTimeout;
  167. int m_iDelayTime;
  168. int m_interValTime;
  169. bool m_bCameraOffTimerOn;
  170. int m_iAudioTimeout;
  171. bool m_bVirtualCamOpened;
  172. int m_iVirtualCamLogLevel;
  173. CSimpleStringA m_strHttpServerAddr;
  174. CSimpleStringA m_strHttpServerAPI;
  175. int m_iHttpTimeOut;
  176. CSimpleStringA m_strAppVersion;
  177. CSimpleStringA m_strTerminalId;
  178. bool m_bsynchronized;
  179. #ifdef DEVOPS_ON_PRD
  180. #else
  181. #ifdef RVC_OS_WIN
  182. #else
  183. CSimpleStringA m_PhotoSaveDir;
  184. bool m_bPostCapInfo;
  185. #endif
  186. #endif
  187. };