Thu Sep 7 01:03:28 2017

Asterisk developer's documentation


format_g726.c File Reference

Headerless G.726 (16/24/32/40kbps) data format for Asterisk. More...

#include "asterisk.h"
#include "asterisk/mod_format.h"
#include "asterisk/module.h"
#include "asterisk/endian.h"

Go to the source code of this file.

Data Structures

struct  g726_desc

Defines

#define BUF_SIZE   (5*FRAME_TIME)
#define FRAME_TIME   10
#define RATE_16   3
#define RATE_24   2
#define RATE_32   1
#define RATE_40   0

Functions

 AST_MODULE_INFO (ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER,"Raw G.726 (16/24/32/40kbps) data",.load=load_module,.unload=unload_module,.load_pri=AST_MODPRI_APP_DEPEND)
static int g726_16_open (struct ast_filestream *s)
static int g726_16_rewrite (struct ast_filestream *s, const char *comment)
static int g726_24_open (struct ast_filestream *s)
static int g726_24_rewrite (struct ast_filestream *s, const char *comment)
static int g726_32_open (struct ast_filestream *s)
static int g726_32_rewrite (struct ast_filestream *s, const char *comment)
static int g726_40_open (struct ast_filestream *s)
static int g726_40_rewrite (struct ast_filestream *s, const char *comment)
static int g726_open (struct ast_filestream *tmp, int rate)
static struct ast_frameg726_read (struct ast_filestream *s, int *whennext)
static int g726_seek (struct ast_filestream *fs, off_t sample_offset, int whence)
static off_t g726_tell (struct ast_filestream *fs)
static int g726_trunc (struct ast_filestream *fs)
static int g726_write (struct ast_filestream *s, struct ast_frame *f)
static int load_module (void)
static int unload_module (void)

Variables

static struct ast_format f []
static int frame_size [4]

Detailed Description

Headerless G.726 (16/24/32/40kbps) data format for Asterisk.

File name extensions:

Definition in file format_g726.c.


Define Documentation

#define BUF_SIZE   (5*FRAME_TIME)

Definition at line 51 of file format_g726.c.

#define FRAME_TIME   10

Definition at line 49 of file format_g726.c.

Referenced by g726_read().

#define RATE_16   3

Definition at line 46 of file format_g726.c.

Referenced by g726_16_open(), and g726_16_rewrite().

#define RATE_24   2

Definition at line 45 of file format_g726.c.

Referenced by g726_24_open(), and g726_24_rewrite().

#define RATE_32   1

Definition at line 44 of file format_g726.c.

Referenced by g726_32_open(), and g726_32_rewrite().

#define RATE_40   0

Definition at line 43 of file format_g726.c.

Referenced by g726_40_open(), and g726_40_rewrite().


Function Documentation

AST_MODULE_INFO ( ASTERISK_GPL_KEY  ,
AST_MODFLAG_LOAD_ORDER  ,
"Raw G.726 (16/24/32/40kbps) data"  ,
load = load_module,
unload = unload_module,
load_pri = AST_MODPRI_APP_DEPEND 
)
static int g726_16_open ( struct ast_filestream s  )  [static]

Definition at line 90 of file format_g726.c.

References g726_open(), and RATE_16.

00091 {
00092    return g726_open(s, RATE_16);
00093 }

static int g726_16_rewrite ( struct ast_filestream s,
const char *  comment 
) [static]

Definition at line 110 of file format_g726.c.

References g726_open(), and RATE_16.

00111 {
00112    return g726_open(s, RATE_16);
00113 }

static int g726_24_open ( struct ast_filestream s  )  [static]

Definition at line 85 of file format_g726.c.

References g726_open(), and RATE_24.

00086 {
00087    return g726_open(s, RATE_24);
00088 }

static int g726_24_rewrite ( struct ast_filestream s,
const char *  comment 
) [static]

Definition at line 105 of file format_g726.c.

References g726_open(), and RATE_24.

00106 {
00107    return g726_open(s, RATE_24);
00108 }

static int g726_32_open ( struct ast_filestream s  )  [static]

Definition at line 80 of file format_g726.c.

References g726_open(), and RATE_32.

00081 {
00082    return g726_open(s, RATE_32);
00083 }

static int g726_32_rewrite ( struct ast_filestream s,
const char *  comment 
) [static]

Definition at line 100 of file format_g726.c.

References g726_open(), and RATE_32.

00101 {
00102    return g726_open(s, RATE_32);
00103 }

static int g726_40_open ( struct ast_filestream s  )  [static]

Definition at line 75 of file format_g726.c.

References g726_open(), and RATE_40.

00076 {
00077    return g726_open(s, RATE_40);
00078 }

static int g726_40_rewrite ( struct ast_filestream s,
const char *  comment 
) [static]

Definition at line 95 of file format_g726.c.

References g726_open(), and RATE_40.

00096 {
00097    return g726_open(s, RATE_40);
00098 }

static int g726_open ( struct ast_filestream tmp,
int  rate 
) [static]

Definition at line 67 of file format_g726.c.

References ast_filestream::_private, ast_debug, and g726_desc::rate.

Referenced by g726_16_open(), g726_16_rewrite(), g726_24_open(), g726_24_rewrite(), g726_32_open(), g726_32_rewrite(), g726_40_open(), and g726_40_rewrite().

00068 {
00069    struct g726_desc *s = (struct g726_desc *)tmp->_private;
00070    s->rate = rate;
00071    ast_debug(1, "Created filestream G.726-%dk.\n", 40 - s->rate * 8);
00072    return 0;
00073 }

static struct ast_frame* g726_read ( struct ast_filestream s,
int *  whennext 
) [static, read]

Definition at line 119 of file format_g726.c.

References ast_filestream::_private, AST_FORMAT_G726, AST_FRAME_SET_BUFFER, AST_FRAME_VOICE, AST_FRIENDLY_OFFSET, ast_log(), ast_filestream::buf, ast_frame_subclass::codec, ast_frame::data, ast_frame::datalen, errno, ast_filestream::f, ast_filestream::fr, FRAME_TIME, ast_frame::frametype, LOG_WARNING, ast_frame::mallocd, ast_frame::ptr, g726_desc::rate, ast_frame::samples, and ast_frame::subclass.

00120 {
00121    int res;
00122    struct g726_desc *fs = (struct g726_desc *)s->_private;
00123 
00124    /* Send a frame from the file to the appropriate channel */
00125    s->fr.frametype = AST_FRAME_VOICE;
00126    s->fr.subclass.codec = AST_FORMAT_G726;
00127    s->fr.mallocd = 0;
00128    AST_FRAME_SET_BUFFER(&s->fr, s->buf, AST_FRIENDLY_OFFSET, frame_size[fs->rate]);
00129    s->fr.samples = 8 * FRAME_TIME;
00130    if ((res = fread(s->fr.data.ptr, 1, s->fr.datalen, s->f)) != s->fr.datalen) {
00131       if (res)
00132          ast_log(LOG_WARNING, "Short read (%d) (%s)!\n", res, strerror(errno));
00133       return NULL;
00134    }
00135    *whennext = s->fr.samples;
00136    return &s->fr;
00137 }

static int g726_seek ( struct ast_filestream fs,
off_t  sample_offset,
int  whence 
) [static]

Definition at line 166 of file format_g726.c.

00167 {
00168    return -1;
00169 }

static off_t g726_tell ( struct ast_filestream fs  )  [static]

Definition at line 176 of file format_g726.c.

00177 {
00178    return -1;
00179 }

static int g726_trunc ( struct ast_filestream fs  )  [static]

Definition at line 171 of file format_g726.c.

00172 {
00173    return -1;
00174 }

static int g726_write ( struct ast_filestream s,
struct ast_frame f 
) [static]

Definition at line 139 of file format_g726.c.

References ast_filestream::_private, AST_FORMAT_G726, AST_FRAME_VOICE, ast_getformatname(), ast_log(), ast_frame_subclass::codec, ast_frame::data, ast_frame::datalen, errno, ast_filestream::f, ast_frame::frametype, LOG_WARNING, ast_frame::ptr, g726_desc::rate, and ast_frame::subclass.

00140 {
00141    int res;
00142    struct g726_desc *fs = (struct g726_desc *)s->_private;
00143 
00144    if (f->frametype != AST_FRAME_VOICE) {
00145       ast_log(LOG_WARNING, "Asked to write non-voice frame!\n");
00146       return -1;
00147    }
00148    if (f->subclass.codec != AST_FORMAT_G726) {
00149       ast_log(LOG_WARNING, "Asked to write non-G726 frame (%s)!\n", 
00150                   ast_getformatname(f->subclass.codec));
00151       return -1;
00152    }
00153    if (f->datalen % frame_size[fs->rate]) {
00154       ast_log(LOG_WARNING, "Invalid data length %d, should be multiple of %d\n", 
00155                   f->datalen, frame_size[fs->rate]);
00156       return -1;
00157    }
00158    if ((res = fwrite(f->data.ptr, 1, f->datalen, s->f)) != f->datalen) {
00159       ast_log(LOG_WARNING, "Bad write (%d/%d): %s\n", 
00160             res, frame_size[fs->rate], strerror(errno));
00161          return -1;
00162    }
00163    return 0;
00164 }

static int load_module ( void   )  [static]

Definition at line 241 of file format_g726.c.

References ast_format_register, ast_log(), AST_MODULE_LOAD_FAILURE, AST_MODULE_LOAD_SUCCESS, ast_format::format, LOG_WARNING, and name.

00242 {
00243    int i;
00244 
00245    for (i = 0; f[i].format ; i++) {
00246       if (ast_format_register(&f[i])) {   /* errors are fatal */
00247          ast_log(LOG_WARNING, "Failed to register format %s.\n", f[i].name);
00248          return AST_MODULE_LOAD_FAILURE;
00249       }
00250    }
00251    return AST_MODULE_LOAD_SUCCESS;
00252 }

static int unload_module ( void   )  [static]

Definition at line 254 of file format_g726.c.

References ast_format_unregister(), ast_log(), ast_format::format, LOG_WARNING, and name.

00255 {
00256    int i;
00257 
00258    for (i = 0; f[i].format ; i++) {
00259       if (ast_format_unregister(f[i].name))
00260          ast_log(LOG_WARNING, "Failed to unregister format %s.\n", f[i].name);
00261    }
00262    return(0);
00263 }


Variable Documentation

struct ast_format f[] [static]

Definition at line 181 of file format_g726.c.

Referenced by __adsi_transmit_messages(), __analog_handle_event(), __analog_ss_thread(), __ast_play_and_record(), __ast_queue_frame(), __attempt_transmit(), agent_ack_sleep(), agent_read(), alloc_profile(), analog_exception(), analog_handle_dtmf(), app_exec(), ast_autoservice_stop(), ast_bridge_call(), ast_config_text_file_save(), ast_el_read_history(), ast_filehelper(), ast_format_str_reduce(), ast_frame_header_new(), ast_jb_destroy(), ast_read_image(), ast_readfile(), ast_rtcp_read(), ast_rtp_read(), ast_rtp_write(), ast_send_image(), ast_slinfactory_destroy(), ast_trans_frameout(), ast_udptl_bridge(), ast_ulaw_init(), ast_writefile(), async_agi_read_frame(), async_wait(), auth_exec(), autoservice_run(), cache_cmp(), calc_cost(), channel_spy(), check_bridge(), close_logger(), compile_script(), conf_flush(), conf_run(), config_text_file_load(), create_video_frame(), dictate_exec(), disa_exec(), do_waiting(), echo_exec(), eivr_comm(), execif_exec(), feature_request_and_dial(), filestream_destructor(), find_cache(), fn_wrapper(), frame_cache_cleanup(), function_realtime_store(), gen_generate(), gen_readframe(), generic_fax_exec(), get_bit_raw(), gtalk_rtp_read(), h261_encap(), h263_encap(), h263p_encap(), h264_encap(), handle_cli_core_show_file_formats(), handle_cli_file_convert(), handle_recordfile(), handle_request_info(), http_post_callback(), iax2_bridge(), iax2_trunk_queue(), ices_exec(), isAnsweringMachine(), jack_exec(), jb_empty_and_reset_adaptive(), jb_get_and_deliver(), jingle_rtp_read(), key_history(), lintoadpcm_frameout(), load_file(), load_pktccops_config(), lua_read_extensions_file(), main(), manage_parked_call(), measurenoise(), mgcp_read(), mgcp_rtp_read(), misdn_bridge(), misdn_lib_nt_debug_init(), moh_files_generator(), moh_files_readframe(), mp3_exec(), mpeg4_encap(), multicast_rtp_write(), my_handle_dtmf(), NBScat_exec(), oh323_rtp_read(), op_func(), oss_read(), parse(), process_ast_dsp(), process_dtmf_cisco(), process_dtmf_rfc2833(), readdirqueue(), receive_dtmf_digits(), receive_message(), record_exec(), recordthread(), reload_followme(), reload_logger(), remove_from_queue(), run_agi(), safe_append(), scan_service(), send_string(), send_tone_burst(), send_waveform_to_channel(), sendurl_exec(), session_destroy(), show_history(), sip_rtp_read(), skinny_rtp_read(), sms_handleincoming_proto2(), sms_hexdump(), spandsp_fax_read(), speech_background(), spy_generate(), strip_quotes(), t38_tx_packet_handler(), testclient_exec(), testserver_exec(), try_load_key(), udptlread(), unistim_rtp_read(), unload_module(), vnak_retransmit(), wait_for_answer(), wait_for_hangup(), wait_for_winner(), waitforring_exec(), write_history(), and writefile().

int frame_size[4] [static]

Definition at line 53 of file format_g726.c.

Referenced by local_attended_transfer(), and masquerade_colp_transfer().


Generated on 7 Sep 2017 for Asterisk - The Open Source Telephony Project by  doxygen 1.6.1