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

📄 iaxclient.h

📁 我自己根据kiax改写的iax协议软终端
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * iaxclient: a cross-platform IAX softphone library * * Copyrights: * Copyright (C) 2003-2006, Horizon Wimba, Inc. * Copyright (C) 2007, Wimba, Inc. * * Contributors: * Steve Kann <stevek@stevek.com> * Frik Strecker <frik@gatherworks.com> * Mihai Balea <mihai AT hates DOT ms> * Peter Grayson <jpgrayson@gmail.com> * Bill Cholewka <bcholew@gmail.com> * * This program is free software, distributed under the terms of * the GNU Lesser (Library) General Public License. */#ifndef _iaxclient_h#define _iaxclient_h#ifdef __cplusplusextern "C" {#endif/* This is the include file which declared all external API functions to * IAXCLIENT.  It should include all functions and declarations needed * by IAXCLIENT library users, but not include internal structures, or * require the inclusion of library internals (or sub-libraries) */#ifdef _MSC_VERtypedef int socklen_t;#endif#include <stdio.h>#if defined(WIN32)  ||  defined(_WIN32_WCE)#include <windows.h>#include <winsock.h>#else#include <sys/socket.h>#endif#ifdef BUILDING_DLL# if defined(WIN32) ||  defined(_WIN32_WCE)#  ifdef _MSC_VER#   define EXPORT __declspec(dllexport)#  else#   define EXPORT  __stdcall __declspec(dllexport)#  endif# else#  define EXPORT#endif#else# define EXPORT#endif#if defined(WIN32)  ||  defined(_WIN32_WCE)#if defined(_MSC_VER)	typedef int (__stdcall *iaxc_sendto_t)(SOCKET, const void *, size_t, int,			const struct sockaddr *, socklen_t);	typedef int (__stdcall *iaxc_recvfrom_t)(SOCKET, void *, size_t, int,			struct sockaddr *, socklen_t *);#else	typedef int PASCAL (*iaxc_sendto_t)(SOCKET, const char *, int, int,			const struct sockaddr *, int);	typedef int PASCAL (*iaxc_recvfrom_t)(SOCKET, char *, int, int,			struct sockaddr *, int *);#endif#else	typedef int (*iaxc_sendto_t)(int, const void *, size_t, int,			const struct sockaddr *, socklen_t);	typedef int (*iaxc_recvfrom_t)(int, void *, size_t, int,			struct sockaddr *, socklen_t *);#endif#define IAXC_AUDIO_FORMAT_MASK  ((1<<16)-1)#define IAXC_VIDEO_FORMAT_MASK  (((1<<25)-1) & ~IAXC_AUDIO_FORMAT_MASK)/* payload formats : WARNING: must match libiax values!!! *//* Data formats for capabilities and frames alike */#define IAXC_FORMAT_G723_1       (1 << 0)        /* G.723.1 compression */#define IAXC_FORMAT_GSM          (1 << 1)        /* GSM compression */#define IAXC_FORMAT_ULAW         (1 << 2)        /* Raw mu-law data (G.711) */#define IAXC_FORMAT_ALAW         (1 << 3)        /* Raw A-law data (G.711) */#define IAXC_FORMAT_G726         (1 << 4)        /* ADPCM, 32kbps  */#define IAXC_FORMAT_ADPCM        (1 << 5)        /* ADPCM IMA */#define IAXC_FORMAT_SLINEAR      (1 << 6)        /* Raw 16-bit Signed Linear (8000 Hz) PCM */#define IAXC_FORMAT_LPC10        (1 << 7)        /* LPC10, 180 samples/frame */#define IAXC_FORMAT_G729A        (1 << 8)        /* G.729a Audio */#define IAXC_FORMAT_SPEEX        (1 << 9)        /* Speex Audio */#define IAXC_FORMAT_ILBC         (1 << 10)       /* iLBC Audio */#define IAXC_FORMAT_MAX_AUDIO    (1 << 15)       /* Maximum audio format */#define IAXC_FORMAT_JPEG         (1 << 16)       /* JPEG Images */#define IAXC_FORMAT_PNG          (1 << 17)       /* PNG Images */#define IAXC_FORMAT_H261         (1 << 18)       /* H.261 Video */#define IAXC_FORMAT_H263         (1 << 19)       /* H.263 Video */#define IAXC_FORMAT_H263_PLUS    (1 << 20)       /* H.263+ Video */#define IAXC_FORMAT_H264         (1 << 21)       /* H264 Video */#define IAXC_FORMAT_MPEG4        (1 << 22)       /* MPEG4 Video */#define IAXC_FORMAT_THEORA       (1 << 24)       /* Theora Video */#define IAXC_FORMAT_MAX_VIDEO    (1 << 24)       /* Maximum Video Format */#define IAXC_EVENT_TEXT          1#define IAXC_EVENT_LEVELS        2#define IAXC_EVENT_STATE         3#define IAXC_EVENT_NETSTAT       4#define IAXC_EVENT_URL           5        /* URL push via IAX(2) */#define IAXC_EVENT_VIDEO         6#define IAXC_EVENT_REGISTRATION  8#define IAXC_EVENT_DTMF          9#define IAXC_EVENT_AUDIO         10#define IAXC_EVENT_VIDEOSTATS    11#define IAXC_CALL_STATE_FREE     0#define IAXC_CALL_STATE_ACTIVE   (1<<1)#define IAXC_CALL_STATE_OUTGOING (1<<2)#define IAXC_CALL_STATE_RINGING  (1<<3)#define IAXC_CALL_STATE_COMPLETE (1<<4)#define IAXC_CALL_STATE_SELECTED (1<<5)#define IAXC_CALL_STATE_BUSY     (1<<6)#define IAXC_CALL_STATE_TRANSFER (1<<7)#define IAXC_TEXT_TYPE_STATUS     1#define IAXC_TEXT_TYPE_NOTICE     2#define IAXC_TEXT_TYPE_ERROR      3/* FATAL ERROR: User Agent should probably display error, then die. */#define IAXC_TEXT_TYPE_FATALERROR 4#define IAXC_TEXT_TYPE_IAX        5/* registration replys, corresponding to IAX_EVENTs*/#define IAXC_REGISTRATION_REPLY_ACK     18   /* IAX_EVENT_REGACC  */#define IAXC_REGISTRATION_REPLY_REJ     30   /* IAX_EVENT_REGREJ  */#define IAXC_REGISTRATION_REPLY_TIMEOUT 6    /* IAX_EVENT_TIMEOUT */#define IAXC_URL_URL              1       /* URL received */#define IAXC_URL_LDCOMPLETE       2       /* URL loading complete */#define IAXC_URL_LINKURL          3       /* URL link request */#define IAXC_URL_LINKREJECT       4       /* URL link reject */#define IAXC_URL_UNLINK           5       /* URL unlink *//* The source of the video or audio data triggering the event. */#define IAXC_SOURCE_LOCAL  1#define IAXC_SOURCE_REMOTE 2#define IAXC_EVENT_BUFSIZ 256struct iaxc_ev_levels {	float input;	float output;};struct iaxc_ev_text {	int type;	int callNo; /* call number for IAX text */	char message[IAXC_EVENT_BUFSIZ];};struct iaxc_ev_call_state {	int callNo;	int state;	int format;	int vformat;	char remote[IAXC_EVENT_BUFSIZ];	char remote_name[IAXC_EVENT_BUFSIZ];	char local[IAXC_EVENT_BUFSIZ];	char local_context[IAXC_EVENT_BUFSIZ];};struct iaxc_netstat {	int jitter;	int losspct;	int losscnt;	int packets;	int delay;	int dropped;	int ooo;};struct iaxc_ev_netstats {	int callNo;	int rtt;	struct iaxc_netstat local;	struct iaxc_netstat remote;};/* * Video statistics code */struct iaxc_video_stats{	unsigned long received_slices;  /* Number of received slices */	unsigned long acc_recv_size;    /* Accumulated size of inbound slices */	unsigned long sent_slices;      /* Number of sent slices */	unsigned long acc_sent_size;    /* Accumulated size of outbound slices */	unsigned long dropped_frames;   /* Number of frames dropped by the codec (incomplete frames */	unsigned long inbound_frames;   /* Number of frames decoded by the codec (complete frames) */	unsigned long outbound_frames;  /* Number of frames sent to the encoder */	float         avg_inbound_fps;  /* Average fps of inbound complete frames */	unsigned long avg_inbound_bps;  /* Average inbound bitrate */	float         avg_outbound_fps; /* Average fps of outbound frames */	unsigned long avg_outbound_bps; /* Average outbound bitrate */	struct timeval start_time;      /* Timestamp of the moment we started measuring */};struct iaxc_ev_video_stats {	int callNo;	struct iaxc_video_stats stats;};struct iaxc_ev_url {	int callNo;	int type;	char url[IAXC_EVENT_BUFSIZ];};struct iaxc_ev_video {	int callNo;	unsigned int ts;	int format;	int width;	int height;	int encoded;	int source;	int size;	char *data;};struct iaxc_ev_audio{	int callNo;	unsigned int ts;	int format;	int encoded;	int source;	int size;	unsigned char *data;};struct iaxc_ev_registration {	int id;	int reply;	int msgcount;};typedef struct iaxc_event_struct {	struct iaxc_event_struct *next;	int type;	union {		struct iaxc_ev_levels           levels;		struct iaxc_ev_text             text;

⌨️ 快捷键说明

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