aboutsummaryrefslogtreecommitdiffstats
path: root/1.2-netsec/include/asterisk/frame.h
diff options
context:
space:
mode:
Diffstat (limited to '1.2-netsec/include/asterisk/frame.h')
-rw-r--r--1.2-netsec/include/asterisk/frame.h484
1 files changed, 0 insertions, 484 deletions
diff --git a/1.2-netsec/include/asterisk/frame.h b/1.2-netsec/include/asterisk/frame.h
deleted file mode 100644
index ccba41539..000000000
--- a/1.2-netsec/include/asterisk/frame.h
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (C) 1999 - 2005, Digium, Inc.
- *
- * Mark Spencer <markster@digium.com>
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
-
-/*! \file
- * \brief Asterisk internal frame definitions.
- * \arg For an explanation of frames, see \ref Def_Frame
- * \arg Frames are send of Asterisk channels, see \ref Def_Channel
- */
-
-#ifndef _ASTERISK_FRAME_H
-#define _ASTERISK_FRAME_H
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include "asterisk/endian.h"
-
-struct ast_codec_pref {
- char order[32];
-};
-
-/*! \page Def_Frame AST Multimedia and signalling frames
- \section Def_AstFrame What is an ast_frame ?
- A frame of data read used to communicate between
- between channels and applications.
- Frames are divided into frame types and subclasses.
-
- \par Frame types
- \arg \b VOICE: Voice data, subclass is codec (AST_FORMAT_*)
- \arg \b VIDEO: Video data, subclass is codec (AST_FORMAT_*)
- \arg \b DTMF: A DTMF digit, subclass is the digit
- \arg \b IMAGE: Image transport, mostly used in IAX
- \arg \b TEXT: Text messages
- \arg \b HTML: URL's and web pages
- \arg \b T38: T38 Fax transport frames
- \arg \b IAX: Private frame type for the IAX protocol
- \arg \b CNG: Comfort noice frames
- \arg \b CONTROL: A control frame, subclass defined as AST_CONTROL_
- \arg \b NULL: Empty, useless frame
-
- \par Files
- \arg frame.h Definitions
- \arg frame.c Function library
- \arg \ref Def_Channel Asterisk channels
- \section Def_ControlFrame Control Frames
- Control frames send signalling information between channels
- and devices. They are prefixed with AST_CONTROL_, like AST_CONTROL_FRAME_HANGUP
- \arg \b HANGUP The other end has hungup
- \arg \b RING Local ring
- \arg \b RINGING The other end is ringing
- \arg \b ANSWER The other end has answered
- \arg \b BUSY Remote end is busy
- \arg \b TAKEOFFHOOK Make it go off hook (what's "it" ? )
- \arg \b OFFHOOK Line is off hook
- \arg \b CONGESTION Congestion (circuit is busy, not available)
- \arg \b FLASH Other end sends flash hook
- \arg \b WINK Other end sends wink
- \arg \b OPTION Send low-level option
- \arg \b RADIO_KEY Key radio (see app_rpt.c)
- \arg \b RADIO_UNKEY Un-key radio (see app_rpt.c)
- \arg \b PROGRESS Other end indicates call progress
- \arg \b PROCEEDING Indicates proceeding
- \arg \b HOLD Call is placed on hold
- \arg \b UNHOLD Call is back from hold
- \arg \b VIDUPDATE Video update requested
-
-*/
-
-/*! \brief Data structure associated with a single frame of data
- */
-struct ast_frame {
- /*! Kind of frame */
- int frametype;
- /*! Subclass, frame dependent */
- int subclass;
- /*! Length of data */
- int datalen;
- /*! Number of 8khz samples in this frame */
- int samples;
- /*! Was the data malloc'd? i.e. should we free it when we discard the frame? */
- int mallocd;
- /*! How many bytes exist _before_ "data" that can be used if needed */
- int offset;
- /*! Optional source of frame for debugging */
- const char *src;
- /*! Pointer to actual data */
- void *data;
- /*! Global delivery time */
- struct timeval delivery;
- /*! Next/Prev for linking stand alone frames */
- struct ast_frame *prev;
- /*! Next/Prev for linking stand alone frames */
- struct ast_frame *next;
-};
-
-#define AST_FRIENDLY_OFFSET 64 /*! It's polite for a a new frame to
- have this number of bytes for additional
- headers. */
-#define AST_MIN_OFFSET 32 /*! Make sure we keep at least this much handy */
-
-/*! Need the header be free'd? */
-#define AST_MALLOCD_HDR (1 << 0)
-/*! Need the data be free'd? */
-#define AST_MALLOCD_DATA (1 << 1)
-/*! Need the source be free'd? (haha!) */
-#define AST_MALLOCD_SRC (1 << 2)
-
-/* Frame types */
-/*! A DTMF digit, subclass is the digit */
-#define AST_FRAME_DTMF 1
-/*! Voice data, subclass is AST_FORMAT_* */
-#define AST_FRAME_VOICE 2
-/*! Video frame, maybe?? :) */
-#define AST_FRAME_VIDEO 3
-/*! A control frame, subclass is AST_CONTROL_* */
-#define AST_FRAME_CONTROL 4
-/*! An empty, useless frame */
-#define AST_FRAME_NULL 5
-/*! Inter Asterisk Exchange private frame type */
-#define AST_FRAME_IAX 6
-/*! Text messages */
-#define AST_FRAME_TEXT 7
-/*! Image Frames */
-#define AST_FRAME_IMAGE 8
-/*! HTML Frame */
-#define AST_FRAME_HTML 9
-/*! Comfort Noise frame (subclass is level of CNG in -dBov),
- body may include zero or more 8-bit quantization coefficients */
-#define AST_FRAME_CNG 10
-/*! T.38 Fax-over-IP data stream */
-#define AST_FRAME_T38 11
-
-/* HTML subclasses */
-/*! Sending a URL */
-#define AST_HTML_URL 1
-/*! Data frame */
-#define AST_HTML_DATA 2
-/*! Beginning frame */
-#define AST_HTML_BEGIN 4
-/*! End frame */
-#define AST_HTML_END 8
-/*! Load is complete */
-#define AST_HTML_LDCOMPLETE 16
-/*! Peer is unable to support HTML */
-#define AST_HTML_NOSUPPORT 17
-/*! Send URL, and track */
-#define AST_HTML_LINKURL 18
-/*! No more HTML linkage */
-#define AST_HTML_UNLINK 19
-/*! Reject link request */
-#define AST_HTML_LINKREJECT 20
-
-/* Data formats for capabilities and frames alike */
-/*! G.723.1 compression */
-#define AST_FORMAT_G723_1 (1 << 0)
-/*! GSM compression */
-#define AST_FORMAT_GSM (1 << 1)
-/*! Raw mu-law data (G.711) */
-#define AST_FORMAT_ULAW (1 << 2)
-/*! Raw A-law data (G.711) */
-#define AST_FORMAT_ALAW (1 << 3)
-/*! ADPCM (G.726, 32kbps) */
-#define AST_FORMAT_G726 (1 << 4)
-/*! ADPCM (IMA) */
-#define AST_FORMAT_ADPCM (1 << 5)
-/*! Raw 16-bit Signed Linear (8000 Hz) PCM */
-#define AST_FORMAT_SLINEAR (1 << 6)
-/*! LPC10, 180 samples/frame */
-#define AST_FORMAT_LPC10 (1 << 7)
-/*! G.729A audio */
-#define AST_FORMAT_G729A (1 << 8)
-/*! SpeeX Free Compression */
-#define AST_FORMAT_SPEEX (1 << 9)
-/*! iLBC Free Compression */
-#define AST_FORMAT_ILBC (1 << 10)
-/*! Maximum audio format */
-#define AST_FORMAT_MAX_AUDIO (1 << 15)
-/*! JPEG Images */
-#define AST_FORMAT_JPEG (1 << 16)
-/*! PNG Images */
-#define AST_FORMAT_PNG (1 << 17)
-/*! H.261 Video */
-#define AST_FORMAT_H261 (1 << 18)
-/*! H.263 Video */
-#define AST_FORMAT_H263 (1 << 19)
-/*! H.263+ Video */
-#define AST_FORMAT_H263_PLUS (1 << 20)
-/*! Maximum video format */
-#define AST_FORMAT_MAX_VIDEO (1 << 24)
-
-/* Control frame types */
-/*! Other end has hungup */
-#define AST_CONTROL_HANGUP 1
-/*! Local ring */
-#define AST_CONTROL_RING 2
-/*! Remote end is ringing */
-#define AST_CONTROL_RINGING 3
-/*! Remote end has answered */
-#define AST_CONTROL_ANSWER 4
-/*! Remote end is busy */
-#define AST_CONTROL_BUSY 5
-/*! Make it go off hook */
-#define AST_CONTROL_TAKEOFFHOOK 6
-/*! Line is off hook */
-#define AST_CONTROL_OFFHOOK 7
-/*! Congestion (circuits busy) */
-#define AST_CONTROL_CONGESTION 8
-/*! Flash hook */
-#define AST_CONTROL_FLASH 9
-/*! Wink */
-#define AST_CONTROL_WINK 10
-/*! Set a low-level option */
-#define AST_CONTROL_OPTION 11
-/*! Key Radio */
-#define AST_CONTROL_RADIO_KEY 12
-/*! Un-Key Radio */
-#define AST_CONTROL_RADIO_UNKEY 13
-/*! Indicate PROGRESS */
-#define AST_CONTROL_PROGRESS 14
-/*! Indicate CALL PROCEEDING */
-#define AST_CONTROL_PROCEEDING 15
-/*! Indicate call is placed on hold */
-#define AST_CONTROL_HOLD 16
-/*! Indicate call is left from hold */
-#define AST_CONTROL_UNHOLD 17
-/*! Indicate video frame update */
-#define AST_CONTROL_VIDUPDATE 18
-
-#define AST_SMOOTHER_FLAG_G729 (1 << 0)
-
-/* Option identifiers and flags */
-#define AST_OPTION_FLAG_REQUEST 0
-#define AST_OPTION_FLAG_ACCEPT 1
-#define AST_OPTION_FLAG_REJECT 2
-#define AST_OPTION_FLAG_QUERY 4
-#define AST_OPTION_FLAG_ANSWER 5
-#define AST_OPTION_FLAG_WTF 6
-
-/*! Verify touchtones by muting audio transmission
- (and reception) and verify the tone is still present */
-#define AST_OPTION_TONE_VERIFY 1
-
-/*! Put a compatible channel into TDD (TTY for the hearing-impared) mode */
-#define AST_OPTION_TDD 2
-
-/*! Relax the parameters for DTMF reception (mainly for radio use) */
-#define AST_OPTION_RELAXDTMF 3
-
-/*! Set (or clear) Audio (Not-Clear) Mode */
-#define AST_OPTION_AUDIO_MODE 4
-
-/*! Set channel transmit gain
- * Option data is a single signed char
- representing number of decibels (dB)
- to set gain to (on top of any gain
- specified in channel driver)
-*/
-#define AST_OPTION_TXGAIN 5
-
-/*! Set channel receive gain
- * Option data is a single signed char
- representing number of decibels (dB)
- to set gain to (on top of any gain
- specified in channel driver)
-*/
-#define AST_OPTION_RXGAIN 6
-
-struct ast_option_header {
- /* Always keep in network byte order */
-#if __BYTE_ORDER == __BIG_ENDIAN
- u_int16_t flag:3;
- u_int16_t option:13;
-#else
-#if __BYTE_ORDER == __LITTLE_ENDIAN
- u_int16_t option:13;
- u_int16_t flag:3;
-#else
-#error Byte order not defined
-#endif
-#endif
- u_int8_t data[0];
-};
-
-/*! \brief Requests a frame to be allocated
- *
- * \param source
- * Request a frame be allocated. source is an optional source of the frame,
- * len is the requested length, or "0" if the caller will supply the buffer
- */
-#if 0 /* Unimplemented */
-struct ast_frame *ast_fralloc(char *source, int len);
-#endif
-
-/*! \brief Frees a frame
- * \param fr Frame to free
- * Free a frame, and the memory it used if applicable
- * \return no return.
- */
-void ast_frfree(struct ast_frame *fr);
-
-/*! \brief Copies a frame
- * \param fr frame to act upon
- * Take a frame, and if it's not been malloc'd, make a malloc'd copy
- * and if the data hasn't been malloced then make the
- * data malloc'd. If you need to store frames, say for queueing, then
- * you should call this function.
- * \return Returns a frame on success, NULL on error
- */
-struct ast_frame *ast_frisolate(struct ast_frame *fr);
-
-/*! \brief Copies a frame
- * \param fr frame to copy
- * Dupliates a frame -- should only rarely be used, typically frisolate is good enough
- * \return Returns a frame on success, NULL on error
- */
-struct ast_frame *ast_frdup(struct ast_frame *fr);
-
-/*! \brief Reads a frame from an fd
- * Read a frame from a stream or packet fd, as written by fd_write
- * \param fd an opened fd to read from
- * \return returns a frame on success, NULL on error
- */
-struct ast_frame *ast_fr_fdread(int fd);
-
-/*! Writes a frame to an fd
- * Write a frame to an fd
- * \param fd Which fd to write to
- * \param frame frame to write to the fd
- * \return Returns 0 on success, -1 on failure
- */
-int ast_fr_fdwrite(int fd, struct ast_frame *frame);
-
-/*! \brief Sends a hangup to an fd
- * Send a hangup (NULL equivalent) on an fd
- * \param fd fd to write to
- * \return Returns 0 on success, -1 on failure
- */
-int ast_fr_fdhangup(int fd);
-
-void ast_swapcopy_samples(void *dst, const void *src, int samples);
-
-/* Helpers for byteswapping native samples to/from
- little-endian and big-endian. */
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-#define ast_frame_byteswap_le(fr) do { ; } while(0)
-#define ast_frame_byteswap_be(fr) do { struct ast_frame *__f = (fr); ast_swapcopy_samples(__f->data, __f->data, __f->samples); } while(0)
-#else
-#define ast_frame_byteswap_le(fr) do { struct ast_frame *__f = (fr); ast_swapcopy_samples(__f->data, __f->data, __f->samples); } while(0)
-#define ast_frame_byteswap_be(fr) do { ; } while(0)
-#endif
-
-
-/*! \brief Get the name of a format
- * \param format id of format
- * \return A static string containing the name of the format or "UNKN" if unknown.
- */
-extern char* ast_getformatname(int format);
-
-/*! \brief Get the names of a set of formats
- * \param buf a buffer for the output string
- * \param size size of buf (bytes)
- * \param format the format (combined IDs of codecs)
- * Prints a list of readable codec names corresponding to "format".
- * ex: for format=AST_FORMAT_GSM|AST_FORMAT_SPEEX|AST_FORMAT_ILBC it will return "0x602 (GSM|SPEEX|ILBC)"
- * \return The return value is buf.
- */
-extern char* ast_getformatname_multiple(char *buf, size_t size, int format);
-
-/*!
- * \brief Gets a format from a name.
- * \param name string of format
- * \return This returns the form of the format in binary on success, 0 on error.
- */
-extern int ast_getformatbyname(char *name);
-
-/*! \brief Get a name from a format
- * Gets a name from a format
- * \param codec codec number (1,2,4,8,16,etc.)
- * \return This returns a static string identifying the format on success, 0 on error.
- */
-extern char *ast_codec2str(int codec);
-
-struct ast_smoother;
-
-extern struct ast_format_list *ast_get_format_list_index(int index);
-extern struct ast_format_list *ast_get_format_list(size_t *size);
-extern struct ast_smoother *ast_smoother_new(int bytes);
-extern void ast_smoother_set_flags(struct ast_smoother *smoother, int flags);
-extern int ast_smoother_get_flags(struct ast_smoother *smoother);
-extern void ast_smoother_free(struct ast_smoother *s);
-extern void ast_smoother_reset(struct ast_smoother *s, int bytes);
-extern int __ast_smoother_feed(struct ast_smoother *s, struct ast_frame *f, int swap);
-extern struct ast_frame *ast_smoother_read(struct ast_smoother *s);
-#define ast_smoother_feed(s,f) __ast_smoother_feed(s, f, 0)
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-#define ast_smoother_feed_be(s,f) __ast_smoother_feed(s, f, 1)
-#define ast_smoother_feed_le(s,f) __ast_smoother_feed(s, f, 0)
-#else
-#define ast_smoother_feed_be(s,f) __ast_smoother_feed(s, f, 0)
-#define ast_smoother_feed_le(s,f) __ast_smoother_feed(s, f, 1)
-#endif
-
-extern void ast_frame_dump(char *name, struct ast_frame *f, char *prefix);
-
-/*! \brief Initialize a codec preference to "no preference" */
-extern void ast_codec_pref_init(struct ast_codec_pref *pref);
-
-/*! \brief Codec located at a particular place in the preference index */
-extern int ast_codec_pref_index(struct ast_codec_pref *pref, int index);
-
-/*! \brief Remove a codec from a preference list */
-extern void ast_codec_pref_remove(struct ast_codec_pref *pref, int format);
-
-/*! \brief Append a codec to a preference list, removing it first if it was already there */
-extern int ast_codec_pref_append(struct ast_codec_pref *pref, int format);
-
-/*! \brief Select the best format according to preference list from supplied options.
- If "find_best" is non-zero then if nothing is found, the "Best" format of
- the format list is selected, otherwise 0 is returned. */
-extern int ast_codec_choose(struct ast_codec_pref *pref, int formats, int find_best);
-
-/*! \brief Parse an "allow" or "deny" line and update the mask and pref if provided */
-extern void ast_parse_allow_disallow(struct ast_codec_pref *pref, int *mask, const char *list, int allowing);
-
-/*! \brief Dump codec preference list into a string */
-extern int ast_codec_pref_string(struct ast_codec_pref *pref, char *buf, size_t size);
-
-/*! \brief Shift a codec preference list up or down 65 bytes so that it becomes an ASCII string */
-extern void ast_codec_pref_convert(struct ast_codec_pref *pref, char *buf, size_t size, int right);
-
-/*! \brief Returns the number of samples contained in the frame */
-extern int ast_codec_get_samples(struct ast_frame *f);
-
-/*! \brief Returns the number of bytes for the number of samples of the given format */
-extern int ast_codec_get_len(int format, int samples);
-
-/*! \brief Gets duration in ms of interpolation frame for a format */
-static inline int ast_codec_interp_len(int format)
-{
- return (format == AST_FORMAT_ILBC) ? 30 : 20;
-}
-
-/*!
- \brief Adjusts the volume of the audio samples contained in a frame.
- \param f The frame containing the samples (must be AST_FRAME_VOICE and AST_FORMAT_SLINEAR)
- \param adjustment The number of dB to adjust up or down.
- \return 0 for success, non-zero for an error
- */
-int ast_frame_adjust_volume(struct ast_frame *f, int adjustment);
-
-/*!
- \brief Sums two frames of audio samples.
- \param f1 The first frame (which will contain the result)
- \param f2 The second frame
- \return 0 for success, non-zero for an error
-
- The frames must be AST_FRAME_VOICE and must contain AST_FORMAT_SLINEAR samples,
- and must contain the same number of samples.
- */
-int ast_frame_slinear_sum(struct ast_frame *f1, struct ast_frame *f2);
-
-#if defined(__cplusplus) || defined(c_plusplus)
-}
-#endif
-
-#endif /* _ASTERISK_FRAME_H */