#include <sys/types.h>
#include <sys/time.h>
#include "asterisk/endian.h"
Go to the source code of this file.
Data Structures | |
struct | ast_codec_pref |
struct | ast_frame |
Data structure associated with a single frame of data. More... | |
struct | ast_option_header |
Defines | |
#define | AST_CONTROL_ANSWER 4 |
#define | AST_CONTROL_BUSY 5 |
#define | AST_CONTROL_CONGESTION 8 |
#define | AST_CONTROL_DISCONNECT 43 |
#define | AST_CONTROL_FLASH 9 |
#define | AST_CONTROL_HANGUP 1 |
#define | AST_CONTROL_HOLD 16 |
#define | AST_CONTROL_INBAND_INFO 42 |
#define | AST_CONTROL_OFFHOOK 7 |
#define | AST_CONTROL_OPTION 11 |
#define | AST_CONTROL_PROCEEDING 15 |
#define | AST_CONTROL_PROGRESS 14 |
#define | AST_CONTROL_RADIO_KEY 12 |
#define | AST_CONTROL_RADIO_UNKEY 13 |
#define | AST_CONTROL_RING 2 |
#define | AST_CONTROL_RINGING 3 |
#define | AST_CONTROL_TAKEOFFHOOK 6 |
#define | AST_CONTROL_UNHOLD 17 |
#define | AST_CONTROL_VIDUPDATE 18 |
#define | AST_CONTROL_WINK 10 |
#define | AST_FORMAT_ADPCM (1 << 5) |
#define | AST_FORMAT_ALAW (1 << 3) |
#define | AST_FORMAT_G723_1 (1 << 0) |
#define | AST_FORMAT_G726 (1 << 4) |
#define | AST_FORMAT_G729A (1 << 8) |
#define | AST_FORMAT_GSM (1 << 1) |
#define | AST_FORMAT_H261 (1 << 18) |
#define | AST_FORMAT_H263 (1 << 19) |
#define | AST_FORMAT_H263_PLUS (1 << 20) |
#define | AST_FORMAT_ILBC (1 << 10) |
#define | AST_FORMAT_JPEG (1 << 16) |
#define | AST_FORMAT_LPC10 (1 << 7) |
#define | AST_FORMAT_MAX_AUDIO (1 << 15) |
#define | AST_FORMAT_MAX_VIDEO (1 << 24) |
#define | AST_FORMAT_PNG (1 << 17) |
#define | AST_FORMAT_SLINEAR (1 << 6) |
#define | AST_FORMAT_SPEEX (1 << 9) |
#define | AST_FORMAT_ULAW (1 << 2) |
#define | ast_frame_byteswap_be(fr) do { struct ast_frame *__f = (fr); ast_swapcopy_samples(__f->data, __f->data, __f->samples); } while(0) |
#define | ast_frame_byteswap_le(fr) do { ; } while(0) |
#define | AST_FRAME_CNG 10 |
#define | AST_FRAME_CONTROL 4 |
#define | AST_FRAME_DTMF 1 |
#define | AST_FRAME_HTML 9 |
#define | AST_FRAME_IAX 6 |
#define | AST_FRAME_IMAGE 8 |
#define | AST_FRAME_NULL 5 |
#define | AST_FRAME_T38 11 |
#define | AST_FRAME_TEXT 7 |
#define | AST_FRAME_VIDEO 3 |
#define | AST_FRAME_VOICE 2 |
#define | AST_FRIENDLY_OFFSET 64 |
#define | AST_HTML_BEGIN 4 |
#define | AST_HTML_DATA 2 |
#define | AST_HTML_END 8 |
#define | AST_HTML_LDCOMPLETE 16 |
#define | AST_HTML_LINKREJECT 20 |
#define | AST_HTML_LINKURL 18 |
#define | AST_HTML_NOSUPPORT 17 |
#define | AST_HTML_UNLINK 19 |
#define | AST_HTML_URL 1 |
#define | AST_MALLOCD_DATA (1 << 1) |
#define | AST_MALLOCD_HDR (1 << 0) |
#define | AST_MALLOCD_SRC (1 << 2) |
#define | AST_MIN_OFFSET 32 |
#define | AST_OPTION_AUDIO_MODE 4 |
#define | AST_OPTION_FLAG_ACCEPT 1 |
#define | AST_OPTION_FLAG_ANSWER 5 |
#define | AST_OPTION_FLAG_QUERY 4 |
#define | AST_OPTION_FLAG_REJECT 2 |
#define | AST_OPTION_FLAG_REQUEST 0 |
#define | AST_OPTION_FLAG_WTF 6 |
#define | AST_OPTION_RELAXDTMF 3 |
#define | AST_OPTION_RXGAIN 6 |
#define | AST_OPTION_TDD 2 |
#define | AST_OPTION_TONE_VERIFY 1 |
#define | AST_OPTION_TXGAIN 5 |
#define | ast_smoother_feed(s, f) __ast_smoother_feed(s, f, 0) |
#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) |
#define | AST_SMOOTHER_FLAG_G729 (1 << 0) |
Functions | |
int | __ast_smoother_feed (struct ast_smoother *s, struct ast_frame *f, int swap) |
char * | ast_codec2str (int codec) |
Get a name from a format Gets a name from a format. | |
int | ast_codec_choose (struct ast_codec_pref *pref, int formats, int find_best) |
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. | |
int | ast_codec_get_len (int format, int samples) |
Returns the number of bytes for the number of samples of the given format. | |
int | ast_codec_get_samples (struct ast_frame *f) |
Returns the number of samples contained in the frame. | |
static int | ast_codec_interp_len (int format) |
Gets duration in ms of interpolation frame for a format. | |
int | ast_codec_pref_append (struct ast_codec_pref *pref, int format) |
Append a codec to a preference list, removing it first if it was already there. | |
void | ast_codec_pref_convert (struct ast_codec_pref *pref, char *buf, size_t size, int right) |
Shift a codec preference list up or down 65 bytes so that it becomes an ASCII string. | |
int | ast_codec_pref_index (struct ast_codec_pref *pref, int index) |
Codec located at a particular place in the preference index. | |
void | ast_codec_pref_init (struct ast_codec_pref *pref) |
Initialize a codec preference to "no preference". | |
void | ast_codec_pref_remove (struct ast_codec_pref *pref, int format) |
Remove a codec from a preference list. | |
int | ast_codec_pref_string (struct ast_codec_pref *pref, char *buf, size_t size) |
Dump codec preference list into a string. | |
int | ast_fr_fdhangup (int fd) |
Sends a hangup to an fd Send a hangup (NULL equivalent) on an fd. | |
ast_frame * | ast_fr_fdread (int fd) |
Reads a frame from an fd Read a frame from a stream or packet fd, as written by fd_write. | |
int | ast_fr_fdwrite (int fd, struct ast_frame *frame) |
int | ast_frame_adjust_volume (struct ast_frame *f, int adjustment) |
Adjusts the volume of the audio samples contained in a frame. | |
void | ast_frame_dump (char *name, struct ast_frame *f, char *prefix) |
int | ast_frame_slinear_sum (struct ast_frame *f1, struct ast_frame *f2) |
Sums two frames of audio samples. | |
ast_frame * | ast_frdup (struct ast_frame *fr) |
Copies a frame. | |
void | ast_frfree (struct ast_frame *fr) |
Requests a frame to be allocated Frees a frame. | |
ast_frame * | ast_frisolate (struct ast_frame *fr) |
Copies a frame. | |
ast_format_list * | ast_get_format_list (size_t *size) |
ast_format_list * | ast_get_format_list_index (int index) |
int | ast_getformatbyname (char *name) |
Gets a format from a name. | |
char * | ast_getformatname (int format) |
Get the name of a format. | |
char * | ast_getformatname_multiple (char *buf, size_t size, int format) |
Get the names of a set of formats. | |
void | ast_parse_allow_disallow (struct ast_codec_pref *pref, int *mask, const char *list, int allowing) |
Parse an "allow" or "deny" line and update the mask and pref if provided. | |
void | ast_smoother_free (struct ast_smoother *s) |
int | ast_smoother_get_flags (struct ast_smoother *smoother) |
ast_smoother * | ast_smoother_new (int bytes) |
ast_frame * | ast_smoother_read (struct ast_smoother *s) |
void | ast_smoother_reset (struct ast_smoother *s, int bytes) |
void | ast_smoother_set_flags (struct ast_smoother *smoother, int flags) |
void | ast_swapcopy_samples (void *dst, const void *src, int samples) |
Definition in file frame.h.
#define AST_CONTROL_ANSWER 4 |
Remote end has answered
Definition at line 217 of file frame.h.
Referenced by __ast_dsp_call_progress(), __ast_request_and_dial(), agent_read(), alsa_call(), ast_dsp_process(), ast_feature_request_and_dial(), ast_frame_dump(), ast_pickup_call(), ast_read(), ast_waitfordigit_full(), ast_waitstream(), ast_waitstream_exten(), ast_waitstream_fr(), ast_waitstream_full(), connection_made(), console_answer(), console_sendtext(), control2str(), handle_hd_hf(), handle_message(), handle_response_invite(), i4l_handle_escape(), iax2_answer(), local_answer(), misdn_indication(), monitor_handle_owned(), nbs_call(), oss_answer(), oss_call(), phone_exception(), pickup_exec(), rpt(), vpb_indicate(), wait_for_answer(), zt_handle_event(), and zt_read().
#define AST_CONTROL_BUSY 5 |
Remote end is busy
Definition at line 219 of file frame.h.
Referenced by __ast_dsp_call_progress(), __ast_request_and_dial(), alsa_indicate(), aopen_handle_escape(), ast_bridge_call(), ast_dsp_process(), ast_feature_request_and_dial(), ast_frame_dump(), ast_indicate(), async_wait(), bestdata_handle_escape(), builtin_atxfer(), control2str(), handle_response(), i4l_handle_escape(), mgcp_indicate(), misdn_indication(), monitor_handle_owned(), oh323_indicate(), oss_indicate(), pbx_builtin_busy(), rpt_exec(), send_cause2ast(), sip_indicate(), skinny_call(), skinny_indicate(), vpb_indicate(), wait_for_answer(), zt_indicate(), and zt_read().
#define AST_CONTROL_CONGESTION 8 |
Congestion (circuits busy)
Definition at line 225 of file frame.h.
Referenced by __ast_dsp_call_progress(), __ast_request_and_dial(), alsa_indicate(), ast_bridge_call(), ast_dsp_process(), ast_feature_request_and_dial(), ast_frame_dump(), ast_indicate(), async_wait(), auto_congest(), control2str(), disa_exec(), handle_response(), handle_response_invite(), mgcp_indicate(), misdn_indication(), monitor_handle_owned(), nbs_call(), oh323_indicate(), oss_hangup(), oss_indicate(), pbx_builtin_congestion(), sip_indicate(), skinny_indicate(), socket_read(), vpb_indicate(), wait_for_answer(), zt_indicate(), and zt_read().
#define AST_CONTROL_DISCONNECT 43 |
#define AST_CONTROL_FLASH 9 |
Flash hook
Definition at line 227 of file frame.h.
Referenced by ast_bridge_call(), ast_frame_dump(), console_flash(), control2str(), handle_request_info(), misdn_indication(), monitor_handle_owned(), send_dtmf(), wait_for_answer(), zt_indicate(), and zt_read().
#define AST_CONTROL_HANGUP 1 |
Other end has hungup
Definition at line 211 of file frame.h.
Referenced by __ast_dsp_call_progress(), __ast_request_and_dial(), app_exec(), ast_bridge_call(), ast_dsp_process(), ast_feature_request_and_dial(), ast_frame_dump(), ast_queue_frame(), ast_queue_hangup(), ast_read(), ast_recvtext(), ast_waitfordigit_full(), ast_waitstream(), ast_waitstream_exten(), ast_waitstream_fr(), ast_waitstream_full(), attempt_transmit(), control2str(), disa_exec(), do_parking_thread(), local_hangup(), monitor_handle_owned(), receive_dtmf_digits(), rpt(), vpb_indicate(), and wait_for_answer().
#define AST_CONTROL_HOLD 16 |
Indicate call is placed on hold
Definition at line 241 of file frame.h.
Referenced by ast_indicate(), ast_park_call(), builtin_atxfer(), builtin_blindtransfer(), control2str(), misdn_indication(), sip_indicate(), wait_for_answer(), and zt_indicate().
#define AST_CONTROL_INBAND_INFO 42 |
#define AST_CONTROL_OFFHOOK 7 |
Line is off hook
Definition at line 223 of file frame.h.
Referenced by ast_frame_dump(), control2str(), misdn_indication(), wait_for_answer(), and zt_handle_event().
#define AST_CONTROL_OPTION 11 |
Set a low-level option
Definition at line 231 of file frame.h.
Referenced by ast_bridge_call(), ast_frame_dump(), control2str(), and iax2_setoption().
#define AST_CONTROL_PROCEEDING 15 |
Indicate CALL PROCEEDING
Definition at line 239 of file frame.h.
Referenced by ast_indicate(), control2str(), misdn_indication(), oh323_indicate(), sip_indicate(), skinny_indicate(), wait_for_answer(), and zt_indicate().
#define AST_CONTROL_PROGRESS 14 |
Indicate PROGRESS
Definition at line 237 of file frame.h.
Referenced by __ast_request_and_dial(), ast_indicate(), control2str(), handle_response(), handle_response_invite(), misdn_indication(), oh323_indicate(), pbx_builtin_progress(), progress(), setup_rtp_connection(), sip_indicate(), skinny_indicate(), socket_read(), wait_for_answer(), and zt_indicate().
#define AST_CONTROL_RADIO_KEY 12 |
Key Radio
Definition at line 233 of file frame.h.
Referenced by ast_frame_dump(), control2str(), function_remote(), handle_remote_data(), handle_remote_phone_dtmf(), rmt_telem_start(), rpt(), rpt_exec(), zt_handle_event(), zt_indicate(), and zt_read().
#define AST_CONTROL_RADIO_UNKEY 13 |
Un-Key Radio
Definition at line 235 of file frame.h.
Referenced by ast_frame_dump(), control2str(), function_remote(), handle_remote_data(), handle_remote_phone_dtmf(), rmt_telem_finish(), rmt_telem_start(), rpt(), rpt_exec(), zt_handle_event(), zt_indicate(), and zt_read().
#define AST_CONTROL_RING 2 |
Local ring
Definition at line 213 of file frame.h.
Referenced by aopen_handle_escape(), ast_frame_dump(), bestdata_handle_escape(), control2str(), i4l_handle_escape(), misdn_indication(), modem_mini_packet(), monitor_handle_owned(), oss_call(), ss_thread(), waitforring_exec(), and zt_handle_event().
#define AST_CONTROL_RINGING 3 |
Remote end is ringing
Definition at line 215 of file frame.h.
Referenced by __ast_dsp_call_progress(), __ast_request_and_dial(), alsa_call(), alsa_indicate(), ast_bridge_call(), ast_dsp_process(), ast_feature_request_and_dial(), ast_frame_dump(), ast_indicate(), ast_waitfordigit_full(), ast_waitstream(), ast_waitstream_exten(), ast_waitstream_fr(), ast_waitstream_full(), attempt_transfer(), chan_ringing(), control2str(), dial_exec_full(), handle_response_invite(), i4l_handle_escape(), mgcp_call(), mgcp_indicate(), misdn_indication(), oh323_indicate(), oss_call(), oss_indicate(), pbx_builtin_ringing(), phone_call(), progress(), queue_exec(), sip_indicate(), skinny_call(), skinny_indicate(), vpb_fixup(), vpb_indicate(), wait_for_answer(), zt_handle_event(), zt_indicate(), and zt_read().
#define AST_CONTROL_TAKEOFFHOOK 6 |
Make it go off hook
Definition at line 221 of file frame.h.
Referenced by ast_frame_dump(), control2str(), and misdn_indication().
#define AST_CONTROL_UNHOLD 17 |
Indicate call is left from hold
Definition at line 243 of file frame.h.
Referenced by ast_feature_request_and_dial(), ast_indicate(), builtin_atxfer(), builtin_blindtransfer(), control2str(), do_parking_thread(), misdn_indication(), park_exec(), sip_indicate(), wait_for_answer(), and zt_indicate().
#define AST_CONTROL_VIDUPDATE 18 |
Indicate video frame update
Definition at line 245 of file frame.h.
Referenced by alsa_indicate(), ast_indicate(), ast_play_and_record_full(), ast_waitstream(), handle_recordfile(), handle_request_info(), oss_indicate(), sip_indicate(), and wait_for_answer().
#define AST_CONTROL_WINK 10 |
#define AST_FORMAT_ADPCM (1 << 5) |
ADPCM (IMA)
Definition at line 183 of file frame.h.
Referenced by adpcmtolin_sample(), ast2vpbformat(), ast2vpbformatname(), ast_best_codec(), ast_codec_get_len(), ast_codec_get_samples(), ast_rtp_write(), astformatbits(), convertcap(), lintoadpcm_frameout(), load_module(), vox_open(), vox_read(), and vox_write().
#define AST_FORMAT_ALAW (1 << 3) |
Raw A-law data (G.711)
Definition at line 179 of file frame.h.
Referenced by alawtolin_sample(), alawtoulaw_sample(), ast2vpbformat(), ast2vpbformatname(), ast_best_codec(), ast_codec_get_len(), ast_codec_get_samples(), ast_dsp_process(), ast_rtp_write(), astformatbits(), cb_events(), convertcap(), lintoalaw_frameout(), load_module(), misdn_read(), misdn_set_opt_exec(), pcm_open(), pcm_read(), pcm_write(), sms_generate(), ulawtoalaw_frameout(), zt_new(), zt_read(), and zt_write().
#define AST_FORMAT_G723_1 (1 << 0) |
G.723.1 compression
Definition at line 173 of file frame.h.
Referenced by ast_best_codec(), ast_codec_get_samples(), ast_rtp_write(), convertcap(), g723_open(), g723_write(), g723tolin_sample(), lintog723_frameout(), load_module(), phone_request(), phone_setup(), and phone_write().
#define AST_FORMAT_G726 (1 << 4) |
ADPCM (G.726, 32kbps)
Definition at line 181 of file frame.h.
Referenced by ast_best_codec(), ast_codec_get_len(), ast_codec_get_samples(), ast_rtp_write(), g726_16_open(), g726_24_open(), g726_32_open(), g726_40_open(), g726_read(), g726_write(), g726tolin_sample(), lintog726_frameout(), and load_module().
#define AST_FORMAT_G729A (1 << 8) |
G.729A audio
Definition at line 189 of file frame.h.
Referenced by add_codec_to_sdp(), ast_best_codec(), ast_codec_get_len(), ast_codec_get_samples(), ast_rtp_write(), convertcap(), g729_open(), g729_read(), g729_write(), and load_module().
#define AST_FORMAT_GSM (1 << 1) |
GSM compression
Definition at line 175 of file frame.h.
Referenced by ast_best_codec(), ast_codec_get_len(), ast_codec_get_samples(), ast_rtp_write(), convertcap(), gsm_open(), gsm_read(), gsm_write(), gsmtolin_sample(), lintogsm_frameout(), load_module(), wav_open(), wav_read(), and wav_write().
#define AST_FORMAT_H261 (1 << 18) |
#define AST_FORMAT_H263 (1 << 19) |
H.263 Video
Definition at line 203 of file frame.h.
Referenced by ast_rtp_write(), h263_open(), h263_read(), h263_write(), and load_module().
#define AST_FORMAT_H263_PLUS (1 << 20) |
#define AST_FORMAT_ILBC (1 << 10) |
iLBC Free Compression
Definition at line 193 of file frame.h.
Referenced by ast_best_codec(), ast_codec_get_len(), ast_codec_get_samples(), ast_codec_interp_len(), ast_rtp_write(), convertcap(), ilbc_open(), ilbc_read(), ilbc_write(), ilbctolin_sample(), lintoilbc_frameout(), and load_module().
#define AST_FORMAT_JPEG (1 << 16) |
JPEG Images
Definition at line 197 of file frame.h.
Referenced by jpeg_read_image(), and jpeg_write_image().
#define AST_FORMAT_LPC10 (1 << 7) |
LPC10, 180 samples/frame
Definition at line 187 of file frame.h.
Referenced by ast_best_codec(), ast_codec_get_samples(), ast_rtp_write(), lintolpc10_frameout(), and lpc10tolin_sample().
#define AST_FORMAT_MAX_AUDIO (1 << 15) |
Maximum audio format
Definition at line 195 of file frame.h.
Referenced by add_sdp(), ast_closestream(), ast_filehelper(), ast_playstream(), ast_rtp_raw_write(), ast_rtp_read(), ast_writestream(), oh323_request(), phone_read(), sip_request_call(), transmit_connect_with_sdp(), and transmit_modify_with_sdp().
#define AST_FORMAT_MAX_VIDEO (1 << 24) |
#define AST_FORMAT_PNG (1 << 17) |
#define AST_FORMAT_SLINEAR (1 << 6) |
Raw 16-bit Signed Linear (8000 Hz) PCM
Definition at line 185 of file frame.h.
Referenced by action_originate(), adpcmtolin_frameout(), agent_new(), alawtolin_frameout(), alsa_new(), alsa_read(), alsa_request(), aopen_read(), ast2vpbformat(), ast2vpbformatname(), ast_app_getvoice(), ast_best_codec(), ast_channel_make_compatible(), ast_channel_spy_add(), ast_channel_start_silence_generator(), ast_codec_get_len(), ast_codec_get_samples(), ast_dsp_call_progress(), ast_dsp_digitdetect(), ast_dsp_process(), ast_dsp_silence(), ast_frame_adjust_volume(), ast_frame_slinear_sum(), ast_play_and_prepend(), ast_play_and_record_full(), ast_rtp_read(), ast_rtp_write(), ast_slinfactory_feed(), astformatbits(), attempt_reconnect(), attempt_thread(), background_detect_exec(), bestdata_read(), channel_spy(), chanspy_exec(), conf_run(), dictate_exec(), do_chanreads(), do_waiting(), eagi_exec(), fast_originate(), function_ilink(), g723tolin_frameout(), g726tolin_frameout(), gsmtolin_frameout(), handle_recordfile(), i4l_write(), iax_frame_wrap(), ices_exec(), ilbctolin_frameout(), launch_monitor_thread(), linear_alloc(), linear_generator(), lintoadpcm_sample(), lintoalaw_sample(), lintog723_sample(), lintog726_sample(), lintogsm_sample(), lintoilbc_sample(), lintolpc10_sample(), lintospeex_sample(), lintoulaw_sample(), load_module(), load_moh_classes(), lpc10tolin_frameout(), measurenoise(), misdn_set_opt_exec(), moh_class_malloc(), mp3_exec(), nbs_request(), nbs_xwrite(), NBScat_exec(), ogg_vorbis_write(), oss_new(), oss_read(), oss_request(), page_thread(), parkandannounce_exec(), phone_new(), phone_read(), phone_request(), phone_setup(), phone_write(), playtones_alloc(), queue_frame_to_spies(), rpt(), rpt_call(), rpt_exec(), rpt_tele_thread(), rxfax_exec(), send_waveform_to_channel(), silence_generator_generate(), slinear_open(), slinear_read(), slinear_write(), sms_generate(), socket_read(), speextolin_frameout(), tonepair_alloc(), tonepair_generator(), txfax_exec(), ulawtolin_frameout(), vpb_new(), wav_open(), wav_write(), zt_new(), zt_read(), zt_request(), and zt_write().
#define AST_FORMAT_SPEEX (1 << 9) |
SpeeX Free Compression
Definition at line 191 of file frame.h.
Referenced by ast_best_codec(), ast_codec_get_samples(), ast_rtp_write(), convertcap(), lintospeex_frameout(), and speextolin_sample().
#define AST_FORMAT_ULAW (1 << 2) |
Raw mu-law data (G.711)
Definition at line 177 of file frame.h.
Referenced by __adsi_transmit_messages(), adsi_careful_send(), adsi_transmit_message_full(), alarmreceiver_exec(), alawtoulaw_frameout(), ast2vpbformat(), ast2vpbformatname(), ast_best_codec(), ast_codec_get_len(), ast_codec_get_samples(), ast_dsp_process(), ast_rtp_write(), astformatbits(), au_open(), au_read(), au_write(), build_conf(), conf_run(), convertcap(), disa_exec(), get_callerid_ast(), lintoulaw_frameout(), load_module(), milliwatt_exec(), milliwatt_generate(), pcm_open(), pcm_read(), pcm_write(), phone_request(), phone_setup(), phone_write(), send_tone_burst(), ulawtoalaw_sample(), ulawtolin_sample(), zt_new(), zt_read(), zt_request(), and zt_write().
#define ast_frame_byteswap_be | ( | fr | ) | do { struct ast_frame *__f = (fr); ast_swapcopy_samples(__f->data, __f->data, __f->samples); } while(0) |
#define ast_frame_byteswap_le | ( | fr | ) | do { ; } while(0) |
#define AST_FRAME_CNG 10 |
Comfort Noise frame (subclass is level of CNG in -dBov), body may include zero or more 8-bit quantization coefficients
Definition at line 147 of file frame.h.
Referenced by ast_read(), ast_translate(), calc_timestamp(), lintospeex_frameout(), and process_rfc3389().
#define AST_FRAME_CONTROL 4 |
A control frame, subclass is AST_CONTROL_*
Definition at line 134 of file frame.h.
Referenced by __ast_request_and_dial(), agent_read(), alsa_call(), aopen_handle_escape(), app_exec(), ast_bridge_call(), ast_dsp_process(), ast_feature_request_and_dial(), ast_frame_dump(), ast_queue_control(), ast_queue_frame(), ast_queue_hangup(), ast_read(), ast_recvtext(), ast_waitfordigit_full(), ast_waitstream(), ast_waitstream_exten(), ast_waitstream_fr(), ast_waitstream_full(), ast_write(), async_wait(), attempt_transmit(), auto_congest(), bestdata_handle_escape(), console_answer(), console_flash(), console_sendtext(), disa_exec(), do_parking_thread(), handle_request_info(), i4l_handle_escape(), iax2_answer(), iax2_indicate(), iax2_setoption(), iax_showframe(), local_answer(), local_hangup(), local_indicate(), mgcp_queue_control(), misdn_bridge(), modem_mini_packet(), monitor_handle_owned(), oss_call(), phone_exception(), receive_dtmf_digits(), rpt(), send_dtmf(), socket_read(), ss_thread(), wait_for_answer(), waitforring_exec(), zt_bridge(), zt_handle_event(), and zt_read().
#define AST_FRAME_DTMF 1 |
A DTMF digit, subclass is the digit
Definition at line 128 of file frame.h.
Referenced by __adsi_transmit_messages(), action_zapdialoffhook(), agent_ack_sleep(), agent_read(), app_exec(), ast_app_getvoice(), ast_bridge_call(), ast_dsp_process(), ast_dtmf_stream(), ast_feature_request_and_dial(), ast_frame_dump(), ast_play_and_prepend(), ast_play_and_record_full(), ast_read(), ast_waitfordigit(), ast_waitfordigit_full(), ast_waitstream(), ast_waitstream_exten(), ast_waitstream_fr(), ast_waitstream_full(), ast_write(), background_detect_exec(), bestdata_handle_escape(), cb_events(), channel_spy(), conf_exec(), conf_run(), console_dial(), dictate_exec(), disa_exec(), do_chanreads(), do_immediate_setup(), echo_exec(), handle_message(), handle_recordfile(), handle_request(), handle_request_info(), i4l_handle_escape(), iax2_digit(), iax_showframe(), local_digit(), mgcp_rtp_read(), misdn_bridge(), monitor_handle_owned(), mp3_exec(), NBScat_exec(), oh323_rtp_read(), phone_exception(), process_ast_dsp(), receive_dtmf_digits(), rpt(), rpt_call(), send_digit(), send_dtmf(), send_waveform_to_channel(), sip_rtp_read(), ss_thread(), vpb_bridge(), wait_for_answer(), zt_bridge(), zt_handle_event(), and zt_read().
#define AST_FRAME_HTML 9 |
HTML Frame
Definition at line 144 of file frame.h.
Referenced by ast_frame_dump(), ast_write(), iax2_sendhtml(), local_sendhtml(), sendurl_exec(), and wait_for_answer().
#define AST_FRAME_IAX 6 |
Inter Asterisk Exchange private frame type
Definition at line 138 of file frame.h.
Referenced by ast_frame_dump(), attempt_transmit(), auth_reject(), authenticate_reply(), authenticate_request(), auto_hangup(), cache_get_callno_locked(), calc_timestamp(), dp_lookup(), iax2_call(), iax2_do_register(), iax2_dprequest(), iax2_hangup(), iax2_poke_peer(), iax2_provision(), iax2_send(), iax2_start_transfer(), iax2_transfer(), iax2_vnak(), iax_showframe(), raw_hangup(), registry_authrequest(), registry_rerequest(), send_lagrq(), send_ping(), socket_read(), try_transfer(), and update_registry().
#define AST_FRAME_IMAGE 8 |
Image Frames
Definition at line 142 of file frame.h.
Referenced by ast_frame_dump(), iax2_sendimage(), jpeg_read_image(), jpeg_write_image(), mgcp_write(), nbs_xwrite(), oh323_write(), phone_read(), phone_write(), sip_write(), skinny_write(), wait_for_answer(), and zt_write().
#define AST_FRAME_NULL 5 |
An empty, useless frame
Definition at line 136 of file frame.h.
Referenced by __zt_exception(), agent_new(), agent_read(), alsa_read(), aopen_handle_escape(), ast_channel_masquerade(), ast_channel_setwhentohangup(), ast_dsp_process(), ast_frame_dump(), ast_read(), ast_rtcp_read(), ast_rtp_read(), ast_softhangup_nolock(), bestdata_handle_escape(), do_chanreads(), features_read(), handle_request_invite(), handle_response_invite(), i4l_handle_escape(), iax2_read(), iax2_write(), local_read(), mgcp_rtp_read(), monitor_handle_owned(), oh323_rtp_read(), oss_read(), phone_exception(), phone_read(), process_ast_dsp(), process_sdp(), send_dtmf(), sip_rtp_read(), socket_read(), vpb_read(), wakeup_sub(), zt_handle_event(), and zt_read().
#define AST_FRAME_TEXT 7 |
Text messages
Definition at line 140 of file frame.h.
Referenced by ast_feature_request_and_dial(), ast_frame_dump(), ast_recvtext(), ast_write(), console_sendtext(), function_ilink(), handle_link_data(), iax2_sendtext(), receive_message(), rpt(), send_link_dtmf(), wait_for_answer(), and zt_read().
#define AST_FRAME_VIDEO 3 |
Video frame, maybe?? :)
Definition at line 132 of file frame.h.
Referenced by ast_frame_dump(), ast_play_and_prepend(), ast_play_and_record_full(), ast_rtp_read(), ast_rtp_write(), ast_write(), ast_writestream(), decode_frame(), echo_exec(), h263_open(), h263_read(), h263_write(), handle_recordfile(), iax2_send(), phone_read(), sip_write(), socket_read(), and vpb_bridge().
#define AST_FRAME_VOICE 2 |
Voice data, subclass is AST_FORMAT_*
Definition at line 130 of file frame.h.
Referenced by __ast_smoother_feed(), adpcmtolin_frameout(), adpcmtolin_sample(), adsi_careful_send(), agent_read(), agent_write(), alawtolin_frameout(), alawtolin_sample(), alawtoulaw_frameout(), alawtoulaw_sample(), alsa_read(), aopen_read(), ast_app_getvoice(), ast_channel_spy_read_frame(), ast_dsp_call_progress(), ast_dsp_digitdetect(), ast_dsp_process(), ast_dsp_silence(), ast_frame_adjust_volume(), ast_frame_dump(), ast_frame_slinear_sum(), ast_play_and_prepend(), ast_play_and_record_full(), ast_prod(), ast_queue_frame(), ast_read(), ast_rtp_read(), ast_rtp_write(), ast_smoother_read(), ast_waitfordigit_full(), ast_waitstream_full(), ast_write(), ast_writestream(), au_open(), au_read(), au_write(), background_detect_exec(), bestdata_read(), calc_timestamp(), conf_run(), dictate_exec(), disa_exec(), do_chanreads(), do_waiting(), echo_exec(), g723_open(), g723_write(), g723tolin_frameout(), g723tolin_sample(), g726_16_open(), g726_24_open(), g726_32_open(), g726_40_open(), g726_read(), g726_write(), g726tolin_frameout(), g726tolin_sample(), g729_open(), g729_read(), g729_write(), get_from_jb(), gsm_open(), gsm_read(), gsm_write(), gsmtolin_frameout(), gsmtolin_sample(), handle_recordfile(), i4l_write(), iax2_send(), iax2_write(), iax_frame_wrap(), ices_exec(), ilbc_open(), ilbc_read(), ilbc_write(), ilbctolin_frameout(), ilbctolin_sample(), linear_generator(), lintoadpcm_frameout(), lintoadpcm_sample(), lintoalaw_frameout(), lintoalaw_sample(), lintog723_frameout(), lintog723_sample(), lintog726_frameout(), lintog726_sample(), lintogsm_frameout(), lintogsm_sample(), lintoilbc_frameout(), lintoilbc_sample(), lintolpc10_frameout(), lintolpc10_sample(), lintospeex_frameout(), lintospeex_sample(), lintoulaw_frameout(), lintoulaw_sample(), local_write(), lpc10tolin_frameout(), lpc10tolin_sample(), measurenoise(), mgcp_rtp_read(), mgcp_write(), milliwatt_generate(), misdn_read(), moh_generate(), mp3_exec(), nbs_xwrite(), NBScat_exec(), ogg_vorbis_write(), oh323_rtp_read(), oh323_write(), oss_read(), pcm_open(), pcm_read(), pcm_write(), phone_read(), phone_write(), recordthread(), rpt(), run_agi(), rxfax_exec(), send_tone_burst(), send_waveform_to_channel(), silence_generator_generate(), sip_rtp_read(), sip_write(), skinny_rtp_read(), skinny_write(), slinear_open(), slinear_read(), slinear_write(), sms_generate(), socket_read(), speextolin_frameout(), speextolin_sample(), tonepair_generator(), txfax_exec(), ulawtoalaw_frameout(), ulawtoalaw_sample(), ulawtolin_frameout(), ulawtolin_sample(), vox_open(), vox_read(), vox_write(), vpb_bridge(), vpb_write(), wait_for_answer(), wav_open(), wav_read(), wav_write(), zt_read(), and zt_write().
#define AST_FRIENDLY_OFFSET 64 |
Definition at line 114 of file frame.h.
Referenced by adpcmtolin_frameout(), alawtolin_frameout(), alawtoulaw_frameout(), alsa_read(), aopen_read(), ast_frdup(), ast_frisolate(), ast_prod(), ast_rtp_read(), ast_smoother_read(), au_read(), bestdata_read(), conf_run(), do_chanreads(), g723_read(), g723tolin_frameout(), g726_read(), g726tolin_frameout(), g729_read(), get_from_jb(), gsm_read(), gsmtolin_frameout(), h263_read(), iax_frame_wrap(), ilbc_read(), ilbctolin_frameout(), linear_generator(), lintoadpcm_frameout(), lintoalaw_frameout(), lintog723_frameout(), lintog726_frameout(), lintogsm_frameout(), lintoilbc_frameout(), lintolpc10_frameout(), lintospeex_frameout(), lintoulaw_frameout(), lpc10tolin_frameout(), milliwatt_generate(), moh_generate(), mp3_exec(), NBScat_exec(), oss_read(), pcm_read(), phone_read(), process_rfc3389(), rxfax_exec(), send_tone_burst(), send_waveform_to_channel(), slinear_read(), sms_generate(), speextolin_frameout(), tonepair_generator(), txfax_exec(), ulawtoalaw_frameout(), ulawtolin_frameout(), vox_read(), wav_read(), and zt_read().
#define AST_HTML_BEGIN 4 |
#define AST_HTML_DATA 2 |
#define AST_HTML_END 8 |
#define AST_HTML_LDCOMPLETE 16 |
Load is complete
Definition at line 161 of file frame.h.
Referenced by ast_frame_dump(), and sendurl_exec().
#define AST_HTML_LINKREJECT 20 |
#define AST_HTML_LINKURL 18 |
#define AST_HTML_NOSUPPORT 17 |
Peer is unable to support HTML
Definition at line 163 of file frame.h.
Referenced by ast_frame_dump(), and sendurl_exec().
#define AST_HTML_UNLINK 19 |
#define AST_HTML_URL 1 |
Sending a URL
Definition at line 153 of file frame.h.
Referenced by ast_channel_sendurl(), and ast_frame_dump().
#define AST_MALLOCD_DATA (1 << 1) |
Need the data be free'd?
Definition at line 122 of file frame.h.
Referenced by ast_frfree(), and ast_frisolate().
#define AST_MALLOCD_HDR (1 << 0) |
Need the header be free'd?
Definition at line 120 of file frame.h.
Referenced by ast_frdup(), ast_frfree(), and ast_frisolate().
#define AST_MALLOCD_SRC (1 << 2) |
Need the source be free'd? (haha!)
Definition at line 124 of file frame.h.
Referenced by ast_frfree(), and ast_frisolate().
#define AST_MIN_OFFSET 32 |
#define AST_OPTION_AUDIO_MODE 4 |
Set (or clear) Audio (Not-Clear) Mode
Definition at line 271 of file frame.h.
Referenced by zt_hangup(), and zt_setoption().
#define AST_OPTION_FLAG_REQUEST 0 |
#define AST_OPTION_RELAXDTMF 3 |
Relax the parameters for DTMF reception (mainly for radio use)
Definition at line 268 of file frame.h.
Referenced by rpt(), and zt_setoption().
#define AST_OPTION_RXGAIN 6 |
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)
Definition at line 287 of file frame.h.
Referenced by iax2_setoption(), play_record_review(), reset_volumes(), set_talk_volume(), vm_forwardoptions(), and zt_setoption().
#define AST_OPTION_TDD 2 |
Put a compatible channel into TDD (TTY for the hearing-impared) mode
Definition at line 265 of file frame.h.
Referenced by handle_tddmode(), zt_hangup(), and zt_setoption().
#define AST_OPTION_TONE_VERIFY 1 |
Verify touchtones by muting audio transmission (and reception) and verify the tone is still present
Definition at line 262 of file frame.h.
Referenced by conf_run(), rpt(), try_calling(), zt_hangup(), and zt_setoption().
#define AST_OPTION_TXGAIN 5 |
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)
Definition at line 279 of file frame.h.
Referenced by chanspy_exec(), iax2_setoption(), reset_volumes(), set_listen_volume(), set_volume(), and zt_setoption().
#define ast_smoother_feed | ( | s, | |||
f | ) | __ast_smoother_feed(s, f, 0) |
#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) |
#define AST_SMOOTHER_FLAG_G729 (1 << 0) |
Definition at line 250 of file frame.h.
Referenced by __ast_smoother_feed(), ast_rtp_write(), and ast_smoother_read().
int __ast_smoother_feed | ( | struct ast_smoother * | s, | |
struct ast_frame * | f, | |||
int | swap | |||
) |
Definition at line 137 of file frame.c.
References AST_FRAME_VOICE, ast_log(), AST_MIN_OFFSET, AST_SMOOTHER_FLAG_G729, ast_swapcopy_samples(), ast_frame::data, ast_frame::datalen, ast_frame::delivery, ast_smoother::f, ast_frame::frametype, LOG_NOTICE, LOG_WARNING, ast_frame::offset, s, ast_frame::samples, SMOOTHER_SIZE, and ast_frame::subclass.
00138 { 00139 if (f->frametype != AST_FRAME_VOICE) { 00140 ast_log(LOG_WARNING, "Huh? Can't smooth a non-voice frame!\n"); 00141 return -1; 00142 } 00143 if (!s->format) { 00144 s->format = f->subclass; 00145 s->samplesperbyte = (float)f->samples / (float)f->datalen; 00146 } else if (s->format != f->subclass) { 00147 ast_log(LOG_WARNING, "Smoother was working on %d format frames, now trying to feed %d?\n", s->format, f->subclass); 00148 return -1; 00149 } 00150 if (s->len + f->datalen > SMOOTHER_SIZE) { 00151 ast_log(LOG_WARNING, "Out of smoother space\n"); 00152 return -1; 00153 } 00154 if (((f->datalen == s->size) || ((f->datalen < 10) && (s->flags & AST_SMOOTHER_FLAG_G729))) 00155 && !s->opt && (f->offset >= AST_MIN_OFFSET)) { 00156 if (!s->len) { 00157 /* Optimize by sending the frame we just got 00158 on the next read, thus eliminating the douple 00159 copy */ 00160 s->opt = f; 00161 return 0; 00162 } else { 00163 s->optimizablestream++; 00164 if (s->optimizablestream > 10) { 00165 /* For the past 10 rounds, we have input and output 00166 frames of the correct size for this smoother, yet 00167 we were unable to optimize because there was still 00168 some cruft left over. Lets just drop the cruft so 00169 we can move to a fully optimized path */ 00170 s->len = 0; 00171 s->opt = f; 00172 return 0; 00173 } 00174 } 00175 } else 00176 s->optimizablestream = 0; 00177 if (s->flags & AST_SMOOTHER_FLAG_G729) { 00178 if (s->len % 10) { 00179 ast_log(LOG_NOTICE, "Dropping extra frame of G.729 since we already have a VAD frame at the end\n"); 00180 return 0; 00181 } 00182 } 00183 if (swap) 00184 ast_swapcopy_samples(s->data+s->len, f->data, f->samples); 00185 else 00186 memcpy(s->data + s->len, f->data, f->datalen); 00187 /* If either side is empty, reset the delivery time */ 00188 if (!s->len || ast_tvzero(f->delivery) || ast_tvzero(s->delivery)) /* XXX really ? */ 00189 s->delivery = f->delivery; 00190 s->len += f->datalen; 00191 return 0; 00192 }
char* ast_codec2str | ( | int | codec | ) |
Get a name from a format Gets a name from a format.
codec | codec number (1,2,4,8,16,etc.) |
Definition at line 585 of file frame.c.
References AST_FORMAT_LIST, and desc.
Referenced by moh_alloc(), show_codec_n(), and show_codecs().
00585 { 00586 int x = 0; 00587 char *ret = "unknown"; 00588 for (x = 0 ; x < sizeof(AST_FORMAT_LIST) / sizeof(struct ast_format_list) ; x++) { 00589 if(AST_FORMAT_LIST[x].visible && AST_FORMAT_LIST[x].bits == codec) { 00590 ret = AST_FORMAT_LIST[x].desc; 00591 break; 00592 } 00593 } 00594 return ret; 00595 }
int ast_codec_choose | ( | struct ast_codec_pref * | pref, | |
int | formats, | |||
int | find_best | |||
) |
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.
Definition at line 999 of file frame.c.
References ast_best_codec(), AST_FORMAT_LIST, and ast_codec_pref::order.
Referenced by process_sdp(), sip_new(), and socket_read().
01000 { 01001 size_t size = 0; 01002 int x = 0, ret = 0, slot = 0; 01003 01004 size = sizeof(AST_FORMAT_LIST) / sizeof(struct ast_format_list); 01005 for (x = 0; x < size; x++) { 01006 slot = pref->order[x]; 01007 01008 if(!slot) 01009 break; 01010 if ( formats & AST_FORMAT_LIST[slot-1].bits ) { 01011 ret = AST_FORMAT_LIST[slot-1].bits; 01012 break; 01013 } 01014 } 01015 if(ret) 01016 return ret; 01017 01018 return find_best ? ast_best_codec(formats) : 0; 01019 }
int ast_codec_get_len | ( | int | format, | |
int | samples | |||
) |
Returns the number of bytes for the number of samples of the given format.
Definition at line 1240 of file frame.c.
References AST_FORMAT_ADPCM, AST_FORMAT_ALAW, AST_FORMAT_G726, AST_FORMAT_G729A, AST_FORMAT_GSM, AST_FORMAT_ILBC, AST_FORMAT_SLINEAR, AST_FORMAT_ULAW, ast_getformatname(), ast_log(), and LOG_WARNING.
Referenced by ast_channel_spy_read_frame(), copy_data_from_queue(), moh_generate(), and monmp3thread().
01241 { 01242 int len = 0; 01243 01244 /* XXX Still need speex, g723, and lpc10 XXX */ 01245 switch(format) { 01246 case AST_FORMAT_ILBC: 01247 len = (samples / 240) * 50; 01248 break; 01249 case AST_FORMAT_GSM: 01250 len = (samples / 160) * 33; 01251 break; 01252 case AST_FORMAT_G729A: 01253 len = samples / 8; 01254 break; 01255 case AST_FORMAT_SLINEAR: 01256 len = samples * 2; 01257 break; 01258 case AST_FORMAT_ULAW: 01259 case AST_FORMAT_ALAW: 01260 len = samples; 01261 break; 01262 case AST_FORMAT_ADPCM: 01263 case AST_FORMAT_G726: 01264 len = samples / 2; 01265 break; 01266 default: 01267 ast_log(LOG_WARNING, "Unable to calculate sample length for format %s\n", ast_getformatname(format)); 01268 } 01269 01270 return len; 01271 }
int ast_codec_get_samples | ( | struct ast_frame * | f | ) |
Returns the number of samples contained in the frame.
Definition at line 1199 of file frame.c.
References AST_FORMAT_ADPCM, AST_FORMAT_ALAW, AST_FORMAT_G723_1, AST_FORMAT_G726, AST_FORMAT_G729A, AST_FORMAT_GSM, AST_FORMAT_ILBC, AST_FORMAT_LPC10, AST_FORMAT_SLINEAR, AST_FORMAT_SPEEX, AST_FORMAT_ULAW, ast_getformatname(), ast_log(), ast_frame::data, ast_frame::datalen, g723_samples(), LOG_WARNING, speex_samples(), and ast_frame::subclass.
Referenced by ast_rtp_read(), moh_generate(), and socket_read().
01200 { 01201 int samples=0; 01202 switch(f->subclass) { 01203 case AST_FORMAT_SPEEX: 01204 samples = speex_samples(f->data, f->datalen); 01205 break; 01206 case AST_FORMAT_G723_1: 01207 samples = g723_samples(f->data, f->datalen); 01208 break; 01209 case AST_FORMAT_ILBC: 01210 samples = 240 * (f->datalen / 50); 01211 break; 01212 case AST_FORMAT_GSM: 01213 samples = 160 * (f->datalen / 33); 01214 break; 01215 case AST_FORMAT_G729A: 01216 samples = f->datalen * 8; 01217 break; 01218 case AST_FORMAT_SLINEAR: 01219 samples = f->datalen / 2; 01220 break; 01221 case AST_FORMAT_LPC10: 01222 /* assumes that the RTP packet contains one LPC10 frame */ 01223 samples = 22 * 8; 01224 samples += (((char *)(f->data))[7] & 0x1) * 8; 01225 break; 01226 case AST_FORMAT_ULAW: 01227 case AST_FORMAT_ALAW: 01228 samples = f->datalen; 01229 break; 01230 case AST_FORMAT_ADPCM: 01231 case AST_FORMAT_G726: 01232 samples = f->datalen * 2; 01233 break; 01234 default: 01235 ast_log(LOG_WARNING, "Unable to calculate samples for format %s\n", ast_getformatname(f->subclass)); 01236 } 01237 return samples; 01238 }
static int ast_codec_interp_len | ( | int | format | ) | [inline, static] |
Gets duration in ms of interpolation frame for a format.
Definition at line 459 of file frame.h.
References AST_FORMAT_ILBC.
Referenced by get_from_jb().
00460 { 00461 return (format == AST_FORMAT_ILBC) ? 30 : 20; 00462 }
int ast_codec_pref_append | ( | struct ast_codec_pref * | pref, | |
int | format | |||
) |
Append a codec to a preference list, removing it first if it was already there.
Definition at line 970 of file frame.c.
References ast_codec_pref_remove(), AST_FORMAT_LIST, and ast_codec_pref::order.
Referenced by ast_parse_allow_disallow().
00971 { 00972 size_t size = 0; 00973 int x = 0, newindex = -1; 00974 00975 ast_codec_pref_remove(pref, format); 00976 size = sizeof(AST_FORMAT_LIST) / sizeof(struct ast_format_list); 00977 00978 for (x = 0; x < size; x++) { 00979 if(AST_FORMAT_LIST[x].bits == format) { 00980 newindex = x + 1; 00981 break; 00982 } 00983 } 00984 00985 if(newindex) { 00986 for (x = 0; x < size; x++) { 00987 if(!pref->order[x]) { 00988 pref->order[x] = newindex; 00989 break; 00990 } 00991 } 00992 } 00993 00994 return x; 00995 }
void ast_codec_pref_convert | ( | struct ast_codec_pref * | pref, | |
char * | buf, | |||
size_t | size, | |||
int | right | |||
) |
Shift a codec preference list up or down 65 bytes so that it becomes an ASCII string.
Definition at line 873 of file frame.c.
References ast_codec_pref::order.
Referenced by check_access(), create_addr(), dump_prefs(), and socket_read().
00874 { 00875 int x = 0, differential = (int) 'A', mem = 0; 00876 char *from = NULL, *to = NULL; 00877 00878 if(right) { 00879 from = pref->order; 00880 to = buf; 00881 mem = size; 00882 } else { 00883 to = pref->order; 00884 from = buf; 00885 mem = 32; 00886 } 00887 00888 memset(to, 0, mem); 00889 for (x = 0; x < 32 ; x++) { 00890 if(!from[x]) 00891 break; 00892 to[x] = right ? (from[x] + differential) : (from[x] - differential); 00893 } 00894 }
int ast_codec_pref_index | ( | struct ast_codec_pref * | pref, | |
int | index | |||
) |
Codec located at a particular place in the preference index.
Definition at line 931 of file frame.c.
References AST_FORMAT_LIST, ast_format_list::bits, and ast_codec_pref::order.
Referenced by _sip_show_peer(), add_sdp(), ast_codec_pref_string(), function_iaxpeer(), function_sippeer(), iax2_show_peer(), print_codec_to_cli(), sip_show_user(), and socket_read().
00932 { 00933 int slot = 0; 00934 00935 00936 if((index >= 0) && (index < sizeof(pref->order))) { 00937 slot = pref->order[index]; 00938 } 00939 00940 return slot ? AST_FORMAT_LIST[slot-1].bits : 0; 00941 }
void ast_codec_pref_init | ( | struct ast_codec_pref * | pref | ) |
Initialize a codec preference to "no preference".
void ast_codec_pref_remove | ( | struct ast_codec_pref * | pref, | |
int | format | |||
) |
Remove a codec from a preference list.
Definition at line 944 of file frame.c.
References AST_FORMAT_LIST, ast_format_list::bits, and ast_codec_pref::order.
Referenced by ast_codec_pref_append(), and ast_parse_allow_disallow().
00945 { 00946 struct ast_codec_pref oldorder; 00947 int x=0, y=0; 00948 size_t size = 0; 00949 int slot = 0; 00950 00951 if(!pref->order[0]) 00952 return; 00953 00954 size = sizeof(AST_FORMAT_LIST) / sizeof(struct ast_format_list); 00955 00956 memcpy(&oldorder,pref,sizeof(struct ast_codec_pref)); 00957 memset(pref,0,sizeof(struct ast_codec_pref)); 00958 00959 for (x = 0; x < size; x++) { 00960 slot = oldorder.order[x]; 00961 if(! slot) 00962 break; 00963 if(AST_FORMAT_LIST[slot-1].bits != format) 00964 pref->order[y++] = slot; 00965 } 00966 00967 }
int ast_codec_pref_string | ( | struct ast_codec_pref * | pref, | |
char * | buf, | |||
size_t | size | |||
) |
Dump codec preference list into a string.
Definition at line 896 of file frame.c.
References ast_codec_pref_index(), and ast_getformatname().
Referenced by dump_prefs(), and socket_read().
00897 { 00898 int x = 0, codec = 0; 00899 size_t total_len = 0, slen = 0; 00900 char *formatname = 0; 00901 00902 memset(buf,0,size); 00903 total_len = size; 00904 buf[0] = '('; 00905 total_len--; 00906 for(x = 0; x < 32 ; x++) { 00907 if(total_len <= 0) 00908 break; 00909 if(!(codec = ast_codec_pref_index(pref,x))) 00910 break; 00911 if((formatname = ast_getformatname(codec))) { 00912 slen = strlen(formatname); 00913 if(slen > total_len) 00914 break; 00915 strncat(buf,formatname,total_len); 00916 total_len -= slen; 00917 } 00918 if(total_len && x < 31 && ast_codec_pref_index(pref , x + 1)) { 00919 strncat(buf,"|",total_len); 00920 total_len--; 00921 } 00922 } 00923 if(total_len) { 00924 strncat(buf,")",total_len); 00925 total_len--; 00926 } 00927 00928 return size - total_len; 00929 }
int ast_fr_fdhangup | ( | int | fd | ) |
Sends a hangup to an fd Send a hangup (NULL equivalent) on an fd.
fd | fd to write to |
struct ast_frame* ast_fr_fdread | ( | int | fd | ) |
Reads a frame from an fd Read a frame from a stream or packet fd, as written by fd_write.
fd | an opened fd to read from |
int ast_fr_fdwrite | ( | int | fd, | |
struct ast_frame * | frame | |||
) |
Writes a frame to an fd Write a frame to an fd
fd | Which fd to write to | |
frame | frame to write to the fd |
int ast_frame_adjust_volume | ( | struct ast_frame * | f, | |
int | adjustment | |||
) |
Adjusts the volume of the audio samples contained in a frame.
f | The frame containing the samples (must be AST_FRAME_VOICE and AST_FORMAT_SLINEAR) | |
adjustment | The number of dB to adjust up or down. |
Definition at line 1273 of file frame.c.
References AST_FORMAT_SLINEAR, AST_FRAME_VOICE, ast_slinear_saturated_divide(), ast_slinear_saturated_multiply(), ast_frame::data, ast_frame::frametype, ast_frame::samples, and ast_frame::subclass.
Referenced by ast_channel_spy_read_frame(), and conf_run().
01274 { 01275 int count; 01276 short *fdata = f->data; 01277 short adjust_value = abs(adjustment); 01278 01279 if ((f->frametype != AST_FRAME_VOICE) || (f->subclass != AST_FORMAT_SLINEAR)) 01280 return -1; 01281 01282 if (!adjustment) 01283 return 0; 01284 01285 for (count = 0; count < f->samples; count++) { 01286 if (adjustment > 0) { 01287 ast_slinear_saturated_multiply(&fdata[count], &adjust_value); 01288 } else if (adjustment < 0) { 01289 ast_slinear_saturated_divide(&fdata[count], &adjust_value); 01290 } 01291 } 01292 01293 return 0; 01294 }
void ast_frame_dump | ( | char * | name, | |
struct ast_frame * | f, | |||
char * | prefix | |||
) |
Dump a frame for debugging purposes
Definition at line 672 of file frame.c.
References AST_CONTROL_ANSWER, AST_CONTROL_BUSY, AST_CONTROL_CONGESTION, AST_CONTROL_FLASH, AST_CONTROL_HANGUP, AST_CONTROL_OFFHOOK, AST_CONTROL_OPTION, AST_CONTROL_RADIO_KEY, AST_CONTROL_RADIO_UNKEY, AST_CONTROL_RING, AST_CONTROL_RINGING, AST_CONTROL_TAKEOFFHOOK, AST_CONTROL_WINK, AST_FRAME_CONTROL, AST_FRAME_DTMF, AST_FRAME_HTML, AST_FRAME_IAX, AST_FRAME_IMAGE, AST_FRAME_NULL, AST_FRAME_TEXT, AST_FRAME_VIDEO, AST_FRAME_VOICE, ast_getformatname(), AST_HTML_BEGIN, AST_HTML_DATA, AST_HTML_END, AST_HTML_LDCOMPLETE, AST_HTML_LINKREJECT, AST_HTML_LINKURL, AST_HTML_NOSUPPORT, AST_HTML_UNLINK, AST_HTML_URL, ast_strlen_zero(), ast_verbose(), COLOR_BLACK, COLOR_BRCYAN, COLOR_BRGREEN, COLOR_BRMAGENTA, COLOR_BRRED, COLOR_YELLOW, ast_frame::data, ast_frame::frametype, n, ast_frame::subclass, and term_color().
Referenced by ast_read(), and ast_write().
00673 { 00674 char *n = "unknown"; 00675 char ftype[40] = "Unknown Frametype"; 00676 char cft[80]; 00677 char subclass[40] = "Unknown Subclass"; 00678 char csub[80]; 00679 char moreinfo[40] = ""; 00680 char cn[60]; 00681 char cp[40]; 00682 char cmn[40]; 00683 if (name) 00684 n = name; 00685 if (!f) { 00686 ast_verbose("%s [ %s (NULL) ] [%s]\n", 00687 term_color(cp, prefix, COLOR_BRMAGENTA, COLOR_BLACK, sizeof(cp)), 00688 term_color(cft, "HANGUP", COLOR_BRRED, COLOR_BLACK, sizeof(cft)), 00689 term_color(cn, n, COLOR_YELLOW, COLOR_BLACK, sizeof(cn))); 00690 return; 00691 } 00692 /* XXX We should probably print one each of voice and video when the format changes XXX */ 00693 if (f->frametype == AST_FRAME_VOICE) 00694 return; 00695 if (f->frametype == AST_FRAME_VIDEO) 00696 return; 00697 switch(f->frametype) { 00698 case AST_FRAME_DTMF: 00699 strcpy(ftype, "DTMF"); 00700 subclass[0] = f->subclass; 00701 subclass[1] = '\0'; 00702 break; 00703 case AST_FRAME_CONTROL: 00704 strcpy(ftype, "Control"); 00705 switch(f->subclass) { 00706 case AST_CONTROL_HANGUP: 00707 strcpy(subclass, "Hangup"); 00708 break; 00709 case AST_CONTROL_RING: 00710 strcpy(subclass, "Ring"); 00711 break; 00712 case AST_CONTROL_RINGING: 00713 strcpy(subclass, "Ringing"); 00714 break; 00715 case AST_CONTROL_ANSWER: 00716 strcpy(subclass, "Answer"); 00717 break; 00718 case AST_CONTROL_BUSY: 00719 strcpy(subclass, "Busy"); 00720 break; 00721 case AST_CONTROL_TAKEOFFHOOK: 00722 strcpy(subclass, "Take Off Hook"); 00723 break; 00724 case AST_CONTROL_OFFHOOK: 00725 strcpy(subclass, "Line Off Hook"); 00726 break; 00727 case AST_CONTROL_CONGESTION: 00728 strcpy(subclass, "Congestion"); 00729 break; 00730 case AST_CONTROL_FLASH: 00731 strcpy(subclass, "Flash"); 00732 break; 00733 case AST_CONTROL_WINK: 00734 strcpy(subclass, "Wink"); 00735 break; 00736 case AST_CONTROL_OPTION: 00737 strcpy(subclass, "Option"); 00738 break; 00739 case AST_CONTROL_RADIO_KEY: 00740 strcpy(subclass, "Key Radio"); 00741 break; 00742 case AST_CONTROL_RADIO_UNKEY: 00743 strcpy(subclass, "Unkey Radio"); 00744 break; 00745 case -1: 00746 strcpy(subclass, "Stop generators"); 00747 break; 00748 default: 00749 snprintf(subclass, sizeof(subclass), "Unknown control '%d'", f->subclass); 00750 } 00751 break; 00752 case AST_FRAME_NULL: 00753 strcpy(ftype, "Null Frame"); 00754 strcpy(subclass, "N/A"); 00755 break; 00756 case AST_FRAME_IAX: 00757 /* Should never happen */ 00758 strcpy(ftype, "IAX Specific"); 00759 snprintf(subclass, sizeof(subclass), "IAX Frametype %d", f->subclass); 00760 break; 00761 case AST_FRAME_TEXT: 00762 strcpy(ftype, "Text"); 00763 strcpy(subclass, "N/A"); 00764 ast_copy_string(moreinfo, f->data, sizeof(moreinfo)); 00765 break; 00766 case AST_FRAME_IMAGE: 00767 strcpy(ftype, "Image"); 00768 snprintf(subclass, sizeof(subclass), "Image format %s\n", ast_getformatname(f->subclass)); 00769 break; 00770 case AST_FRAME_HTML: 00771 strcpy(ftype, "HTML"); 00772 switch(f->subclass) { 00773 case AST_HTML_URL: 00774 strcpy(subclass, "URL"); 00775 ast_copy_string(moreinfo, f->data, sizeof(moreinfo)); 00776 break; 00777 case AST_HTML_DATA: 00778 strcpy(subclass, "Data"); 00779 break; 00780 case AST_HTML_BEGIN: 00781 strcpy(subclass, "Begin"); 00782 break; 00783 case AST_HTML_END: 00784 strcpy(subclass, "End"); 00785 break; 00786 case AST_HTML_LDCOMPLETE: 00787 strcpy(subclass, "Load Complete"); 00788 break; 00789 case AST_HTML_NOSUPPORT: 00790 strcpy(subclass, "No Support"); 00791 break; 00792 case AST_HTML_LINKURL: 00793 strcpy(subclass, "Link URL"); 00794 ast_copy_string(moreinfo, f->data, sizeof(moreinfo)); 00795 break; 00796 case AST_HTML_UNLINK: 00797 strcpy(subclass, "Unlink"); 00798 break; 00799 case AST_HTML_LINKREJECT: 00800 strcpy(subclass, "Link Reject"); 00801 break; 00802 default: 00803 snprintf(subclass, sizeof(subclass), "Unknown HTML frame '%d'\n", f->subclass); 00804 break; 00805 } 00806 break; 00807 default: 00808 snprintf(ftype, sizeof(ftype), "Unknown Frametype '%d'", f->frametype); 00809 } 00810 if (!ast_strlen_zero(moreinfo)) 00811 ast_verbose("%s [ TYPE: %s (%d) SUBCLASS: %s (%d) '%s' ] [%s]\n", 00812 term_color(cp, prefix, COLOR_BRMAGENTA, COLOR_BLACK, sizeof(cp)), 00813 term_color(cft, ftype, COLOR_BRRED, COLOR_BLACK, sizeof(cft)), 00814 f->frametype, 00815 term_color(csub, subclass, COLOR_BRCYAN, COLOR_BLACK, sizeof(csub)), 00816 f->subclass, 00817 term_color(cmn, moreinfo, COLOR_BRGREEN, COLOR_BLACK, sizeof(cmn)), 00818 term_color(cn, n, COLOR_YELLOW, COLOR_BLACK, sizeof(cn))); 00819 else 00820 ast_verbose("%s [ TYPE: %s (%d) SUBCLASS: %s (%d) ] [%s]\n", 00821 term_color(cp, prefix, COLOR_BRMAGENTA, COLOR_BLACK, sizeof(cp)), 00822 term_color(cft, ftype, COLOR_BRRED, COLOR_BLACK, sizeof(cft)), 00823 f->frametype, 00824 term_color(csub, subclass, COLOR_BRCYAN, COLOR_BLACK, sizeof(csub)), 00825 f->subclass, 00826 term_color(cn, n, COLOR_YELLOW, COLOR_BLACK, sizeof(cn))); 00827 00828 }
Sums two frames of audio samples.
f1 | The first frame (which will contain the result) | |
f2 | The second frame |
Definition at line 1296 of file frame.c.
References AST_FORMAT_SLINEAR, AST_FRAME_VOICE, ast_slinear_saturated_add(), ast_frame::data, ast_frame::frametype, ast_frame::samples, and ast_frame::subclass.
Referenced by ast_channel_spy_read_frame().
01297 { 01298 int count; 01299 short *data1, *data2; 01300 01301 if ((f1->frametype != AST_FRAME_VOICE) || (f1->subclass != AST_FORMAT_SLINEAR)) 01302 return -1; 01303 01304 if ((f2->frametype != AST_FRAME_VOICE) || (f2->subclass != AST_FORMAT_SLINEAR)) 01305 return -1; 01306 01307 if (f1->samples != f2->samples) 01308 return -1; 01309 01310 for (count = 0, data1 = f1->data, data2 = f2->data; 01311 count < f1->samples; 01312 count++, data1++, data2++) 01313 ast_slinear_saturated_add(data1, data2); 01314 01315 return 0; 01316 }
Copies a frame.
fr | frame to copy Dupliates a frame -- should only rarely be used, typically frisolate is good enough |
Definition at line 361 of file frame.c.
References AST_FRIENDLY_OFFSET, AST_MALLOCD_HDR, calloc, ast_frame::data, ast_frame::datalen, ast_frame::delivery, ast_frame::frametype, ast_frame::mallocd, ast_frame::offset, ast_frame::samples, ast_frame::src, and ast_frame::subclass.
Referenced by ast_channel_spy_read_frame(), ast_queue_frame(), ast_rtp_write(), ast_slinfactory_feed(), and queue_frame_to_spies().
00362 { 00363 struct ast_frame *out; 00364 int len, srclen = 0; 00365 void *buf; 00366 /* Start with standard stuff */ 00367 len = sizeof(struct ast_frame) + AST_FRIENDLY_OFFSET + f->datalen; 00368 /* If we have a source, add space for it */ 00369 /* 00370 * XXX Watch out here - if we receive a src which is not terminated 00371 * properly, we can be easily attacked. Should limit the size we deal with. 00372 */ 00373 if (f->src) 00374 srclen = strlen(f->src); 00375 if (srclen > 0) 00376 len += srclen + 1; 00377 buf = calloc(1, len); 00378 if (!buf) 00379 return NULL; 00380 out = buf; 00381 /* Set us as having malloc'd header only, so it will eventually 00382 get freed. */ 00383 out->frametype = f->frametype; 00384 out->subclass = f->subclass; 00385 out->datalen = f->datalen; 00386 out->samples = f->samples; 00387 out->delivery = f->delivery; 00388 out->mallocd = AST_MALLOCD_HDR; 00389 out->offset = AST_FRIENDLY_OFFSET; 00390 if (out->datalen) { 00391 out->data = buf + sizeof(struct ast_frame) + AST_FRIENDLY_OFFSET; 00392 memcpy(out->data, f->data, out->datalen); 00393 } 00394 if (srclen > 0) { 00395 out->src = buf + sizeof(*out) + AST_FRIENDLY_OFFSET + f->datalen; 00396 /* Must have space since we allocated for it */ 00397 strcpy((char *)out->src, f->src); 00398 } 00399 return out; 00400 }
void ast_frfree | ( | struct ast_frame * | fr | ) |
Requests a frame to be allocated Frees a frame.
Definition at line 273 of file frame.c.
References AST_MALLOCD_DATA, AST_MALLOCD_HDR, AST_MALLOCD_SRC, ast_mutex_lock(), ast_mutex_unlock(), ast_frame::data, free, ast_frame::mallocd, ast_frame::next, ast_frame::offset, ast_frame::prev, and ast_frame::src.
Referenced by __adsi_transmit_messages(), __ast_request_and_dial(), adsi_careful_send(), agent_ack_sleep(), agent_read(), app_exec(), ast_app_getvoice(), ast_bridge_call(), ast_channel_free(), ast_channel_spy_free(), ast_channel_spy_read_frame(), ast_dsp_process(), ast_feature_request_and_dial(), ast_masq_park_call(), ast_play_and_prepend(), ast_play_and_record_full(), ast_queue_frame(), ast_read(), ast_recvtext(), ast_safe_sleep(), ast_safe_sleep_conditional(), ast_send_image(), ast_slinfactory_destroy(), ast_slinfactory_read(), ast_tonepair(), ast_translate(), ast_waitfordigit(), ast_waitfordigit_full(), ast_waitstream(), ast_waitstream_exten(), ast_waitstream_fr(), ast_waitstream_full(), ast_write(), async_wait(), autoservice_run(), background_detect_exec(), builtin_atxfer(), calc_cost(), channel_spy(), check_goto_on_transfer(), conf_exec(), conf_flush(), conf_run(), copy_data_from_queue(), dictate_exec(), disa_exec(), do_parking_thread(), do_waiting(), echo_exec(), find_cache(), gen_generate(), handle_recordfile(), iax_park_thread(), ices_exec(), measurenoise(), mixmonitor_thread(), moh_files_generator(), mp3_exec(), NBScat_exec(), queue_frame_to_spies(), receive_dtmf_digits(), recordthread(), rpt(), run_agi(), rxfax_exec(), send_tone_burst(), send_waveform_to_channel(), sendurl_exec(), spy_generate(), ss_thread(), txfax_exec(), vpb_bridge(), wait_for_answer(), wait_for_hangup(), waitforring_exec(), and zt_bridge().
00274 { 00275 if (fr->mallocd & AST_MALLOCD_DATA) { 00276 if (fr->data) 00277 free(fr->data - fr->offset); 00278 } 00279 if (fr->mallocd & AST_MALLOCD_SRC) { 00280 if (fr->src) 00281 free((char *)fr->src); 00282 } 00283 if (fr->mallocd & AST_MALLOCD_HDR) { 00284 #ifdef TRACE_FRAMES 00285 ast_mutex_lock(&framelock); 00286 headers--; 00287 if (fr->next) 00288 fr->next->prev = fr->prev; 00289 if (fr->prev) 00290 fr->prev->next = fr->next; 00291 else 00292 headerlist = fr->next; 00293 ast_mutex_unlock(&framelock); 00294 #endif 00295 free(fr); 00296 } 00297 }
Copies a frame.
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. |
Definition at line 304 of file frame.c.
References ast_frame_header_new(), AST_FRIENDLY_OFFSET, ast_log(), AST_MALLOCD_DATA, AST_MALLOCD_HDR, AST_MALLOCD_SRC, ast_frame::data, ast_frame::datalen, ast_frame::frametype, free, LOG_WARNING, malloc, ast_frame::mallocd, ast_frame::offset, ast_frame::samples, ast_frame::src, strdup, and ast_frame::subclass.
Referenced by jpeg_read_image(), and monitor_handle_owned().
00305 { 00306 struct ast_frame *out; 00307 void *newdata; 00308 00309 if (!(fr->mallocd & AST_MALLOCD_HDR)) { 00310 /* Allocate a new header if needed */ 00311 out = ast_frame_header_new(); 00312 if (!out) { 00313 ast_log(LOG_WARNING, "Out of memory\n"); 00314 return NULL; 00315 } 00316 out->frametype = fr->frametype; 00317 out->subclass = fr->subclass; 00318 out->datalen = fr->datalen; 00319 out->samples = fr->samples; 00320 out->offset = fr->offset; 00321 out->src = NULL; 00322 out->data = fr->data; 00323 } else 00324 out = fr; 00325 00326 if (!(fr->mallocd & AST_MALLOCD_SRC)) { 00327 if (fr->src) { 00328 out->src = strdup(fr->src); 00329 if (!out->src) { 00330 if (out != fr) 00331 free(out); 00332 ast_log(LOG_WARNING, "Out of memory\n"); 00333 return NULL; 00334 } 00335 } 00336 } else 00337 out->src = fr->src; 00338 00339 if (!(fr->mallocd & AST_MALLOCD_DATA)) { 00340 newdata = malloc(fr->datalen + AST_FRIENDLY_OFFSET); 00341 if (!newdata) { 00342 if (out->src != fr->src) 00343 free((void *) out->src); 00344 if (out != fr) 00345 free(out); 00346 ast_log(LOG_WARNING, "Out of memory\n"); 00347 return NULL; 00348 } 00349 newdata += AST_FRIENDLY_OFFSET; 00350 out->offset = AST_FRIENDLY_OFFSET; 00351 out->datalen = fr->datalen; 00352 memcpy(newdata, fr->data, fr->datalen); 00353 out->data = newdata; 00354 } 00355 00356 out->mallocd = AST_MALLOCD_HDR | AST_MALLOCD_SRC | AST_MALLOCD_DATA; 00357 00358 return out; 00359 }
struct ast_format_list* ast_get_format_list | ( | size_t * | size | ) |
Definition at line 502 of file frame.c.
References AST_FORMAT_LIST.
00503 { 00504 *size = (sizeof(AST_FORMAT_LIST) / sizeof(struct ast_format_list)); 00505 return AST_FORMAT_LIST; 00506 }
struct ast_format_list* ast_get_format_list_index | ( | int | index | ) |
Definition at line 497 of file frame.c.
References AST_FORMAT_LIST.
00498 { 00499 return &AST_FORMAT_LIST[index]; 00500 }
int ast_getformatbyname | ( | char * | name | ) |
Gets a format from a name.
name | string of format |
Definition at line 567 of file frame.c.
References ast_expand_codec_alias(), AST_FORMAT_LIST, and format.
Referenced by ast_parse_allow_disallow(), iax_template_parse(), load_moh_classes(), reload_config(), try_suggested_sip_codec(), and update_common_options().
00568 { 00569 int x = 0, all = 0, format = 0; 00570 00571 all = strcasecmp(name, "all") ? 0 : 1; 00572 for (x = 0 ; x < sizeof(AST_FORMAT_LIST) / sizeof(struct ast_format_list) ; x++) { 00573 if(AST_FORMAT_LIST[x].visible && (all || 00574 !strcasecmp(AST_FORMAT_LIST[x].name,name) || 00575 !strcasecmp(AST_FORMAT_LIST[x].name,ast_expand_codec_alias(name)))) { 00576 format |= AST_FORMAT_LIST[x].bits; 00577 if(!all) 00578 break; 00579 } 00580 } 00581 00582 return format; 00583 }
char* ast_getformatname | ( | int | format | ) |
Get the name of a format.
format | id of format |
Definition at line 508 of file frame.c.
References AST_FORMAT_LIST, ast_format_list::bits, name, and ast_format_list::visible.
Referenced by __login_exec(), __sip_show_channels(), _sip_show_peer(), add_codec_to_sdp(), agent_call(), ast_channel_spy_add(), ast_codec_get_len(), ast_codec_get_samples(), ast_codec_pref_string(), ast_dsp_process(), ast_frame_dump(), ast_play_and_prepend(), ast_play_and_record_full(), ast_read(), ast_register_translator(), ast_rtp_write(), ast_slinfactory_feed(), ast_streamfile(), ast_translator_build_path(), ast_unregister_translator(), ast_writestream(), background_detect_exec(), do_waiting(), eagi_exec(), function_iaxpeer(), function_sippeer(), iax2_request(), iax2_show_channels(), iax2_show_peer(), iax_show_provisioning(), modem_request(), moh_classes_show(), moh_release(), phone_setup(), print_codec_to_cli(), queue_frame_to_spies(), set_format(), show_codecs(), show_file_formats(), show_image_formats(), show_translation(), sip_request_call(), sip_show_channel(), sip_show_user(), socket_read(), and zt_read().
00509 { 00510 int x = 0; 00511 char *ret = "unknown"; 00512 for (x = 0 ; x < sizeof(AST_FORMAT_LIST) / sizeof(struct ast_format_list) ; x++) { 00513 if(AST_FORMAT_LIST[x].visible && AST_FORMAT_LIST[x].bits == format) { 00514 ret = AST_FORMAT_LIST[x].name; 00515 break; 00516 } 00517 } 00518 return ret; 00519 }
char* ast_getformatname_multiple | ( | char * | buf, | |
size_t | size, | |||
int | format | |||
) |
Get the names of a set of formats.
buf | a buffer for the output string | |
size | size of buf (bytes) | |
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)" |
Definition at line 521 of file frame.c.
References AST_FORMAT_LIST, ast_format_list::bits, name, and ast_format_list::visible.
Referenced by _sip_show_peer(), function_iaxpeer(), function_sippeer(), iax2_show_peer(), and process_sdp().
00521 { 00522 00523 int x = 0; 00524 unsigned len; 00525 char *end = buf; 00526 char *start = buf; 00527 if (!size) return buf; 00528 snprintf(end, size, "0x%x (", format); 00529 len = strlen(end); 00530 end += len; 00531 size -= len; 00532 start = end; 00533 for (x = 0 ; x < sizeof(AST_FORMAT_LIST) / sizeof(struct ast_format_list) ; x++) { 00534 if (AST_FORMAT_LIST[x].visible && (AST_FORMAT_LIST[x].bits & format)) { 00535 snprintf(end, size,"%s|",AST_FORMAT_LIST[x].name); 00536 len = strlen(end); 00537 end += len; 00538 size -= len; 00539 } 00540 } 00541 if (start == end) 00542 snprintf(start, size, "nothing)"); 00543 else if (size > 1) 00544 *(end -1) = ')'; 00545 return buf; 00546 }
void ast_parse_allow_disallow | ( | struct ast_codec_pref * | pref, | |
int * | mask, | |||
const char * | list, | |||
int | allowing | |||
) |
Parse an "allow" or "deny" line and update the mask and pref if provided.
Definition at line 1021 of file frame.c.
References ast_codec_pref_append(), ast_codec_pref_remove(), ast_getformatbyname(), ast_log(), ast_strdupa, format, LOG_WARNING, parse(), and strsep().
Referenced by build_peer(), build_user(), reload_config(), and set_config().
01022 { 01023 char *parse; 01024 char *this; 01025 int format; 01026 01027 parse = ast_strdupa(list); 01028 while ((this = strsep(&parse, ","))) { 01029 if (!(format = ast_getformatbyname(this))) { 01030 ast_log(LOG_WARNING, "Cannot %s unknown format '%s'\n", allowing ? "allow" : "disallow", this); 01031 continue; 01032 } 01033 01034 if (mask) { 01035 if (allowing) 01036 *mask |= format; 01037 else 01038 *mask &= ~format; 01039 } 01040 01041 if (pref) { 01042 if (strcasecmp(this, "all")) { 01043 if (allowing) 01044 ast_codec_pref_append(pref, format); 01045 else 01046 ast_codec_pref_remove(pref, format); 01047 } else if (!allowing) { 01048 memset(pref, 0, sizeof(*pref)); 01049 } 01050 } 01051 } 01052 }
void ast_smoother_free | ( | struct ast_smoother * | s | ) |
int ast_smoother_get_flags | ( | struct ast_smoother * | smoother | ) |
struct ast_smoother* ast_smoother_new | ( | int | bytes | ) |
Definition at line 116 of file frame.c.
References ast_smoother_reset(), malloc, and s.
Referenced by ast_rtp_write().
00117 { 00118 struct ast_smoother *s; 00119 if (size < 1) 00120 return NULL; 00121 s = malloc(sizeof(struct ast_smoother)); 00122 if (s) 00123 ast_smoother_reset(s, size); 00124 return s; 00125 }
struct ast_frame* ast_smoother_read | ( | struct ast_smoother * | s | ) |
Definition at line 194 of file frame.c.
References AST_FRAME_VOICE, AST_FRIENDLY_OFFSET, ast_log(), AST_SMOOTHER_FLAG_G729, ast_tvadd(), LOG_WARNING, and s.
Referenced by ast_rtp_write().
00195 { 00196 struct ast_frame *opt; 00197 int len; 00198 /* IF we have an optimization frame, send it */ 00199 if (s->opt) { 00200 if (s->opt->offset < AST_FRIENDLY_OFFSET) 00201 ast_log(LOG_WARNING, "Returning a frame of inappropriate offset (%d).", 00202 s->opt->offset); 00203 opt = s->opt; 00204 s->opt = NULL; 00205 return opt; 00206 } 00207 00208 /* Make sure we have enough data */ 00209 if (s->len < s->size) { 00210 /* Or, if this is a G.729 frame with VAD on it, send it immediately anyway */ 00211 if (!((s->flags & AST_SMOOTHER_FLAG_G729) && (s->size % 10))) 00212 return NULL; 00213 } 00214 len = s->size; 00215 if (len > s->len) 00216 len = s->len; 00217 /* Make frame */ 00218 s->f.frametype = AST_FRAME_VOICE; 00219 s->f.subclass = s->format; 00220 s->f.data = s->framedata + AST_FRIENDLY_OFFSET; 00221 s->f.offset = AST_FRIENDLY_OFFSET; 00222 s->f.datalen = len; 00223 /* Samples will be improper given VAD, but with VAD the concept really doesn't even exist */ 00224 s->f.samples = len * s->samplesperbyte; /* XXX rounding */ 00225 s->f.delivery = s->delivery; 00226 /* Fill Data */ 00227 memcpy(s->f.data, s->data, len); 00228 s->len -= len; 00229 /* Move remaining data to the front if applicable */ 00230 if (s->len) { 00231 /* In principle this should all be fine because if we are sending 00232 G.729 VAD, the next timestamp will take over anyawy */ 00233 memmove(s->data, s->data + len, s->len); 00234 if (!ast_tvzero(s->delivery)) { 00235 /* If we have delivery time, increment it, otherwise, leave it at 0 */ 00236 s->delivery = ast_tvadd(s->delivery, ast_samp2tv(s->f.samples, 8000)); 00237 } 00238 } 00239 /* Return frame */ 00240 return &s->f; 00241 }
void ast_smoother_reset | ( | struct ast_smoother * | s, | |
int | bytes | |||
) |
Definition at line 110 of file frame.c.
References s.
Referenced by ast_smoother_new().
00111 { 00112 memset(s, 0, sizeof(struct ast_smoother)); 00113 s->size = size; 00114 }
void ast_smoother_set_flags | ( | struct ast_smoother * | smoother, | |
int | flags | |||
) |
Definition at line 132 of file frame.c.
References s.
Referenced by ast_rtp_write().
00133 { 00134 s->flags = flags; 00135 }
void ast_swapcopy_samples | ( | void * | dst, | |
const void * | src, | |||
int | samples | |||
) |
Definition at line 486 of file frame.c.
Referenced by __ast_smoother_feed(), iax_frame_wrap(), and phone_write_buf().
00487 { 00488 int i; 00489 unsigned short *dst_s = dst; 00490 const unsigned short *src_s = src; 00491 00492 for (i=0; i<samples; i++) 00493 dst_s[i] = (src_s[i]<<8) | (src_s[i]>>8); 00494 }