2 * libiax: An implementation of the Inter-Asterisk eXchange protocol
4 * Asterisk internal frame definitions.
6 * Copyright (C) 1999, Mark Spencer
8 * Mark Spencer <markster@linux-support.net>
10 * This program is free software, distributed under the terms of
11 * the GNU Lesser General Public License. Other components of
12 * Asterisk are distributed under The GNU General Public License
16 #ifndef _LIBIAX_FRAME_H
17 #define _LIBIAX_FRAME_H
19 #if defined(__cplusplus) || defined(c_plusplus)
24 #define AST_FRAME_DTMF 1 /* A DTMF digit, subclass is the digit */
25 #define AST_FRAME_VOICE 2 /* Voice data, subclass is AST_FORMAT_* */
26 #define AST_FRAME_VIDEO 3 /* Video frame, maybe?? :) */
27 #define AST_FRAME_CONTROL 4 /* A control frame, subclass is AST_CONTROL_* */
28 #define AST_FRAME_NULL 5 /* An empty, useless frame */
29 #define AST_FRAME_IAX 6 /* Inter Aterisk Exchange private frame type */
30 #define AST_FRAME_TEXT 7 /* Text messages */
31 #define AST_FRAME_IMAGE 8 /* Image Frames */
32 #define AST_FRAME_HTML 9 /* HTML Frames */
33 #define AST_FRAME_CNG 10 /* Comfort Noise frame (subclass is level of CNG in -dBov) */
36 #define AST_HTML_URL 1 /* Sending a URL */
37 #define AST_HTML_DATA 2 /* Data frame */
38 #define AST_HTML_BEGIN 4 /* Beginning frame */
39 #define AST_HTML_END 8 /* End frame */
40 #define AST_HTML_LDCOMPLETE 16 /* Load is complete */
41 #define AST_HTML_NOSUPPORT 17 /* Peer is unable to support HTML */
42 #define AST_HTML_LINKURL 18 /* Send URL and track */
43 #define AST_HTML_UNLINK 19 /* Request no more linkage */
44 #define AST_HTML_LINKREJECT 20 /* Reject LINKURL */
46 /* Data formats for capabilities and frames alike */
47 /*! G.723.1 compression */
48 #define AST_FORMAT_G723_1 (1 << 0)
49 /*! GSM compression */
50 #define AST_FORMAT_GSM (1 << 1)
51 /*! Raw mu-law data (G.711) */
52 #define AST_FORMAT_ULAW (1 << 2)
53 /*! Raw A-law data (G.711) */
54 #define AST_FORMAT_ALAW (1 << 3)
55 /*! ADPCM (G.726, 32kbps) */
56 #define AST_FORMAT_G726 (1 << 4)
58 #define AST_FORMAT_ADPCM (1 << 5)
59 /*! Raw 16-bit Signed Linear (8000 Hz) PCM */
60 #define AST_FORMAT_SLINEAR (1 << 6)
61 /*! LPC10, 180 samples/frame */
62 #define AST_FORMAT_LPC10 (1 << 7)
64 #define AST_FORMAT_G729A (1 << 8)
65 /*! SpeeX Free Compression */
66 #define AST_FORMAT_SPEEX (1 << 9)
67 /*! iLBC Free Compression */
68 #define AST_FORMAT_ILBC (1 << 10)
69 /*! Maximum audio format */
70 #define AST_FORMAT_MAX_AUDIO (1 << 15)
72 #define AST_FORMAT_JPEG (1 << 16)
74 #define AST_FORMAT_PNG (1 << 17)
76 #define AST_FORMAT_H261 (1 << 18)
78 #define AST_FORMAT_H263 (1 << 19)
80 #define AST_FORMAT_H263p (1 << 20)
82 #define AST_FORMAT_H264 (1 << 21)
84 #define AST_FORMAT_MPEG4 (1 << 22)
86 #define AST_FORMAT_THEORA (1 << 24)
88 #define AST_FORMAT_MAX_VIDEO (1 << 24)
90 /* Control frame types */
91 #define AST_CONTROL_HANGUP 1 /* Other end has hungup */
92 #define AST_CONTROL_RING 2 /* Local ring */
93 #define AST_CONTROL_RINGING 3 /* Remote end is ringing */
94 #define AST_CONTROL_ANSWER 4 /* Remote end has answered */
95 #define AST_CONTROL_BUSY 5 /* Remote end is busy */
96 #define AST_CONTROL_TAKEOFFHOOK 6 /* Make it go off hook */
97 #define AST_CONTROL_OFFHOOK 7 /* Line is off hook */
98 #define AST_CONTROL_CONGESTION 8 /* Congestion (circuits busy) */
99 #define AST_CONTROL_FLASH 9 /* Flash hook */
100 #define AST_CONTROL_WINK 10 /* Wink */
101 #define AST_CONTROL_OPTION 11 /* Set an option */
103 #define AST_FRIENDLY_OFFSET 64 /* Reserved header space */
108 /*! Subclass, frame dependent */
110 /*! Length of data */
112 /*! Number of 8khz samples in this frame */
114 /*! Was the data malloc'd? i.e. should we free it when we discard the f
117 /*! How far into "data" the data really starts */
119 /*! Optional source of frame for debugging */
121 /*! Pointer to actual data */
123 /*! Next/Prev for linking stand alone frames */
124 struct ast_frame *prev;
125 /*! Next/Prev for linking stand alone frames */
126 struct ast_frame *next;
128 if debugging is turned on, but left
130 so that it can be turned on without
132 ecompile of the whole thing */
137 #if defined(__cplusplus) || defined(c_plusplus)