⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h323exp.h

📁 VIS H.323 Library V2.1 Release
💻 H
字号:
/*VIS H.323 DLL Library V2.1 Release
  FOR Windows 98/ME/2000/XP
-------------------------------------------------------------------------------------
  =========
  h323exp.h
  =========
  The head file of VIS H.323 DLL Library

  You can easily make your own H.323 Video Conference System with this library.

  For more information,visit our homepage 
  
    [http://www.115studio.com]

  or for tech support,mail to   

    [support@115studio.com]
  
  NOTE:
    Please don't modify this file.

  Copyright (c) 2000-2004 115Studio 

  2004-04-05
------------------------------------------------------------------------------------*/
#ifndef _H323EXP_H_
#define _H323EXP_H_

//the codestatus of you application
enum CodeStatus {
      AlphaCode,    
      BetaCode,     
      ReleaseCode,  
    };
//
enum VideoFormat{
	VS_SQCIF,
	VS_QCIF,
	VS_CIF,
	VS_4CIF,
	VS_16CIF
};
//the silence detection mode
enum SilenceDetectionMode {
      NoSilenceDetection,
      FixedSilenceDetection,
      AdaptiveSilenceDetection
    };

//the call end reason
enum CallEndReason {
      EndedByLocalUser,         // Local endpoint cleared call
      EndedByNoAccept,          // Local endpoint did not accept call
      EndedByAnswerDenied,      // Local endpoint refuse to answer call
      EndedByRemoteUser,        // Remote endpoint cleared call
      EndedByRefusal,           // Remote endpoint refused call
      EndedByNoAnswer,          // Remote endpoint did not answer
      EndedByCallerAbort,       // Remote endpoint stopped calling
      EndedByTransportFail,     // Transport error
      EndedByConnectFail,       // Transport connection failed to establish call
      EndedByGatekeeper,        // Gatekeeper has cleared call
      EndedByNoUser,            // Call failed as could not find user (in GK)
      EndedByNoBandwidth,       // Call failed as could not get enough bandwidth
      EndedByCapabilityExchange,// Could not find common capabilities
      EndedByCallForwarded,     // Call was forwarded using FACILITY message
      EndedBySecurityDenial,    // Call failed a security check and was ended
      EndedByLocalBusy,         // Local endpoint busy
      EndedByLocalCongestion,   // Local endpoint congested
      EndedByRemoteBusy,        // Remote endpoint busy
      EndedByRemoteCongestion,  // Remote endpoint congested
      EndedByUnreachable,       // Could not reach the remote party
      EndedByNoEndPoint,        // The remote party is not running an endpoint
      EndedByHostOffline,       // The remote party host off line
      EndedByTemporaryFailure,  // The remote failed temporarily app may retry
    };
//result of using GK
enum UseGKResult {	  
      RegistrationSuccessful,
      InvalidListener,
      DuplicateAlias,
      SecurityDenied,
	  TransportError,
	  NoGatekeeper,  
	  FailUnknown
    };

//status of h.323 connection
enum ConnStatus {	
	ConnNotExist,
	MakingCall,
	IncomingCallWait,
	WaitingForAnswer,
	ConnEstablished,
	HangingUp
};

//modes of sending user input(DTMF)
enum SendUserInputModes {
    SUI_Q931,
    SUI_H245String,
    SUI_H245Signal,
    SUI_RFC2833
};

//to determine whether H.263 codec available
BOOL IsH263Available();
//H323 endpoint class
class CH323EndPoint
{ 
public:
	
	CH323EndPoint(BOOL SingleMode = FALSE);
	virtual ~CH323EndPoint();

	BOOL Initialize(const char*company,
		const char *product,
		WORD majorVersion,
		WORD minorVersion,
		enum CodeStatus status,
		WORD buildNumber);
	BOOL StartListen(const char *IP = NULL,WORD port = 1720);
	BOOL Authorise(const char* code);
	
	void EnableFastStart(BOOL b=TRUE);
	void EnableH245Tunnel(BOOL b=TRUE);
	void EnableH245inSetup(BOOL b=TRUE);
	DWORD GetInitialBandwidth() const;
	void SetInitialBandwidth(DWORD bandwidth=10000000);

	BOOL MakeCall(DWORD & connID,const char* address);
	BOOL HangUp(DWORD connID=0);
	BOOL AnswerCall(DWORD connID,BOOL accept=TRUE);

	DWORD GetNoAnswerTimeout();
	void SetNoAnswerTimeout(DWORD second);

	void SetMaxConnection(DWORD max);
	DWORD GetMaxConnection() const;

	BOOL GetConnectionDuration(DWORD connID,DWORD &duration) const;	
	enum ConnStatus GetConnectionStatus(DWORD connID) const;
	DWORD GetConnectionCount() const;
	
	virtual void OnAnswerCall(DWORD connID,const char *RoomID);
	virtual void OnWaitForAnswer(DWORD connID);
	virtual void OnConnectionCleared(DWORD connID, DWORD duration,enum CallEndReason reason);
	virtual void OnConnectionEstablished(DWORD connID);

	BOOL GetRemotePartyName(DWORD connID,char *RemotePartyName,int len) const;
	BOOL GetRemoteApplication(DWORD connID,char *app,int len) const;
	BOOL GetRemoteAddress(DWORD connID,char *address,int len) const;
	
	BOOL SendUserInput(DWORD connID,const char *value,enum SendUserInputModes mode = SUI_H245String);
	virtual void OnReceiveUserInput(DWORD connID,const char* value);

	BOOL IsAudioHold(DWORD connID,BOOL outgoing) const;
	BOOL HoldAudio(DWORD connID,BOOL outgoing=TRUE,BOOL hold=TRUE);

	DWORD GetAudioSignalLevel(DWORD connID,BOOL outgoing) const;
	
	BOOL StartSendAudio(DWORD connID);
	BOOL StopSendAudio(DWORD connID);

	virtual BOOL OnRenderAudioFrame(DWORD connID,BYTE* frame,int len);
	virtual BOOL OnReadAudioFrame(DWORD connID,BYTE* frame,int len);
	
	virtual BOOL OnAudioStop(DWORD connID, BOOL outgoing,const char *CodecName);
	virtual BOOL OnAudioStart(DWORD connID,BOOL outgoing,const char *CodecName);

	BOOL SetSilenceDetectionMode(
		DWORD connID,
      enum SilenceDetectionMode mode=NoSilenceDetection, 
      DWORD threshold = 0);    
	BOOL GetSilenceDetectionMode(DWORD connID,enum SilenceDetectionMode& mode,DWORD &threshold) const;

	BOOL SetMaxAudioDelayJitter(DWORD connID,DWORD jitter=60);
	BOOL GetMaxAudioDelayJitter(DWORD connID,DWORD &jitter) const;
		
	BOOL SetVideoSize(DWORD connID,enum VideoFormat size=VS_QCIF);
	BOOL GetVideoSize(DWORD connID,enum VideoFormat &size) const;

	BOOL SetVideoQuality(DWORD connID,DWORD quality=50);
	BOOL GetVideoQuality(DWORD connID,DWORD &quality) const;

	BOOL IsVideoHold(DWORD connID,BOOL outgoing=TRUE) const;
	BOOL HoldVideo(DWORD connID,BOOL outgoing=TRUE,BOOL hold=TRUE);

	void AutoSendVideo(BOOL b=TRUE);

	BOOL StartSendVideo(DWORD connID);
	BOOL StopSendVideo(DWORD connID);

	
	virtual BOOL OnRenderVideoFrame(DWORD connID,BYTE *frame, int width, int height);
	virtual BOOL OnReadVideoFrame(DWORD connID,BYTE* frame,int width,int height);
	
	virtual BOOL OnVideoStop(DWORD connID,BOOL outgoing,const char *CodecName);
	virtual BOOL OnVideoStart(DWORD connID,BOOL outgoing,const char* CodecName);

	BOOL SetPreferredAudioCodec(int index=0);
	int GetPreferredAudioCodec() const;
	DWORD GetAudioCodecCount() const;
	BOOL GetAudioCodecName(int index,char* name,int len) const;	
			
	DWORD GetVideoFrameReceived(DWORD connID) const;
	DWORD GetVideoFrameSent(DWORD connID) const;
	DWORD GetVideoDataReceived(DWORD connID) const;
	DWORD GetVideoDataSent(DWORD connID) const;
	DWORD GetAudioDataReceived(DWORD connID) const;
	DWORD GetAudioDataSent(DWORD connID) const;
	
	void GetUserAlias(char* alias,int len) const;
	void GetUserName(char* name,int len) const;
	void SetUserName(const char *name,const char *alias);

	BOOL UnuseGatekeeper();
	BOOL UseGatekeeper(const char* host,const char *password);

	BOOL GetGateKeeperName(char *name,int len);
	virtual void OnUseGatekeeper(enum UseGKResult result,const char* name_GK);
	
private:
	void* m_pep;	

};

#define VG_VFW 1
#define VG_DS  2

class CVideoGrabber
{
public:	

	CVideoGrabber();
	virtual ~CVideoGrabber();

	BOOL Open(int index=0,int fps=15);
	BOOL Close();
	BOOL IsOpened() const;

	BOOL Read(void *frame,int width,int height);

	BOOL StartStream(int width,int height);
	BOOL StopStream();
	
	BOOL GetDeviceName(int index, char *name, int len);
	DWORD GetDeviceCount();

	BOOL SetGrabberMode(DWORD mode = VG_VFW);

	virtual void OnStream(BYTE *frame,int width,int height);

private:

	void *m_sync;
	void *m_device;	

};

class CAudioRecorder
{
public:

	CAudioRecorder();
	virtual ~CAudioRecorder();

	BOOL Open(int index=0);
	BOOL Close();
	BOOL IsOpened() const;

	BOOL Read(void *frame,int len);

	static BOOL GetDeviceName(int index, char *name, int len);
	static DWORD GetDeviceCount();

private:

	void *m_sync;
	void *m_device;
};

class CAudioPlayer
{
public:
	CAudioPlayer();
	virtual ~CAudioPlayer();

	BOOL Open(int index=0);
	BOOL Close();
	BOOL IsOpened() const;
	
	BOOL Write(BYTE *frame,int len);

	static BOOL GetDeviceName(int index, char *name, int len);
	static DWORD GetDeviceCount();
		
private:

	void *m_sync;
	void *m_device;
	
};

#define VOL_IN 0
#define VOL_OUT 1
class CVolumeCtrl
{
public:

	CVolumeCtrl();
	virtual  ~CVolumeCtrl();

	BOOL Open(int index=0,BOOL direction=VOL_OUT);
	BOOL Close();
	BOOL IsOpened() const;

	BOOL SetVolume(DWORD value);
	DWORD GetVolume();	

	virtual void OnVolumeChanged(DWORD value);
private:

    void *m_vd;
	
};

class CAudioMixer
{
public:
	
	CAudioMixer();
	virtual ~CAudioMixer();

	BOOL AddChannel(DWORD id ,BOOL outgoing,DWORD BufferSize=960);
	BOOL RemoveChannel(DWORD id,BOOL outgoing);

	BOOL Write(DWORD id, BYTE *frame, DWORD len,BOOL NeedDelay=TRUE,DWORD * SignalLvl=NULL);
	BOOL Read(DWORD id, BYTE *frame, DWORD len,BOOL NeedDelay=TRUE,DWORD * SignalLvl=NULL);
	
	BOOL ChannelExist(DWORD id,BOOL outgoing);
	DWORD GetChannelCount(BOOL outgoing);
private:
	void * m_data;
};


class CVideoMixer
{
public:
	
	CVideoMixer();
	virtual ~CVideoMixer();
	BOOL AddChannel(DWORD id,BOOL outgoing,DWORD fps=10,DWORD BgColor=0);
	BOOL RemoveChannel(DWORD id,BOOL outgoing);

	BOOL Write(DWORD id, BYTE *frame, int width, int height,BOOL NeedDelay=TRUE);
	BOOL Read(DWORD id, BYTE *frame, int width, int height,BOOL NeedDelay=TRUE);

	BOOL SetFPS(DWORD id,BOOL outgoing,DWORD fps=10);
	BOOL GetFPS(DWORD id,BOOL outgoing,DWORD &fps);

	BOOL SetBkgndColor(DWORD id,BOOL outgoing,DWORD BgColor=0);
	BOOL GetBkgndColor(DWORD id,BOOL outgoing,DWORD &BgColor);

	BOOL SetVideoFlip(DWORD id,BOOL outgoing,BOOL FlipX=FALSE,BOOL FlipY=FALSE);
	BOOL GetVideoFlip(DWORD id,BOOL outgoing,BOOL &FlipX,BOOL &FlipY);
	BOOL ChannelExist(DWORD id,BOOL outgoing);
	DWORD GetChannelCount(BOOL outgoing);

	BOOL SetVideoPosition(DWORD id,DWORD idSrc,int pos);
	BOOL QueryVideoPosition(DWORD id,DWORD idSrc,int &pos);
	BOOL GetVideoGrids(DWORD id,DWORD& grids);

private:
	void * m_data;
};

#endif//end of file

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -