?? iaxclient.h
字號:
/* * 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 + -