mod_localmediaplay.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #include "SpBase.h"
  2. #include "SpIni.h"
  3. #include <Shlwapi.h>
  4. #pragma comment(lib, "ShLwApi.Lib")
  5. #include "..\\..\\Other\\libwmpplayer\\libwmpplayer.h"
  6. #include "..\\..\\Other\\libimgplayer\\libimgplayer.h"
  7. #include "LocalMediaPlay_server_g.h"
  8. #include "AdvertBase/AdvertSync.h"
  9. #include "AdvertManage/mediaManage.h"
  10. #include <iostream>
  11. using namespace LocalMediaPlay;
  12. #define LOG_EVT_SELFCHECK_IEBROWSER_IDLE 0x50500007 //IEBrowser重启
  13. #define MAX_PLAY_CHANNELS 3 //最大播放通道数
  14. typedef struct {
  15. int nCfgInx;
  16. int nWndX;
  17. int nWndY;
  18. int nWndWidth;
  19. int nWndHeight;
  20. }MediaPlayParam;
  21. DWORD WINAPI qryMedia(LPVOID lpv);
  22. DWORD WINAPI MediaPlayThread(LPVOID param);
  23. DWORD WINAPI clearOutdata(LPVOID lpv);
  24. DWORD WINAPI CheckAudioThread(LPVOID param);
  25. class CLocalMediaPlayEntity : public CWmpHostApi, public CImgHostApi, public CEntityBase, public ILogListener
  26. {
  27. public:
  28. CLocalMediaPlayEntity();
  29. virtual ~CLocalMediaPlayEntity();
  30. virtual const char *GetEntityName() const { return "LocalMediaPlay"; }
  31. virtual bool IsService() const { return true; }
  32. virtual CServerSessionBase *OnNewSession(const char* pszRemoteEntityName, const char * pszClass);
  33. virtual BOOL LoadPlayConfig(CWmpPlayConfig &config, int CfgInx);
  34. virtual BOOL LoadPlayConfig(CImgPlayConfig &config, int CfgInx);
  35. virtual void WmpDebug(const char *fmt, ...);
  36. virtual void ImgDebug(const char *fmt, ...);
  37. virtual void OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
  38. const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
  39. const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName, const char *pszMessage);
  40. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<ITransactionContext> pTransactionContext);
  41. ErrorCodeEnum __OnStart(ErrorCodeEnum preOperationError);
  42. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause, CSmartPointer<ITransactionContext> pTransactionContext);
  43. ErrorCodeEnum __OnClose(ErrorCodeEnum preOperationError);
  44. void StartVideo(int nCfgInx, int nWndX, int nWndY, int nWndWidth, int nWndHeight);
  45. void StartAudio(const char *pAudioNames);
  46. void StartImage(int nCfgInx, int nWndX, int nWndY, int nWndWidth, int nWndHeight);
  47. void StopVideo(int nCfgInx);
  48. void StopAudio();
  49. void StopImage(int nCfgInx);
  50. void StopAll();
  51. bool GetLocalVideoVolume(int nCfgInx, int &nVolume);
  52. bool SetLocalVideoVolume(int nCfgInx, int nVolume);
  53. std::pair<bool, int> GetLocalAudioVolume();
  54. bool SetLocalAudioVolume(int nVolume);
  55. bool IsRunConfigExist();
  56. private:
  57. virtual void OnSelfTest(EntityTestEnum eTestType, CSmartPointer<ITransactionContext> pTransactionContext);
  58. // 按分隔符分隔字符串
  59. void CStringSplit(char *str, char **result, const char *del);
  60. friend DWORD WINAPI clearOutdata(LPVOID lpv);
  61. friend DWORD WINAPI qryMedia(LPVOID lpv);
  62. friend DWORD WINAPI MediaPlayThread(LPVOID param);
  63. friend DWORD WINAPI CheckAudioThread(LPVOID param);
  64. void setMediaPath();
  65. void SecureClientRelease();
  66. bool SecureClientConnect();
  67. void loadDefaultMedia();
  68. private:
  69. int m_id_seq;
  70. CUUID m_SubIDIEIdle;
  71. // 视频播放对象指针数组
  72. Clibwmpplayer* m_pVideoPlayer[MAX_PLAY_CHANNELS];
  73. // 音频播放对象指针
  74. Clibwmpplayer* m_pAudioPlayer;
  75. // 图片播放对象指针数组
  76. Clibimgplayer* m_pImagePlayer[MAX_PLAY_CHANNELS];
  77. //连接获取最新广告资源
  78. CAdvertSyncConnection *m_connection;
  79. mediaManage m_mediaManage;
  80. MediaPlayParam m_mediaParam;
  81. int m_defaultVolum;
  82. HANDLE m_scanThread, m_playThread;
  83. std::string m_lastPlayAudio;
  84. vector<CWmpPlayConfig> m_defaultVideo;
  85. vector<CWmpPlayConfig> m_defaultAudio;
  86. vector<CImgPlayConfig> m_defaultImg;
  87. };
  88. class CLocalMediaPlaySession : public PlayService_ServerSessionBase
  89. {
  90. public:
  91. CLocalMediaPlaySession(CLocalMediaPlayEntity* pEntity, int id) : m_id(id), m_pEntity(pEntity)
  92. {
  93. }
  94. virtual void Handle_StartPlayVideo(SpReqAnsContext<PlayService_StartPlayVideo_Req, PlayService_StartPlayVideo_Ans>::Pointer ctx);
  95. virtual void Handle_StartPlayAudio(SpReqAnsContext<PlayService_StartPlayAudio_Req, PlayService_StartPlayAudio_Ans>::Pointer ctx);
  96. virtual void Handle_StartPlayImage(SpReqAnsContext<PlayService_StartPlayImage_Req, PlayService_StartPlayImage_Ans>::Pointer ctx);
  97. virtual void Handle_StopPlayVideo(SpReqAnsContext<PlayService_StopPlayVideo_Req, PlayService_StopPlayVideo_Ans>::Pointer ctx);
  98. virtual void Handle_StopPlayAudio(SpReqAnsContext<PlayService_StopPlayAudio_Req, PlayService_StopPlayAudio_Ans>::Pointer ctx);
  99. virtual void Handle_StopPlayImage(SpReqAnsContext<PlayService_StopPlayImage_Req, PlayService_StopPlayImage_Ans>::Pointer ctx);
  100. virtual void OnClose(ErrorCodeEnum eErrorCode);
  101. virtual void Handle_GetLocalVideoVolume(SpReqAnsContext<PlayService_GetLocalVideoVolume_Req, PlayService_GetLocalVideoVolume_Ans>::Pointer ctx);
  102. virtual void Handle_SetLocalVideoVolume(SpReqAnsContext<PlayService_SetLocalVideoVolume_Req, PlayService_SetLocalVideoVolume_Ans>::Pointer ctx);
  103. virtual void Handle_GetLocalAudioVolume(SpReqAnsContext<PlayService_GetLocalAudioVolume_Req, PlayService_GetLocalAudioVolume_Ans>::Pointer ctx);
  104. virtual void Handle_SetLocalAudioVolume(SpReqAnsContext<PlayService_SetLocalAudioVolume_Req, PlayService_SetLocalAudioVolume_Ans>::Pointer ctx);
  105. private:
  106. int m_id;
  107. CLocalMediaPlayEntity* m_pEntity;
  108. };