亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? h323.h

?? 這是一個OPENH323中的MCU程序
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*
 * mcu.h
 *
 * H323 routines for a simple MCU
 *
 * Copyright (C) 1993-1998 Equivalence Pty. Ltd.
 * Copyright (C) 2006 Post Increment
 *
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.0 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
 * the License for the specific language governing rights and limitations
 * under the License.
 *
 * The Original Code is Portable Windows Library.
 *
 * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
 *
 * Portions of ths code were written by by Post Increment (http://www.postincrement.com) 
 * with the assistance of funding from Stonevoice, slc. http://www.stonevoice.com
 *
 * Portions of this code were written by Post Increment (http://www.postincrement.com) 
 * with the assistance of funding from Citron Networks (http://www.citron.com.tw)
 *
 * Contributor(s): Derek J Smithies (derek@indranet.co.nz)
 *                 Craig Southeren (craig@postincrement.com)
 *
 * $Log: h323.h,v $
 * Revision 1.1  2007/10/17 19:44:30  shorne
 * Initial Commit
 *
 * Revision 2.6.2.1  2007/08/16 20:29:01  shorne
 * Better Gatekeeper anf Gateway prefix support
 *
 * Revision 2.6  2006/08/02 06:24:53  csoutheren
 * Add provision for recording input audio
 *
 * Revision 2.5  2006/07/21 08:01:40  csoutheren
 * Fixed conference member detect
 * Re-factored video mixer code slightly
 *
 * Revision 2.4  2006/07/21 05:52:51  csoutheren
 * Add flag to indicate if remote endpoint is an MCU
 *
 * Revision 2.3  2006/07/21 05:08:03  csoutheren
 * Stability fixes and more inline documentation
 * Thanks to Paolo Amadini of Stonevoice
 *
 * Revision 2.2  2006/06/21 06:11:36  csoutheren
 * Fixes for latest pwlib
 *
 * Revision 2.1  2006/06/09 04:39:59  csoutheren
 * Migrated VideoBranch to main trunk
 *
 * Revision 1.1.2.6  2006/05/31 08:48:02  csoutheren
 * Fixed crash on second call when entry/exit files do not exist
 * Fix crash when Cisco HOLD used. Thanks to Christian Bongiovanni of Stonevoice
 *
 * Revision 1.1.2.5  2006/04/26 13:09:08  csoutheren
 * Fix problem when connecting file not available
 * Add optional time limit for rooms
 *
 * Revision 1.1.2.4  2006/04/06 08:20:29  csoutheren
 * Retyped conference member identifier to epxlicit type
 * Added support for H.245 terminal added and terminal left
 *
 * Revision 1.1.2.3  2006/04/06 01:11:16  csoutheren
 * Latest sources include
 *   - premedia blanking and optional image display
 *   - ablity to defer conference join for authentication if required
 *   - more bulletproofing on conference join
 *   - new video copy/fill functions
 *
 * Revision 1.3  2006/04/04 08:18:11  craigs
 * Latest version with titling and fixed PINs
 *
 * Revision 1.2  2006/04/03 12:52:54  craigs
 * Add GUI switch for custom mixer
 * Add fix for QCIF pre-media frame
 * Add start of code for room switch
 *
 * Revision 1.1  2006/03/31 07:36:12  craigs
 * New version with PINs and premedia blanking
 *
 * Revision 1.1.2.1  2006/03/28 05:13:38  csoutheren
 * Normalised file headers
 * Fixed problem with QCIF video
 * Seperated H.323 and MCU process functions into seperate files
 *
 */

#ifndef _OpenMCU_H323_H
#define _OpenMCU_H323_H

#ifdef _WIN32
#pragma warning(disable:4786)
#endif

#include <ptlib.h>
#include <ptlib/videoio.h>
#include <opalwavfile.h>

#include "config.h"
class OpenMCUH323EndPoint : public H323EndPoint
{
  PCLASSINFO(OpenMCUH323EndPoint, H323EndPoint);

  public:
    OpenMCUH323EndPoint(ConferenceManager & conferenceManager);
    
    PString IncomingConferenceRequest(H323Connection & connection, 
                                      const H323SignalPDU & setupPDU);

    BOOL OutgoingConferenceRequest(const PString & room);

    // overrides from H323EndPoint
    virtual H323Connection * CreateConnection(unsigned callReference,void * userData,H323Transport * transport,H323SignalPDU * setupPDU);
    virtual void TranslateTCPAddress(PIPSocket::Address &localAddr, const PIPSocket::Address &remoteAddr);

    BOOL behind_masq;
    PIPSocket::Address *masqAddressPtr;

    // new functions
    void Initialise(PConfig & cfg, PConfigPage * rsrc);

    PString GetRoomStatus(const PString & block);
    PString GetMonitorText();

    ConferenceManager & GetConferenceManager()
    { return conferenceManager; }

#if OPENMCU_VIDEO
    unsigned GetVideoTxQuality() const
    { return videoTxQuality; }

    unsigned GetVideoFrameRate() const
    { return videoRate; }
#endif

  protected:
#if OPENMCU_VIDEO
    BOOL enableVideo;
    unsigned videoRate;
    unsigned videoTxQuality;
#endif
	
	PString gkAlias;
	PStringList PrefixList;
	PStringList AliasList;


  protected:
    ConferenceManager & conferenceManager;
};

////////////////////////////////////////////////////

class OpenMCUH323Connection;

class OutgoingAudio : public PChannel
{
  PCLASSINFO(OutgoingAudio, PChannel);

  public:
    OutgoingAudio(H323EndPoint & ep, OpenMCUH323Connection & conn);
    
    BOOL Read(void * buffer, PINDEX amount);
    BOOL Close();

  protected:
    void CreateSilence(void * buffer, PINDEX amount);

    H323EndPoint & ep;
    OpenMCUH323Connection & conn;

    PAdaptiveDelay delay;
    PMutex audioChanMutex;
};

////////////////////////////////////////////////////

class IncomingAudio : public PChannel
{
  PCLASSINFO(IncomingAudio, PChannel);

  public:
    IncomingAudio(H323EndPoint & ep, OpenMCUH323Connection & conn);

    BOOL Write(const void * buffer, PINDEX amount);
    BOOL Close();

  protected:
    H323EndPoint & ep;
    OpenMCUH323Connection & conn;
    PMutex audioChanMutex;
    PAdaptiveDelay delay;
};

////////////////////////////////////////////////////

class NotifyH245Thread : public PThread
{
  public:
    NotifyH245Thread(Conference & conference, BOOL _join, ConferenceMember * _memberToIgnore);
    void Main();

  protected:
    BOOL join;
    ConferenceMember * memberToIgnore;
    PStringArray tokens;
    int mcuNumber;
    int terminalIdToSend;
};

////////////////////////////////////////////////////

class H323Connection_ConferenceMember;
class PVideoInputDevice_OpenMCU;
class PVideoOutputDevice_OpenMCU;

class OpenMCUH323Connection : public H323Connection
{
  PCLASSINFO(OpenMCUH323Connection, H323Connection);

  public:
    OpenMCUH323Connection(OpenMCUH323EndPoint &, unsigned, void *);
    ~OpenMCUH323Connection();

    virtual void LeaveConference();

    // overrides from H323Connection
    virtual BOOL OpenAudioChannel(BOOL, unsigned,   H323AudioCodec & codec);
#if OPENMCU_VIDEO
    virtual BOOL OpenVideoChannel(BOOL isEncoding, H323VideoCodec & codec);
#endif
		virtual void CleanUpOnCallEnd();
    virtual void OnEstablished();
    virtual AnswerCallResponse OnAnswerCall(const PString &, const H323SignalPDU &, H323SignalPDU &);
    virtual void OnUserInputString(const PString & value);
    virtual BOOL OnReceivedSignalSetup(const H323SignalPDU & setupPDU);
    virtual BOOL OnReceivedCallProceeding(const H323SignalPDU & proceedingPDU);

    virtual BOOL OnIncomingAudio(const void * buffer, PINDEX amount);
    virtual BOOL OnOutgoingAudio(void * buffer, PINDEX amount);
    virtual PString GetAudioTransmitCodecName() const { return audioTransmitCodecName; }
    virtual PString GetAudioReceiveCodecName() const  { return audioReceiveCodecName; }
    virtual PString GetRemoteName() const             { return remoteName; }

#if OPENMCU_VIDEO
    virtual BOOL OnIncomingVideo(const void * buffer, int width, int height, PINDEX amount);
    virtual BOOL OnOutgoingVideo(void * buffer, int width, int height, PINDEX & amount);
    virtual PString GetVideoTransmitCodecName() const { return videoTransmitCodecName; }
    virtual PString GetVideoReceiveCodecName() const  { return videoReceiveCodecName; }
    virtual BOOL GetPreMediaFrame(void * buffer, int width, int height, PINDEX & amount);
#endif

  protected:
    virtual void LogCall(const BOOL accepted = TRUE);
    virtual void JoinConference(const PString & room);

#if OPENMCU_VIDEO
    virtual BOOL InitGrabber(PVideoInputDevice  * grabber, int frameWidth, int frameHeight);
#endif

    PMutex connMutex;
    OpenMCUH323EndPoint & ep;

    // Name of the room to join when the welcome procedure ends.
    //  This is usually initialized when the call is answered,
    //  before the welcome procedure begins.
    PString requestedRoom;

    // Room the connection is joined to. It is NULL before the
    //  welcome procedure ends, or after the member is disconnected
    //  from the conference.
    Conference * conference;

    // Object used to treat the connection as a conference member.
    //  It is NULL before the connection is joined to the conference,
    //  or after the member is disconnected from the conference.
    H323Connection_ConferenceMember * conferenceMember;

    // Valid states for the welcome procedure. Note that new states may
    //  be added because the procedure can be customized by subclassing.
    enum WelcomeStates {
      // Reserved, never switch to this state
      NotStartedYet,

      // First state, by default jumps to PlayingConnecting
      PlayingWelcome,

      // Plays connecting wave file, then jumps to CompleteConnection
      PlayingConnecting,

      // Jumping here causes the connection to be joined to requestedRoom
      CompleteConnection,

      // The system jumps here if the join to the conference fails
      JoinFailed,

      // The system jumps here when the member is disconnected
      ConferenceEnded,

      // Use this as the starting value for custom sates in subclasses
      CustomWelcome_FirstUsableValue
    };

    // This is the current state of the welcome procedure. It is not
    //  declared using type WelcomeStates to allow the use of custom
    //  enumerated values.
    int welcomeState;

    // Use this function to change the current state. This call fires
    //  the OnWelcomeStateChanged callback immediately.
    void ChangeWelcomeState(int newState);

    // Call this function during the OnWelcomeStateChanged callback
    //  to play a new wave file during the welcome procedure. If
    //  useTheFile is FALSE, fileToPlay is empty or the file does
    //  not exist, the currently playing wave file is stopped and
    //  the OnWelcomeWaveEnded callback will be called anyway (as
    //  if an empty wave file has been played).
    void PlayWelcomeFile(BOOL useTheFile, PFilePath & fileToPlay);

    // Called whenever the current state changes. Use welcomeState
    //  to know the current (new) state.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产婷婷色一区二区三区在线| 在线观看91视频| 欧美精品一区二区三区视频| 日韩av一二三| 久久久综合九色合综国产精品| 风流少妇一区二区| 中文字幕一区二| 欧日韩精品视频| 精品国产第一区二区三区观看体验 | 色999日韩国产欧美一区二区| 欧美亚洲禁片免费| 天堂资源在线中文精品| 日韩一区二区三区视频在线观看| 毛片av一区二区| 国产免费观看久久| 欧美午夜精品久久久久久超碰| 图片区小说区国产精品视频| 欧美电影免费观看高清完整版 | 日本韩国欧美一区二区三区| 亚洲国产精品视频| 精品女同一区二区| www.欧美.com| 午夜影院在线观看欧美| 欧美极品xxx| 在线观看亚洲精品视频| 国产一区二区三区免费看| 亚洲欧美二区三区| 日韩欧美美女一区二区三区| 成人不卡免费av| 免费成人在线观看| 亚洲欧美偷拍卡通变态| 日韩免费高清av| 色诱亚洲精品久久久久久| 久久精品99国产精品日本| 国产精品国产a| 91精品在线观看入口| 91在线一区二区| 国产综合一区二区| 一区二区在线电影| 国产亚洲综合性久久久影院| 欧美精品久久一区| 91丨九色porny丨蝌蚪| 久久99久久久欧美国产| 亚洲人成在线播放网站岛国| 久久青草欧美一区二区三区| 7799精品视频| 在线观看网站黄不卡| 高清国产一区二区| 久久av中文字幕片| 日本特黄久久久高潮| 亚洲精品成a人| 欧美国产97人人爽人人喊| 精品国产自在久精品国产| 欧美性大战久久| 色诱亚洲精品久久久久久| 成人黄色777网| 精品一区二区精品| 首页国产丝袜综合| 亚洲一区二区三区四区在线免费观看| 欧美激情综合网| 国产亚洲人成网站| 精品奇米国产一区二区三区| 777a∨成人精品桃花网| 欧美视频在线播放| 色一情一乱一乱一91av| 成人黄动漫网站免费app| 国产成人av一区二区三区在线观看| 国内精品嫩模私拍在线| 麻豆精品视频在线观看| 麻豆一区二区三区| 美女视频一区二区| 久久99精品网久久| 九九九久久久精品| 国内精品视频666| 国产精品一二三| 岛国精品在线观看| av一区二区久久| 91麻豆视频网站| 在线免费观看日韩欧美| 91成人免费电影| 欧美手机在线视频| 欧美日本一区二区| 日韩一级视频免费观看在线| 精品国产制服丝袜高跟| 久久影院电视剧免费观看| 久久久国产一区二区三区四区小说 | 国产一区二区三区免费观看| 国产美女在线精品| 成人激情综合网站| 91一区一区三区| 欧美日韩久久不卡| 日韩欧美中文字幕公布| 久久久欧美精品sm网站| 精品少妇一区二区三区| 久久久久国色av免费看影院| 国产精品久久99| 夜夜亚洲天天久久| 男人的天堂久久精品| 国产成人久久精品77777最新版本| 豆国产96在线|亚洲| 91免费版在线| 在线播放亚洲一区| 久久久夜色精品亚洲| 一区免费观看视频| 亚洲国产aⅴ成人精品无吗| 麻豆高清免费国产一区| 国产不卡视频在线播放| 97精品久久久午夜一区二区三区 | 综合自拍亚洲综合图不卡区| 亚洲国产一二三| 国内精品久久久久影院一蜜桃| 国产91对白在线观看九色| 欧美三级电影在线看| 久久综合狠狠综合久久综合88 | 欧美激情综合在线| 图片区日韩欧美亚洲| 国产成人免费高清| 7777精品伊人久久久大香线蕉| 久久精品视频免费| 天堂午夜影视日韩欧美一区二区| 国产精品18久久久久久久久| 在线视频一区二区三区| 国产网红主播福利一区二区| 亚洲成人你懂的| 成人av在线网站| 日韩视频国产视频| 一区二区三区四区中文字幕| 国产在线播放一区二区三区| 欧美视频在线一区二区三区| 中文字幕成人在线观看| 日韩高清不卡在线| 91成人免费在线| 国产精品成人免费在线| 久久99精品国产| 欧美日韩国产在线播放网站| 日韩一区中文字幕| 国内一区二区在线| 欧美一级免费观看| 亚洲福利视频三区| 91农村精品一区二区在线| 国产日韩精品一区二区三区在线| 天天操天天色综合| 欧美艳星brazzers| 国产精品高潮呻吟| 岛国av在线一区| 国产亚洲一区字幕| 国内精品伊人久久久久av一坑| 在线电影院国产精品| 一区2区3区在线看| 99精品久久99久久久久| 久久精品一区二区三区四区| 理论片日本一区| 欧美一区二区在线视频| 亚洲国产精品久久人人爱蜜臀| 99国产麻豆精品| 国产精品伦理一区二区| 国产麻豆精品在线观看| 久久综合久久综合久久| 极品美女销魂一区二区三区免费| 欧美一级黄色大片| 麻豆久久久久久| 欧美一区二区福利在线| 免费一区二区视频| 日韩精品最新网址| 久久国产精品露脸对白| 91精品福利在线一区二区三区| 午夜精品久久久久久不卡8050| 欧美日韩一区二区三区高清| 亚洲第一成人在线| 欧美一区二区私人影院日本| 丝袜美腿亚洲综合| 欧美久久久久久蜜桃| 日本麻豆一区二区三区视频| 欧美一区二区三区四区高清| 美女视频网站黄色亚洲| 精品精品欲导航| 国产麻豆日韩欧美久久| 国产精品久久久久一区 | 国产丶欧美丶日本不卡视频| 国产欧美在线观看一区| youjizz久久| 一区二区三区在线播放| 欧美日本国产视频| 久久精品国产秦先生| 久久久蜜臀国产一区二区| 丁香婷婷深情五月亚洲| 一区二区三区日韩欧美| 欧美人伦禁忌dvd放荡欲情| 久草这里只有精品视频| 国产精品久久久久久妇女6080| 91久久一区二区| 日本一区中文字幕| 国产午夜一区二区三区| 色88888久久久久久影院野外| 亚洲第一二三四区| 精品成人佐山爱一区二区| www.激情成人| 亚洲成人在线免费| 精品福利av导航| 色婷婷av久久久久久久|