DlgAudioVideo.h
上传用户:gnaf34
上传日期:2022-04-22
资源大小:1657k
文件大小:10k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * DlgAudioVideo.h
  3.  *
  4.  * Header file
  5.  *
  6.  * Copyright (c) ITEC-Ohio, 2002.
  7.  *
  8.  * The contents of this file are subject to the Mozilla Public License
  9.  * Version 1.0 (the "License"); you may not use this file except in
  10.  * compliance with the License. You may obtain a copy of the License at
  11.  * http://www.mozilla.org/MPL/
  12.  *
  13.  * Software distributed under the License is distributed on an "AS IS"
  14.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  15.  * the License for the specific language governing rights and limitations
  16.  * under the License.
  17.  *
  18.  * The Original Code is Open H323 Library available at http://www.openh323.org
  19.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  20.  *
  21.  */
  22. #if !defined(AFX_DLGAUDIOVIDEO_H__86E3FB36_44BF_45A4_A254_5B6431D05842__INCLUDED_)
  23. #define AFX_DLGAUDIOVIDEO_H__86E3FB36_44BF_45A4_A254_5B6431D05842__INCLUDED_
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "videoio.h"
  28. #include "pwlib.h"
  29. /*
  30. #include <atlbase.h>
  31. #include <windows.h>
  32. #include <dshow.h>
  33. #include <stdio.h>
  34. #include "playcap.h"
  35. */
  36. ///////////////////////////////////////////////////////
  37. /////////////////////////////////////////////////////////////////////////////
  38. // CDlgAudioVideo dialog
  39. class CDlgAudioVideo :  public CDialog
  40. {
  41. // Construction
  42. public:
  43. PVideoChannel *OpenVideoChannel(H323Connection & connection,BOOL isEncoding,H323VideoCodec & codec);
  44. CDlgAudioVideo(CWnd* pParent = NULL);   // standard constructor
  45. // Dialog Data
  46. //{{AFX_DATA(CDlgAudioVideo)
  47. enum { IDD = IDD_DIALOG_AUDIO_VIDEO };
  48. CStatic m_audioVideo;
  49. //CDialog m_audioVideo;
  50. //}}AFX_DATA
  51. // Overrides
  52. // ClassWizard generated virtual function overrides
  53. //{{AFX_VIRTUAL(CDlgAudioVideo)
  54. protected:
  55. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  56. //}}AFX_VIRTUAL
  57. // Implementation
  58. protected:
  59. // Generated message map functions
  60. //{{AFX_MSG(CDlgAudioVideo)
  61. afx_msg void OnButtonPlay();
  62. afx_msg void OnPaint();
  63. afx_msg void OnButtonStop();
  64. afx_msg void OnButtonRecord();
  65. afx_msg void OnTimer(UINT nIDEvent);
  66. //}}AFX_MSG
  67. DECLARE_MESSAGE_MAP()
  68. //friend class VideoDevice;
  69. };
  70. class CDeviceVideoAudio : public H323VideoDevice
  71. {
  72. public:
  73. CDeviceVideoAudio();
  74. ~CDeviceVideoAudio();
  75. static void PlayButton(PVideoChannel   * channelTmp);
  76. static void StopButton();
  77. static void AttachVideoReader(PVideoChannel * channel, H323VideoDevice * displayDevice);
  78. CDlgAudioVideo *mainWindow;
  79. //static BOOL OpenVideoChannel(H323Connection & connection,BOOL isEncoding,H323VideoCodec & codec);
  80. };
  81. ///////////////////////////////////////////////////////
  82. /*
  83. class MainWindow;
  84. class VideoDevice;
  85. class VideoWindow : public PFloatingDialog
  86. {
  87.   PCLASSINFO(VideoWindow, PFloatingDialog);
  88.  
  89.   public:
  90.     VideoWindow(PInteractor * parent, VideoDevice * device, BOOL local);
  91.     ~VideoWindow();
  92.     void SetVideoSize(int _width, int _height);
  93.     BOOL WriteLineSegment(int x, int y, unsigned len, const BYTE * data);
  94.     virtual void OnCancel();
  95.   protected:
  96.     virtual void OnClose();
  97.     virtual void OnRedraw(PCanvas &);
  98.     void Shutdown();
  99.     VideoDevice * device;
  100.     BOOL          localVideo;
  101.     PDrawCanvas * canvas;
  102.     PPixelImage   image;
  103.     PPixelImage   raster;
  104.     PMutex        mutex;
  105. }; 
  106. ///////////////////////////////////////////////////////
  107. class VideoDevice : public H323VideoDevice
  108. {
  109.   PCLASSINFO(VideoDevice, H323VideoDevice);
  110.  
  111.   public:
  112.     VideoDevice(MainWindow * mainWindow, BOOL local, const PString & title, BOOL flip);
  113.     ~VideoDevice();
  114.     virtual BOOL SetFrameSize(unsigned width, unsigned height);
  115.   protected:
  116.     BOOL WriteLineSegment(int x, int y, unsigned len, const BYTE * data);
  117.     VideoWindow * window;
  118.     BOOL          windowOpen;
  119.     BOOL          flip;
  120.   friend class VideoWindow;
  121. }; 
  122. ///////////////////////////////////////////////////////
  123. class MainWindow : public PTopLevelWindow
  124. {
  125.   PCLASSINFO(MainWindow, PTopLevelWindow)
  126.   
  127.   public:
  128.     MainWindow(PArgList & args);
  129.     ~MainWindow();
  130. /*
  131.     PDECLARE_COMMAND_ENABLE("MakeCall",    MainWindow, CallCmd, CanMakeCall);
  132.     PDECLARE_COMMAND_ENABLE("HangupCall",  MainWindow, HangupCmd, CanHangupCall);
  133.     PDECLARE_COMMAND_ENABLE("AcceptCall",  MainWindow, AcceptCallCmd, CanAcceptCall);
  134.     PDECLARE_COMMAND_ENABLE("RefuseCall",  MainWindow, RefuseCallCmd, CanRefuseCall);
  135.     PDECLARE_COMMAND_ENABLE("TransferCall",MainWindow, TransferCmd, CanTransferCall);
  136.     PDECLARE_COMMAND_ENABLE("HoldCall",    MainWindow, HoldCmd, CanHoldCall);
  137.     PDECLARE_COMMAND_ENABLE("IntrudeCall", MainWindow, IntrudeCmd, CanIntrudeCall);
  138.     PDECLARE_NOTIFIER(PMenuItem, MainWindow, UserInputCmd);
  139.     PDECLARE_COMMAND_ENABLE("ShowStats",   MainWindow, ShowStatsCmd, CanShowStats);
  140.     PDECLARE_COMMAND_ENABLE("MuteMicrophone", MainWindow, MuteMicrophoneCmd, CanMuteMicrophone);
  141.     PDECLARE_COMMAND_ENABLE("MuteSpeaker", MainWindow, MuteSpeakerCmd, CanMuteSpeaker);
  142.     PDECLARE_COMMAND_ENABLE("RecordMedia", MainWindow, RecordMediaCmd, CanRecordMedia);
  143.     PDECLARE_COMMAND_ENABLE("StopRecording", MainWindow, StopRecordingCmd, CanStopRecording);
  144.     PDECLARE_COMMAND("ExitCmd", MainWindow, ExitCmd);
  145.     PDECLARE_COMMAND("SpeedDialOptions",  MainWindow, SpeedDialOptionsCmd);
  146.     PDECLARE_COMMAND("GeneralOptions",    MainWindow, GeneralOptionsCmd);
  147.     PDECLARE_COMMAND("NetworkingOptions", MainWindow, NetworkingOptionsCmd);
  148.     PDECLARE_COMMAND("ForwardingOptions", MainWindow, ForwardingOptionsCmd);
  149.     PDECLARE_COMMAND_ENABLE("GatekeeperOptions", MainWindow, GatekeeperOptionsCmd, CanSetGatekeeper);
  150.     PDECLARE_COMMAND("AudioDeviceOptions",MainWindow, AudioDeviceOptionsCmd);
  151.     PDECLARE_COMMAND("AudioCodecOptions", MainWindow, AudioCodecOptionsCmd);
  152.     PDECLARE_COMMAND("VideoOptions",      MainWindow, VideoOptionsCmd);
  153. #if PTRACING
  154.     PDECLARE_COMMAND("TraceOptions",      MainWindow, TraceOptionsCmd);
  155. #endif
  156.     PDECLARE_NOTIFIER(PTextButton, MainWindow, OnCallButton);
  157.     PDECLARE_NOTIFIER(PTextButton, MainWindow, OnIntrudeButton);
  158.     PDECLARE_NOTIFIER(PTextButton, MainWindow, OnAnswerButton);
  159.     PDECLARE_NOTIFIER(PTextButton, MainWindow, OnRefuseButton);
  160.     PDECLARE_NOTIFIER(PTextButton, MainWindow, OnHangUpButton);
  161.     PDECLARE_NOTIFIER(PTextButton, MainWindow, OnSpeakerButton);
  162.     PDECLARE_NOTIFIER(PTextButton, MainWindow, OnTransferButton);
  163.     PDECLARE_NOTIFIER(PTextButton, MainWindow, OnHoldButton);
  164.     PDECLARE_NOTIFIER(PTextButton, MainWindow, OnSpeedDialButton);
  165.     PDECLARE_NOTIFIER(PCheckBox, MainWindow, OnSpeakerEnable);
  166.     PDECLARE_NOTIFIER(PCheckBox, MainWindow, OnMicrophoneEnable);
  167.     PDECLARE_NOTIFIER(PHorizontalScrollBar, MainWindow, OnSpeakerVolume);
  168.     PDECLARE_NOTIFIER(PHorizontalScrollBar, MainWindow, OnMicrophoneVolume);
  169.     void OutputStatus(PRESOURCE_ID strId, ...);
  170.     virtual BOOL AllowClose(BOOL closingAll);
  171.     virtual void OnClose();
  172.     virtual void OnResize(const PDim & newSize, ResizeType type);
  173.     BOOL OnAnswerCall(const H323Connection & connection);
  174.     BOOL OnConnectionForwarded(const PString &);
  175.     void OnConnectionEstablished(const PString & token, const PString & party);
  176.     void OnConnectionCleared(const H323Connection & connection);
  177.     void OnLogicalChannel(const H323Channel & channel, unsigned txStrID, unsigned rxStrID);
  178.     void OnHandsetLifted(OpalLineInterfaceDevice & lid);
  179.     void OnHandsetReturned(OpalLineInterfaceDevice & lid);
  180.     void SendUserInput(char tone);
  181.     enum CallMode {
  182.       IdleCallMode,
  183.       MakingCallMode,
  184.       HangingUpMode,
  185.       IncomingCallWait,
  186.       IncomingLineCall,
  187.       Active323CallMode,
  188.       ActiveLineCallMode,
  189.       NoGatekeeperMode,
  190.       ApplicationShuttingDown,
  191.       IncomingCallIntrusion
  192.     };
  193.     CallMode GetCallMode() const { return currentCallMode; }
  194.     void SetCallMode(CallMode mode);
  195.     StatisticsDlg * statisticsDialog;
  196.   private:
  197.     void AddSpeedDialButtons();
  198.     BOOL SpeedDial(const PString & key);
  199.     BOOL MakeCall(const PString & address, const PString & gateway);
  200.     BOOL IntrudeCall(const PString & address, const PString & gateway, unsigned capabilityLevel);
  201.     void AnswerCall(BOOL accept);
  202.     OpenPhoneEndPoint endpoint;
  203.     // User interface variables
  204.     MainMenu *  myMainMenu;
  205.     PStringListBox * statusWindow;
  206.     PTextButton * makeCallButton;
  207.     PTextButton * answerButton;
  208.     PTextButton * refuseButton;
  209.     PTextButton * hangUpButton;
  210.     PTextButton * transferButton;
  211.     PTextButton * holdButton;
  212.     PTextButton * intrudeCallButton;
  213.     PTextButton * speakerButton;
  214.     PCheckBox * speakerEnable;
  215.     PHorizontalScrollBar * speakerVolume;
  216.     VUMeter * speakerVU;
  217.     PCheckBox * microphoneEnable;
  218.     PHorizontalScrollBar * microphoneVolume;
  219.     VUMeter * microphoneVU;
  220.     PInteractorList speedDialButtons;
  221.     PTimer ringSoundTimer;
  222.     PDECLARE_NOTIFIER(PTimer, MainWindow, OnRingSoundAgain);
  223.     PString       noAnswerForwardParty;
  224.     PTimeInterval noAnswerTime;
  225.     PTimer        noAnswerTimer;
  226.     PDECLARE_NOTIFIER(PTimer, MainWindow, OnNoAnswerTimeout);
  227.     PTimer vuTimer;
  228.     PDECLARE_NOTIFIER(PTimer, MainWindow, OnUpdateVU);
  229.     // Configuration variables
  230.     BOOL    autoAnswer;
  231.     PINDEX  maxRecentCalls;
  232.     PString ringSoundFile;
  233.     // State variables
  234.     CallMode currentCallMode;
  235.     PMutex   callModeMutex;
  236.     PString  currentCallToken;
  237.     BOOL     speakerphoneSwitch;
  238.     OpalRtpToWavFile * recorder;
  239. #if PTRACING
  240.     BOOL OpenTraceFile(PConfig & config);
  241.     PTextFile * myTraceFile;
  242. #endif
  243.   
  244. };
  245. */
  246. //{{AFX_INSERT_LOCATION}}
  247. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  248. #endif // !defined(AFX_BEACONCLIENTDLG_H__6386ECCD_8A62_45C0_AAD9_3C47136CF73A__INCLUDED_)