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 | |
static void | __reg_module (void) |
static void | __unreg_module (void) |
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_frame * | g726_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_module_info __MODULE_INFO_SECTION | __mod_info = { __MODULE_INFO_GLOBALS .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Raw G.726 (16/24/32/40kbps) data" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, .load_pri = 10, } |
static struct ast_module_info * | ast_module_info = &__mod_info |
static struct ast_format | f [] |
static int | frame_size [4] |
Headerless G.726 (16/24/32/40kbps) data format for Asterisk.
File name extensions:
Definition in file format_g726.c.
#define BUF_SIZE (5*FRAME_TIME) |
Definition at line 47 of file format_g726.c.
#define FRAME_TIME 10 |
Definition at line 45 of file format_g726.c.
Referenced by g726_read().
#define RATE_16 3 |
Definition at line 42 of file format_g726.c.
Referenced by g726_16_open(), and g726_16_rewrite().
#define RATE_24 2 |
Definition at line 41 of file format_g726.c.
Referenced by g726_24_open(), and g726_24_rewrite().
#define RATE_32 1 |
Definition at line 40 of file format_g726.c.
Referenced by g726_32_open(), and g726_32_rewrite().
#define RATE_40 0 |
Definition at line 39 of file format_g726.c.
Referenced by g726_40_open(), and g726_40_rewrite().
static void __reg_module | ( | void | ) | [static] |
Definition at line 265 of file format_g726.c.
static void __unreg_module | ( | void | ) | [static] |
Definition at line 265 of file format_g726.c.
static int g726_16_open | ( | struct ast_filestream * | s | ) | [static] |
Definition at line 86 of file format_g726.c.
References g726_open(), and RATE_16.
static int g726_16_rewrite | ( | struct ast_filestream * | s, |
const char * | comment | ||
) | [static] |
Definition at line 106 of file format_g726.c.
References g726_open(), and RATE_16.
static int g726_24_open | ( | struct ast_filestream * | s | ) | [static] |
Definition at line 81 of file format_g726.c.
References g726_open(), and RATE_24.
static int g726_24_rewrite | ( | struct ast_filestream * | s, |
const char * | comment | ||
) | [static] |
Definition at line 101 of file format_g726.c.
References g726_open(), and RATE_24.
static int g726_32_open | ( | struct ast_filestream * | s | ) | [static] |
Definition at line 76 of file format_g726.c.
References g726_open(), and RATE_32.
static int g726_32_rewrite | ( | struct ast_filestream * | s, |
const char * | comment | ||
) | [static] |
Definition at line 96 of file format_g726.c.
References g726_open(), and RATE_32.
static int g726_40_open | ( | struct ast_filestream * | s | ) | [static] |
Definition at line 71 of file format_g726.c.
References g726_open(), and RATE_40.
static int g726_40_rewrite | ( | struct ast_filestream * | s, |
const char * | comment | ||
) | [static] |
Definition at line 91 of file format_g726.c.
References g726_open(), and RATE_40.
static int g726_open | ( | struct ast_filestream * | tmp, |
int | rate | ||
) | [static] |
Definition at line 63 of file format_g726.c.
References ast_filestream::_private, ast_debug, g726_desc::rate, and s.
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().
static struct ast_frame* g726_read | ( | struct ast_filestream * | s, |
int * | whennext | ||
) | [static, read] |
Definition at line 115 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::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.
{ int res; struct g726_desc *fs = (struct g726_desc *)s->_private; /* Send a frame from the file to the appropriate channel */ s->fr.frametype = AST_FRAME_VOICE; s->fr.subclass = AST_FORMAT_G726; s->fr.mallocd = 0; AST_FRAME_SET_BUFFER(&s->fr, s->buf, AST_FRIENDLY_OFFSET, frame_size[fs->rate]); s->fr.samples = 8 * FRAME_TIME; if ((res = fread(s->fr.data.ptr, 1, s->fr.datalen, s->f)) != s->fr.datalen) { if (res) ast_log(LOG_WARNING, "Short read (%d) (%s)!\n", res, strerror(errno)); return NULL; } *whennext = s->fr.samples; return &s->fr; }
static int g726_seek | ( | struct ast_filestream * | fs, |
off_t | sample_offset, | ||
int | whence | ||
) | [static] |
Definition at line 162 of file format_g726.c.
{
return -1;
}
static off_t g726_tell | ( | struct ast_filestream * | fs | ) | [static] |
Definition at line 172 of file format_g726.c.
{
return -1;
}
static int g726_trunc | ( | struct ast_filestream * | fs | ) | [static] |
Definition at line 167 of file format_g726.c.
{
return -1;
}
static int g726_write | ( | struct ast_filestream * | s, |
struct ast_frame * | f | ||
) | [static] |
Definition at line 135 of file format_g726.c.
References ast_filestream::_private, AST_FORMAT_G726, AST_FRAME_VOICE, ast_log(), ast_frame::data, ast_frame::datalen, errno, ast_filestream::f, ast_frame::frametype, fwrite, LOG_WARNING, ast_frame::ptr, g726_desc::rate, and ast_frame::subclass.
{ int res; struct g726_desc *fs = (struct g726_desc *)s->_private; if (f->frametype != AST_FRAME_VOICE) { ast_log(LOG_WARNING, "Asked to write non-voice frame!\n"); return -1; } if (f->subclass != AST_FORMAT_G726) { ast_log(LOG_WARNING, "Asked to write non-G726 frame (%d)!\n", f->subclass); return -1; } if (f->datalen % frame_size[fs->rate]) { ast_log(LOG_WARNING, "Invalid data length %d, should be multiple of %d\n", f->datalen, frame_size[fs->rate]); return -1; } if ((res = fwrite(f->data.ptr, 1, f->datalen, s->f)) != f->datalen) { ast_log(LOG_WARNING, "Bad write (%d/%d): %s\n", res, frame_size[fs->rate], strerror(errno)); return -1; } return 0; }
static int load_module | ( | void | ) | [static] |
Definition at line 237 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.
{ int i; for (i = 0; f[i].format ; i++) { if (ast_format_register(&f[i])) { /* errors are fatal */ ast_log(LOG_WARNING, "Failed to register format %s.\n", f[i].name); return AST_MODULE_LOAD_FAILURE; } } return AST_MODULE_LOAD_SUCCESS; }
static int unload_module | ( | void | ) | [static] |
Definition at line 250 of file format_g726.c.
References ast_format_unregister(), ast_log(), ast_format::format, LOG_WARNING, and name.
{ int i; for (i = 0; f[i].format ; i++) { if (ast_format_unregister(f[i].name)) ast_log(LOG_WARNING, "Failed to unregister format %s.\n", f[i].name); } return(0); }
struct ast_module_info __MODULE_INFO_SECTION __mod_info = { __MODULE_INFO_GLOBALS .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Raw G.726 (16/24/32/40kbps) data" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, .load_pri = 10, } [static] |
Definition at line 265 of file format_g726.c.
struct ast_module_info* ast_module_info = &__mod_info [static] |
Definition at line 265 of file format_g726.c.
struct ast_format f[] [static] |
Definition at line 177 of file format_g726.c.
Referenced by __adsi_transmit_messages(), __ast_format_register(), __ast_play_and_record(), __ast_queue_frame(), __ast_read(), __ast_request_and_dial(), __ast_smoother_feed(), __attempt_transmit(), __dahdi_exception(), adpcm_sample(), adsi_message(), agent_ack_sleep(), agent_read(), alaw_sample(), alloc_profile(), alsa_read(), app_exec(), ast_autoservice_stop(), ast_bridge_call(), ast_channel_free(), ast_config_text_file_save(), ast_dsp_frame_freed(), ast_filehelper(), ast_format_str_reduce(), ast_frame_header_new(), ast_generic_bridge(), ast_jb_destroy(), ast_read_image(), ast_readfile(), ast_recvtext(), ast_rtcp_read(), ast_rtp_read(), ast_rtp_write(), ast_safe_sleep_conditional(), ast_send_image(), ast_slinfactory_destroy(), ast_slinfactory_feed(), ast_tonepair(), ast_trans_frameout(), ast_translate(), ast_translate_frame_freed(), ast_udptl_bridge(), ast_ulaw_init(), ast_waitfordigit_full(), ast_write(), ast_writefile(), async_wait(), auth_exec(), autoservice_run(), calc_cost(), channel_spy(), check_goto_on_transfer(), close_logger(), compile_script(), conf_exec(), conf_flush(), conf_run(), config_text_file_load(), create_video_frame(), dahdi_bridge(), dahdi_exception(), dahdi_handle_event(), dahdi_read(), dictate_exec(), disa_exec(), do_waiting(), echo_exec(), eivr_comm(), execif_exec(), fakesrc_sample(), feature_request_and_dial(), filestream_destructor(), find_cache(), fn_wrapper(), frame_cache_cleanup(), function_realtime_store(), g722_sample(), g726_sample(), gen_generate(), gen_readframe(), get_bit_raw(), gsm_sample(), gtalk_rtp_read(), h261_encap(), h263_encap(), h263p_encap(), h264_encap(), handle_cli_core_show_file_formats(), handle_cli_file_convert(), handle_recordfile(), http_post_callback(), iax2_bridge(), iax2_trunk_queue(), iax_park_thread(), ices_exec(), ilbc_sample(), isAnsweringMachine(), jack_exec(), jb_empty_and_reset_adaptive(), jb_get_and_deliver(), jingle_rtp_read(), key_history(), launch_asyncagi(), lintoadpcm_frameout(), load_file(), lpc10_sample(), lua_read_extensions_file(), main(), manage_parkinglot(), masq_park_call(), measurenoise(), mgcp_read(), mgcp_rtp_read(), misdn_bridge(), misdn_lib_nt_debug_init(), moh_files_generator(), moh_files_readframe(), mp3_exec(), mpeg4_encap(), NBScat_exec(), network_thread(), oh323_rtp_read(), op_func(), oss_read(), parse(), process_ast_dsp(), process_cisco_dtmf(), process_rfc2833(), process_rfc3389(), readdirqueue(), receive_dtmf_digits(), record_exec(), recordthread(), reload_followme(), reload_logger(), remove_from_queue(), rpt(), rpt_exec(), rtpread(), run_agi(), safe_append(), scan_service(), send_tone_burst(), send_waveform_to_channel(), sendurl_exec(), show_history(), sip_rtp_read(), skinny_rtp_read(), slin16_sample(), slin8_sample(), sms_handleincoming_proto2(), sms_hexdump(), speech_background(), speex_sample(), spy_generate(), ss_thread(), store_rxctcssadj(), store_rxgain(), store_rxvoiceadj(), strip_quotes(), testclient_exec(), testserver_exec(), try_load_key(), udptlread(), ulaw_sample(), unistim_rtp_read(), unload_module(), usbradio_read(), 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 49 of file format_g726.c.