📄 h323exp.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 + -