Multicast RTP Engine. More...
#include "asterisk.h"
#include <sys/time.h>
#include <signal.h>
#include <fcntl.h>
#include <math.h>
#include "asterisk/pbx.h"
#include "asterisk/frame.h"
#include "asterisk/channel.h"
#include "asterisk/acl.h"
#include "asterisk/config.h"
#include "asterisk/lock.h"
#include "asterisk/utils.h"
#include "asterisk/cli.h"
#include "asterisk/manager.h"
#include "asterisk/unaligned.h"
#include "asterisk/module.h"
#include "asterisk/rtp_engine.h"
Go to the source code of this file.
Data Structures | |
struct | multicast_control_packet |
Structure for a Linksys control packet. More... | |
struct | multicast_rtp |
Structure for a multicast paging instance. More... | |
Macros | |
#define | LINKSYS_MCAST_STARTCMD 6 |
#define | LINKSYS_MCAST_STOPCMD 7 |
Enumerations | |
enum | multicast_type { MULTICAST_TYPE_BASIC = 0, MULTICAST_TYPE_LINKSYS } |
Type of paging to do. More... | |
Functions | |
static void | __reg_module (void) |
static void | __unreg_module (void) |
static unsigned int | calc_txstamp (struct multicast_rtp *rtp, struct timeval *delivery) |
static int | load_module (void) |
static int | multicast_rtp_activate (struct ast_rtp_instance *instance) |
Function called to indicate that audio is now going to flow. More... | |
static int | multicast_rtp_destroy (struct ast_rtp_instance *instance) |
Function called to destroy a multicast instance. More... | |
static int | multicast_rtp_new (struct ast_rtp_instance *instance, struct sched_context *sched, struct ast_sockaddr *addr, void *data) |
Function called to create a new multicast instance. More... | |
static struct ast_frame * | multicast_rtp_read (struct ast_rtp_instance *instance, int rtcp) |
Function called to read from a multicast instance. More... | |
static int | multicast_rtp_write (struct ast_rtp_instance *instance, struct ast_frame *frame) |
Function called to broadcast some audio on a multicast instance. More... | |
static int | multicast_send_control_packet (struct ast_rtp_instance *instance, struct multicast_rtp *multicast, int command) |
Helper function which populates a control packet with useful information and sends it. More... | |
static int | rtp_get_rate (format_t format) |
static int | unload_module (void) |
Variables | |
static struct ast_module_info | __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Multicast RTP Engine" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "ac1f6a56484a8820659555499174e588" , .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_CHANNEL_DEPEND, } |
static struct ast_module_info * | ast_module_info = &__mod_info |
static struct ast_rtp_engine | multicast_rtp_engine |
Multicast RTP Engine.
Definition in file res_rtp_multicast.c.
#define LINKSYS_MCAST_STARTCMD 6 |
Command value used for Linksys paging to indicate we are starting
Definition at line 58 of file res_rtp_multicast.c.
Referenced by multicast_rtp_activate().
#define LINKSYS_MCAST_STOPCMD 7 |
Command value used for Linksys paging to indicate we are stopping
Definition at line 61 of file res_rtp_multicast.c.
Referenced by multicast_rtp_destroy().
enum multicast_type |
Type of paging to do.
Enumerator | |
---|---|
MULTICAST_TYPE_BASIC |
Simple multicast enabled client/receiver paging like Snom and Barix uses |
MULTICAST_TYPE_LINKSYS |
More advanced Linksys type paging which requires a start and stop packet |
Definition at line 64 of file res_rtp_multicast.c.
|
static |
Definition at line 320 of file res_rtp_multicast.c.
|
static |
Definition at line 320 of file res_rtp_multicast.c.
|
static |
Definition at line 150 of file res_rtp_multicast.c.
References ast_tvdiff_ms(), ast_tvnow(), ast_tvzero(), and multicast_rtp::txcore.
Referenced by multicast_rtp_write().
|
static |
Definition at line 300 of file res_rtp_multicast.c.
References AST_MODULE_LOAD_DECLINE, AST_MODULE_LOAD_SUCCESS, and ast_rtp_engine_register.
|
static |
Function called to indicate that audio is now going to flow.
Definition at line 204 of file res_rtp_multicast.c.
References ast_rtp_instance_get_data(), LINKSYS_MCAST_STARTCMD, multicast_send_control_packet(), MULTICAST_TYPE_LINKSYS, and multicast_rtp::type.
|
static |
Function called to destroy a multicast instance.
Definition at line 216 of file res_rtp_multicast.c.
References ast_free, ast_rtp_instance_get_data(), LINKSYS_MCAST_STOPCMD, multicast_send_control_packet(), MULTICAST_TYPE_LINKSYS, multicast_rtp::socket, and multicast_rtp::type.
|
static |
Function called to create a new multicast instance.
Definition at line 115 of file res_rtp_multicast.c.
References ast_calloc, ast_free, ast_random(), ast_rtp_instance_set_data(), MULTICAST_TYPE_BASIC, MULTICAST_TYPE_LINKSYS, multicast_rtp::socket, multicast_rtp::ssrc, type, and multicast_rtp::type.
|
static |
Function called to read from a multicast instance.
Definition at line 295 of file res_rtp_multicast.c.
References ast_null_frame.
|
static |
Function called to broadcast some audio on a multicast instance.
Definition at line 232 of file res_rtp_multicast.c.
References AST_FRAME_VOICE, ast_frdup(), AST_FRFLAG_HAS_TIMING_INFO, ast_frfree, ast_log(), ast_rtp_codecs_payload_code(), ast_rtp_instance_get_codecs(), ast_rtp_instance_get_data(), ast_rtp_instance_get_remote_address(), ast_sendto(), ast_sockaddr_stringify(), ast_test_flag, calc_txstamp(), ast_frame_subclass::codec, ast_frame::data, ast_frame::datalen, ast_frame::delivery, errno, f, ast_frame::frametype, multicast_rtp::lastts, LOG_ERROR, ast_frame::offset, ast_frame::ptr, put_unaligned_uint32(), rtp_get_rate(), multicast_rtp::seqno, multicast_rtp::socket, multicast_rtp::ssrc, ast_frame::subclass, and ast_frame::ts.
|
static |
Helper function which populates a control packet with useful information and sends it.
Definition at line 170 of file res_rtp_multicast.c.
References ast_log(), ast_rtp_instance_get_local_address(), ast_rtp_instance_get_remote_address(), ast_sendto(), ast_sockaddr_ipv4(), ast_sockaddr_is_ipv6(), ast_sockaddr_isnull(), ast_sockaddr_port, multicast_control_packet::ip, LOG_WARNING, multicast_control_packet::port, multicast_rtp::socket, and multicast_control_packet::unique_id.
Referenced by multicast_rtp_activate(), and multicast_rtp_destroy().
|
static |
Definition at line 145 of file res_rtp_multicast.c.
References AST_FORMAT_G722, and ast_format_rate().
Referenced by multicast_rtp_write().
|
static |
Definition at line 309 of file res_rtp_multicast.c.
References ast_rtp_engine_unregister().
|
static |
Definition at line 320 of file res_rtp_multicast.c.
|
static |
Definition at line 320 of file res_rtp_multicast.c.
|
static |
Definition at line 105 of file res_rtp_multicast.c.