修改三方通话功能,在发起三方通话时,先保持住主叫,然后再拉回主叫到会议

DspChannel.h 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*************************************************************************
  2. 【文件名】 DspChannel.h
  3. 【功能模块和目的】 DSP语音通道类头文件
  4. 【开发者及日期】 郑石诺 2015/03/19
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. #include "ChannelResource.h"
  11. class CMixer;
  12. class CDevDsp;
  13. /*************************************************************************
  14. 【类名】 CDspChannel
  15. 【功能】
  16. 【接口说明】 DSP语音通道类
  17. 【开发者及日期】 郑石诺 2015/03/19
  18. 【版本】 V1.0.0
  19. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  20. 【更改记录】
  21. *************************************************************************/
  22. class CDspChannel : public CChannelResource
  23. {
  24. public:
  25. CDspChannel(DEV_RES_CH_TYPE ChannelNo, DEV_RES_NO_TYPE NodeNo, DEV_RES_NO_TYPE BoardNo);
  26. virtual ~CDspChannel(void);
  27. // 操作接口
  28. void reset(void);
  29. void attach(CMixer* pMixer) { m_pMixer = pMixer; }
  30. bool playSound(PlayVoiceContent* pContent);
  31. bool playTone(int ToneTp);
  32. bool startRecord(RecordContent* pContent);
  33. bool stopRecord(void);
  34. bool setVoiceMode(int Mode);
  35. void joinMeeting(void) { ASSERT(m_Job == DEV_VOC_JOB_NONE); m_Job = DEV_VOC_JOB_MEETING; }
  36. void quitMeeting(void) { m_Job = DEV_VOC_JOB_NONE; }
  37. ////////////////////////////////////////////////////////////////////////////////
  38. //继承自CChannelResource
  39. bool open(void);
  40. void close(void);
  41. bool isFree(void) const { return m_pMixer == NULL && !isBusy(); }
  42. bool isBusy(void) const { return m_IsRecording || (m_Job != DEV_VOC_JOB_NONE); }
  43. int type(void) const { return SC_VOX; }
  44. LPCTSTR getStateStr(void) const;
  45. void onDevEvent(METAEVENT* pMetaEvent);
  46. private:
  47. bool __constructPlayStruct(PlayVoiceContent* pContent);
  48. void __construcRecStruct(RecordContent* pContent);
  49. void __constructDtmfStruct(void);
  50. bool __replay(void);
  51. bool __redoGetDigit(void);
  52. void __onPlayStart(void);
  53. void __onPlayEnd(void);
  54. void __onRecordStart(void);
  55. void __onRecordEnd(void);
  56. void __onGotDigit(void);
  57. void __onError(void);
  58. private:
  59. CMixer* m_pMixer;
  60. TCHAR m_AudioFilePlay[MAX_PATH];
  61. TCHAR m_AudioFileRec[MAX_PATH];
  62. DX_IOTT m_IottPlay[2];
  63. DX_IOTT m_IottRec;
  64. DV_TPT m_TptPlay[4];
  65. DV_TPT m_TptRec[2];
  66. DX_XPB m_XpbPlay;
  67. DX_XPB m_XpbRec;
  68. DV_DIGIT m_DigitBuf;
  69. DEV_VOICE_JOB_TYPE m_Job;
  70. bool m_IsRecording;
  71. };