[asterisk-commits] file: trunk r186078 - in /trunk: ./ apps/ channels/ configs/ include/asterisk...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Apr 2 12:20:57 CDT 2009
Author: file
Date: Thu Apr 2 12:20:52 2009
New Revision: 186078
URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=186078
Log:
Merge in the RTP engine API.
This API provides a generic way for multiple RTP stacks to be
integrated into Asterisk. Right now there is only one present, res_rtp_asterisk,
which is the existing Asterisk RTP stack. Functionality wise this commit
performs the same as previously. API documentation can be viewed in the
rtp_engine.h header file.
Review: http://reviewboard.digium.com/r/209/
Added:
trunk/include/asterisk/rtp_engine.h
- copied unchanged from r186058, team/file/rtp_engine-mark2/include/asterisk/rtp_engine.h
trunk/include/asterisk/stun.h
- copied unchanged from r186058, team/file/rtp_engine-mark2/include/asterisk/stun.h
trunk/main/rtp_engine.c
- copied unchanged from r186058, team/file/rtp_engine-mark2/main/rtp_engine.c
trunk/main/stun.c
- copied unchanged from r186058, team/file/rtp_engine-mark2/main/stun.c
trunk/res/res_rtp_asterisk.c
- copied unchanged from r186058, team/file/rtp_engine-mark2/res/res_rtp_asterisk.c
Removed:
trunk/include/asterisk/rtp.h
trunk/main/rtp.c
Modified:
trunk/UPGRADE.txt
trunk/apps/app_dial.c
trunk/channels/chan_agent.c
trunk/channels/chan_bridge.c
trunk/channels/chan_gtalk.c
trunk/channels/chan_h323.c
trunk/channels/chan_jingle.c
trunk/channels/chan_local.c
trunk/channels/chan_mgcp.c
trunk/channels/chan_sip.c
trunk/channels/chan_skinny.c
trunk/channels/chan_unistim.c
trunk/configs/sip.conf.sample
trunk/include/asterisk/_private.h
trunk/main/Makefile
trunk/main/asterisk.c
trunk/main/loader.c
Modified: trunk/UPGRADE.txt
URL: http://svn.digium.com/svn-view/asterisk/trunk/UPGRADE.txt?view=diff&rev=186078&r1=186077&r2=186078
==============================================================================
--- trunk/UPGRADE.txt (original)
+++ trunk/UPGRADE.txt Thu Apr 2 12:20:52 2009
@@ -20,7 +20,11 @@
From 1.6.2 to 1.6.3:
-* Nothing, yet!
+* The usage of RTP inside of Asterisk has now become modularized. This means
+ the Asterisk RTP stack now exists as a loadable module, res_rtp_asterisk.
+ If you are not using autoload=yes in modules.conf you will need to ensure
+ it is set to load. If not, then any module which uses RTP (such as chan_sip)
+ will not be able to send or receive calls.
From 1.6.1 to 1.6.2:
Modified: trunk/apps/app_dial.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/apps/app_dial.c?view=diff&rev=186078&r1=186077&r2=186078
==============================================================================
--- trunk/apps/app_dial.c (original)
+++ trunk/apps/app_dial.c Thu Apr 2 12:20:52 2009
@@ -54,7 +54,7 @@
#include "asterisk/utils.h"
#include "asterisk/app.h"
#include "asterisk/causes.h"
-#include "asterisk/rtp.h"
+#include "asterisk/rtp_engine.h"
#include "asterisk/cdr.h"
#include "asterisk/manager.h"
#include "asterisk/privacy.h"
@@ -745,7 +745,9 @@
char *new_cid_num, *new_cid_name;
struct ast_channel *src;
- ast_rtp_make_compatible(c, in, single);
+ if (single) {
+ ast_rtp_instance_early_bridge_make_compatible(c, in);
+ }
if (ast_test_flag64(o, OPT_FORCECLID)) {
new_cid_num = ast_strdup(S_OR(in->macroexten, in->exten));
new_cid_name = NULL; /* XXX no name ? */
@@ -1745,7 +1747,9 @@
pbx_builtin_setvar_helper(tc, "DIALEDPEERNUMBER", numsubst);
/* Setup outgoing SDP to match incoming one */
- ast_rtp_make_compatible(tc, chan, !outgoing && !rest);
+ if (!outgoing && !rest) {
+ ast_rtp_instance_early_bridge_make_compatible(tc, chan);
+ }
/* Inherit specially named variables from parent channel */
ast_channel_inherit_variables(chan, tc);
Modified: trunk/channels/chan_agent.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/channels/chan_agent.c?view=diff&rev=186078&r1=186077&r2=186078
==============================================================================
--- trunk/channels/chan_agent.c (original)
+++ trunk/channels/chan_agent.c Thu Apr 2 12:20:52 2009
@@ -52,7 +52,6 @@
#include "asterisk/pbx.h"
#include "asterisk/sched.h"
#include "asterisk/io.h"
-#include "asterisk/rtp.h"
#include "asterisk/acl.h"
#include "asterisk/callerid.h"
#include "asterisk/file.h"
Modified: trunk/channels/chan_bridge.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/channels/chan_bridge.c?view=diff&rev=186078&r1=186077&r2=186078
==============================================================================
--- trunk/channels/chan_bridge.c (original)
+++ trunk/channels/chan_bridge.c Thu Apr 2 12:20:52 2009
@@ -39,7 +39,6 @@
#include "asterisk/pbx.h"
#include "asterisk/sched.h"
#include "asterisk/io.h"
-#include "asterisk/rtp.h"
#include "asterisk/acl.h"
#include "asterisk/callerid.h"
#include "asterisk/file.h"
Modified: trunk/channels/chan_gtalk.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/channels/chan_gtalk.c?view=diff&rev=186078&r1=186077&r2=186078
==============================================================================
--- trunk/channels/chan_gtalk.c (original)
+++ trunk/channels/chan_gtalk.c Thu Apr 2 12:20:52 2009
@@ -52,7 +52,8 @@
#include "asterisk/pbx.h"
#include "asterisk/sched.h"
#include "asterisk/io.h"
-#include "asterisk/rtp.h"
+#include "asterisk/rtp_engine.h"
+#include "asterisk/stun.h"
#include "asterisk/acl.h"
#include "asterisk/callerid.h"
#include "asterisk/file.h"
@@ -112,8 +113,8 @@
char cid_name[80]; /*!< Caller ID name */
char exten[80]; /*!< Called extension */
struct ast_channel *owner; /*!< Master Channel */
- struct ast_rtp *rtp; /*!< RTP audio session */
- struct ast_rtp *vrtp; /*!< RTP video session */
+ struct ast_rtp_instance *rtp; /*!< RTP audio session */
+ struct ast_rtp_instance *vrtp; /*!< RTP video session */
int jointcapability; /*!< Supported capability at both ends (codecs ) */
int peercapability;
struct gtalk_pvt *next; /* Next entity */
@@ -183,11 +184,6 @@
static struct gtalk_pvt *gtalk_alloc(struct gtalk *client, const char *us, const char *them, const char *sid);
static char *gtalk_do_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *gtalk_show_channels(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
-/*----- RTP interface functions */
-static int gtalk_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp,
- struct ast_rtp *vrtp, struct ast_rtp *trtp, int codecs, int nat_active);
-static enum ast_rtp_get_result gtalk_get_rtp_peer(struct ast_channel *chan, struct ast_rtp **rtp);
-static int gtalk_get_codec(struct ast_channel *chan);
/*! \brief PBX interface structure for channel registration */
static const struct ast_channel_tech gtalk_tech = {
@@ -197,7 +193,7 @@
.requester = gtalk_request,
.send_digit_begin = gtalk_digit_begin,
.send_digit_end = gtalk_digit_end,
- .bridge = ast_rtp_bridge,
+ .bridge = ast_rtp_instance_bridge,
.call = gtalk_call,
.hangup = gtalk_hangup,
.answer = gtalk_answer,
@@ -215,14 +211,6 @@
static struct sched_context *sched; /*!< The scheduling context */
static struct io_context *io; /*!< The IO context */
static struct in_addr __ourip;
-
-/*! \brief RTP driver interface */
-static struct ast_rtp_protocol gtalk_rtp = {
- type: "Gtalk",
- get_rtp_info: gtalk_get_rtp_peer,
- set_rtp_peer: gtalk_set_rtp_peer,
- get_codec: gtalk_get_codec,
-};
static struct ast_cli_entry gtalk_cli[] = {
AST_CLI_DEFINE(gtalk_do_reload, "Reload GoogleTalk configuration"),
@@ -371,7 +359,7 @@
iks_insert_node(dcodecs, payload_gsm);
res++;
}
- ast_rtp_lookup_code(p->rtp, 1, codec);
+
return res;
}
@@ -523,18 +511,19 @@
return res;
}
-static enum ast_rtp_get_result gtalk_get_rtp_peer(struct ast_channel *chan, struct ast_rtp **rtp)
+static enum ast_rtp_glue_result gtalk_get_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance **instance)
{
struct gtalk_pvt *p = chan->tech_pvt;
- enum ast_rtp_get_result res = AST_RTP_GET_FAILED;
+ enum ast_rtp_glue_result res = AST_RTP_GLUE_RESULT_FORBID;
if (!p)
return res;
ast_mutex_lock(&p->lock);
if (p->rtp){
- *rtp = p->rtp;
- res = AST_RTP_TRY_PARTIAL;
+ ao2_ref(p->rtp, +1);
+ *instance = p->rtp;
+ res = AST_RTP_GLUE_RESULT_LOCAL;
}
ast_mutex_unlock(&p->lock);
@@ -547,7 +536,7 @@
return p->peercapability;
}
-static int gtalk_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp, struct ast_rtp *vrtp, struct ast_rtp *trtp, int codecs, int nat_active)
+static int gtalk_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance *rtp, struct ast_rtp_instance *vrtp, struct ast_rtp_instance *trtp, int codecs, int nat_active)
{
struct gtalk_pvt *p;
@@ -566,6 +555,13 @@
ast_mutex_unlock(&p->lock);
return 0;
}
+
+static struct ast_rtp_glue gtalk_rtp_glue = {
+ .type = "Gtalk",
+ .get_rtp_info = gtalk_get_rtp_peer,
+ .get_codec = gtalk_get_codec,
+ .update_peer = gtalk_set_rtp_peer,
+};
static int gtalk_response(struct gtalk *client, char *from, ikspak *pak, const char *reasonstr, const char *reasonstr2)
{
@@ -617,13 +613,13 @@
/* codec points to the first <payload-type/> tag */
codec = iks_first_tag(iks_first_tag(iks_first_tag(pak->x)));
while (codec) {
- ast_rtp_set_m_type(tmp->rtp, atoi(iks_find_attrib(codec, "id")));
- ast_rtp_set_rtpmap_type(tmp->rtp, atoi(iks_find_attrib(codec, "id")), "audio", iks_find_attrib(codec, "name"), 0);
+ ast_rtp_codecs_payloads_set_m_type(ast_rtp_instance_get_codecs(tmp->rtp), tmp->rtp, atoi(iks_find_attrib(codec, "id")));
+ ast_rtp_codecs_payloads_set_rtpmap_type(ast_rtp_instance_get_codecs(tmp->rtp), tmp->rtp, atoi(iks_find_attrib(codec, "id")), "audio", iks_find_attrib(codec, "name"), 0);
codec = iks_next_tag(codec);
}
/* Now gather all of the codecs that we are asked for */
- ast_rtp_get_current_formats(tmp->rtp, &tmp->peercapability, &peernoncodeccapability);
+ ast_rtp_codecs_payload_formats(ast_rtp_instance_get_codecs(tmp->rtp), &tmp->peercapability, &peernoncodeccapability);
/* at this point, we received an awser from the remote Gtalk client,
which allows us to compare capabilities */
@@ -810,7 +806,7 @@
goto safeout;
}
- ast_rtp_get_us(p->rtp, &sin);
+ ast_rtp_instance_get_local_address(p->rtp, &sin);
ast_find_ourip(&us, bindaddr);
if (!strcmp(ast_inet_ntoa(us), "127.0.0.1")) {
ast_log(LOG_WARNING, "Found a loopback IP on the system, check your network configuration or set the bindaddr attribute.");
@@ -951,8 +947,9 @@
tmp->initiator = 1;
}
/* clear codecs */
- tmp->rtp = ast_rtp_new_with_bindaddr(sched, io, 1, 0, bindaddr.sin_addr);
- ast_rtp_pt_clear(tmp->rtp);
+ tmp->rtp = ast_rtp_instance_new(NULL, sched, &bindaddr, NULL);
+ ast_rtp_instance_set_prop(tmp->rtp, AST_RTP_PROPERTY_RTCP, 1);
+ ast_rtp_codecs_payloads_clear(ast_rtp_instance_get_codecs(tmp->rtp), tmp->rtp);
/* add user configured codec capabilites */
if (client->capability)
@@ -1014,20 +1011,20 @@
/* Set Frame packetization */
if (i->rtp)
- ast_rtp_codec_setpref(i->rtp, &i->prefs);
+ ast_rtp_codecs_packetization_set(ast_rtp_instance_get_codecs(i->rtp), i->rtp, &i->prefs);
tmp->nativeformats = ast_codec_choose(&i->prefs, what, 1) | (i->jointcapability & AST_FORMAT_VIDEO_MASK);
fmt = ast_best_codec(tmp->nativeformats);
if (i->rtp) {
- ast_rtp_setstun(i->rtp, 1);
- ast_channel_set_fd(tmp, 0, ast_rtp_fd(i->rtp));
- ast_channel_set_fd(tmp, 1, ast_rtcp_fd(i->rtp));
+ ast_rtp_instance_set_prop(i->rtp, AST_RTP_PROPERTY_STUN, 1);
+ ast_channel_set_fd(tmp, 0, ast_rtp_instance_fd(i->rtp, 0));
+ ast_channel_set_fd(tmp, 1, ast_rtp_instance_fd(i->rtp, 1));
}
if (i->vrtp) {
- ast_rtp_setstun(i->rtp, 1);
- ast_channel_set_fd(tmp, 2, ast_rtp_fd(i->vrtp));
- ast_channel_set_fd(tmp, 3, ast_rtcp_fd(i->vrtp));
+ ast_rtp_instance_set_prop(i->vrtp, AST_RTP_PROPERTY_STUN, 1);
+ ast_channel_set_fd(tmp, 2, ast_rtp_instance_fd(i->vrtp, 0));
+ ast_channel_set_fd(tmp, 3, ast_rtp_instance_fd(i->vrtp, 1));
}
if (state == AST_STATE_RING)
tmp->rings = 1;
@@ -1142,9 +1139,9 @@
if (p->owner)
ast_log(LOG_WARNING, "Uh oh, there's an owner, this is going to be messy.\n");
if (p->rtp)
- ast_rtp_destroy(p->rtp);
+ ast_rtp_instance_destroy(p->rtp);
if (p->vrtp)
- ast_rtp_destroy(p->vrtp);
+ ast_rtp_instance_destroy(p->vrtp);
gtalk_free_candidates(p->theircandidates);
ast_free(p);
}
@@ -1207,13 +1204,13 @@
codec = iks_first_tag(iks_first_tag(iks_first_tag(pak->x)));
while (codec) {
- ast_rtp_set_m_type(p->rtp, atoi(iks_find_attrib(codec, "id")));
- ast_rtp_set_rtpmap_type(p->rtp, atoi(iks_find_attrib(codec, "id")), "audio", iks_find_attrib(codec, "name"), 0);
+ ast_rtp_codecs_payloads_set_m_type(ast_rtp_instance_get_codecs(p->rtp), p->rtp, atoi(iks_find_attrib(codec, "id")));
+ ast_rtp_codecs_payloads_set_rtpmap_type(ast_rtp_instance_get_codecs(p->rtp), p->rtp, atoi(iks_find_attrib(codec, "id")), "audio", iks_find_attrib(codec, "name"), 0);
codec = iks_next_tag(codec);
}
/* Now gather all of the codecs that we are asked for */
- ast_rtp_get_current_formats(p->rtp, &p->peercapability, &peernoncodeccapability);
+ ast_rtp_codecs_payload_formats(ast_rtp_instance_get_codecs(p->rtp), &p->peercapability, &peernoncodeccapability);
p->jointcapability = p->capability & p->peercapability;
ast_mutex_unlock(&p->lock);
@@ -1277,16 +1274,16 @@
p->ourcandidates->username);
/* Find out the result of the STUN */
- ast_rtp_get_peer(p->rtp, &aux);
+ ast_rtp_instance_get_remote_address(p->rtp, &aux);
/* If the STUN result is different from the IP of the hostname,
lock on the stun IP of the hostname advertised by the
remote client */
if (aux.sin_addr.s_addr &&
aux.sin_addr.s_addr != sin.sin_addr.s_addr)
- ast_rtp_stun_request(p->rtp, &aux, username);
+ ast_rtp_instance_stun_request(p->rtp, &aux, username);
else
- ast_rtp_stun_request(p->rtp, &sin, username);
+ ast_rtp_instance_stun_request(p->rtp, &sin, username);
if (aux.sin_addr.s_addr) {
ast_debug(4, "Receiving RTP traffic from IP %s, matches with remote candidate's IP %s\n", ast_inet_ntoa(aux.sin_addr), tmp->ip);
@@ -1387,7 +1384,7 @@
if (!p->rtp)
return &ast_null_frame;
- f = ast_rtp_read(p->rtp);
+ f = ast_rtp_instance_read(p->rtp, 0);
gtalk_update_stun(p->parent, p);
if (p->owner) {
/* We already hold the channel lock */
@@ -1438,7 +1435,7 @@
if (p) {
ast_mutex_lock(&p->lock);
if (p->rtp) {
- res = ast_rtp_write(p->rtp, frame);
+ res = ast_rtp_instance_write(p->rtp, frame);
}
ast_mutex_unlock(&p->lock);
}
@@ -1447,7 +1444,7 @@
if (p) {
ast_mutex_lock(&p->lock);
if (p->vrtp) {
- res = ast_rtp_write(p->vrtp, frame);
+ res = ast_rtp_instance_write(p->vrtp, frame);
}
ast_mutex_unlock(&p->lock);
}
@@ -2062,7 +2059,7 @@
return 0;
}
- ast_rtp_proto_register(>alk_rtp);
+ ast_rtp_glue_register(>alk_rtp_glue);
ast_cli_register_multiple(gtalk_cli, ARRAY_LEN(gtalk_cli));
/* Make sure we can register our channel type */
@@ -2086,7 +2083,7 @@
ast_cli_unregister_multiple(gtalk_cli, ARRAY_LEN(gtalk_cli));
/* First, take us out of the channel loop */
ast_channel_unregister(>alk_tech);
- ast_rtp_proto_unregister(>alk_rtp);
+ ast_rtp_glue_unregister(>alk_rtp_glue);
if (!ast_mutex_lock(>alklock)) {
/* Hangup all interfaces if they have an owner */
Modified: trunk/channels/chan_h323.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/channels/chan_h323.c?view=diff&rev=186078&r1=186077&r2=186078
==============================================================================
--- trunk/channels/chan_h323.c (original)
+++ trunk/channels/chan_h323.c Thu Apr 2 12:20:52 2009
@@ -76,7 +76,7 @@
#include "asterisk/utils.h"
#include "asterisk/sched.h"
#include "asterisk/io.h"
-#include "asterisk/rtp.h"
+#include "asterisk/rtp_engine.h"
#include "asterisk/acl.h"
#include "asterisk/callerid.h"
#include "asterisk/cli.h"
@@ -161,7 +161,7 @@
char accountcode[256]; /*!< Account code */
char rdnis[80]; /*!< Referring DNIS, if available */
int amaflags; /*!< AMA Flags */
- struct ast_rtp *rtp; /*!< RTP Session */
+ struct ast_rtp_instance *rtp; /*!< RTP Session */
struct ast_dsp *vad; /*!< Used for in-band DTMF detection */
int nativeformats; /*!< Codec formats supported by a channel */
int needhangup; /*!< Send hangup when Asterisk is ready */
@@ -254,7 +254,7 @@
.write = oh323_write,
.indicate = oh323_indicate,
.fixup = oh323_fixup,
- .bridge = ast_rtp_bridge,
+ .bridge = ast_rtp_instance_bridge,
};
static const char* redirectingreason2str(int redirectingreason)
@@ -381,8 +381,8 @@
if (pvt->update_rtp_info > 0) {
if (pvt->rtp) {
ast_jb_configure(c, &global_jbconf);
- ast_channel_set_fd(c, 0, ast_rtp_fd(pvt->rtp));
- ast_channel_set_fd(c, 1, ast_rtcp_fd(pvt->rtp));
+ ast_channel_set_fd(c, 0, ast_rtp_instance_fd(pvt->rtp, 0));
+ ast_channel_set_fd(c, 1, ast_rtp_instance_fd(pvt->rtp, 1));
ast_queue_frame(pvt->owner, &ast_null_frame); /* Tell Asterisk to apply changes */
}
pvt->update_rtp_info = -1;
@@ -444,7 +444,7 @@
AST_SCHED_DEL(sched, pvt->DTMFsched);
if (pvt->rtp) {
- ast_rtp_destroy(pvt->rtp);
+ ast_rtp_instance_destroy(pvt->rtp);
}
/* Free dsp used for in-band DTMF detection */
@@ -510,7 +510,7 @@
if (h323debug) {
ast_log(LOG_DTMF, "Begin sending out-of-band digit %c on %s\n", digit, c->name);
}
- ast_rtp_senddigit_begin(pvt->rtp, digit);
+ ast_rtp_instance_dtmf_begin(pvt->rtp, digit);
ast_mutex_unlock(&pvt->lock);
} else if (pvt->txDtmfDigit != digit) {
/* in-band DTMF */
@@ -549,7 +549,7 @@
if (h323debug) {
ast_log(LOG_DTMF, "End sending out-of-band digit %c on %s, duration %d\n", digit, c->name, duration);
}
- ast_rtp_senddigit_end(pvt->rtp, digit);
+ ast_rtp_instance_dtmf_end(pvt->rtp, digit);
ast_mutex_unlock(&pvt->lock);
} else {
/* in-band DTMF */
@@ -747,11 +747,11 @@
/* Only apply it for the first packet, we just need the correct ip/port */
if (pvt->options.nat) {
- ast_rtp_setnat(pvt->rtp, pvt->options.nat);
+ ast_rtp_instance_set_prop(pvt->rtp, AST_RTP_PROPERTY_NAT, pvt->options.nat);
pvt->options.nat = 0;
}
- f = ast_rtp_read(pvt->rtp);
+ f = ast_rtp_instance_read(pvt->rtp, 0);
/* Don't send RFC2833 if we're not supposed to */
if (f && (f->frametype == AST_FRAME_DTMF) && !(pvt->options.dtmfmode & (H323_DTMF_RFC2833 | H323_DTMF_CISCO))) {
return &ast_null_frame;
@@ -808,7 +808,7 @@
break;
case 1:
if (pvt->rtp)
- fr = ast_rtcp_read(pvt->rtp);
+ fr = ast_rtp_instance_read(pvt->rtp, 1);
else
fr = &ast_null_frame;
break;
@@ -842,7 +842,7 @@
if (pvt) {
ast_mutex_lock(&pvt->lock);
if (pvt->rtp && !pvt->recvonly)
- res = ast_rtp_write(pvt->rtp, frame);
+ res = ast_rtp_instance_write(pvt->rtp, frame);
__oh323_update_info(c, pvt);
ast_mutex_unlock(&pvt->lock);
}
@@ -910,7 +910,7 @@
res = 0;
break;
case AST_CONTROL_SRCUPDATE:
- ast_rtp_new_source(pvt->rtp);
+ ast_rtp_instance_new_source(pvt->rtp);
res = 0;
break;
case AST_CONTROL_PROCEEDING:
@@ -946,17 +946,17 @@
static int __oh323_rtp_create(struct oh323_pvt *pvt)
{
- struct in_addr our_addr;
+ struct sockaddr_in our_addr;
if (pvt->rtp)
return 0;
- if (ast_find_ourip(&our_addr, bindaddr)) {
+ if (ast_find_ourip(&our_addr.sin_addr, bindaddr)) {
ast_mutex_unlock(&pvt->lock);
ast_log(LOG_ERROR, "Unable to locate local IP address for RTP stream\n");
return -1;
}
- pvt->rtp = ast_rtp_new_with_bindaddr(sched, io, 1, 0, our_addr);
+ pvt->rtp = ast_rtp_instance_new(NULL, sched, &our_addr, NULL);
if (!pvt->rtp) {
ast_mutex_unlock(&pvt->lock);
ast_log(LOG_WARNING, "Unable to create RTP session: %s\n", strerror(errno));
@@ -965,24 +965,24 @@
if (h323debug)
ast_debug(1, "Created RTP channel\n");
- ast_rtp_setqos(pvt->rtp, tos, cos, "H323 RTP");
+ ast_rtp_instance_set_qos(pvt->rtp, tos, cos, "H323 RTP");
if (h323debug)
ast_debug(1, "Setting NAT on RTP to %d\n", pvt->options.nat);
- ast_rtp_setnat(pvt->rtp, pvt->options.nat);
+ ast_rtp_instance_set_prop(pvt->rtp, AST_RTP_PROPERTY_NAT, pvt->options.nat);
if (pvt->dtmf_pt[0] > 0)
- ast_rtp_set_rtpmap_type(pvt->rtp, pvt->dtmf_pt[0], "audio", "telephone-event", 0);
+ ast_rtp_codecs_payloads_set_rtpmap_type(ast_rtp_instance_get_codecs(pvt->rtp), pvt->rtp, pvt->dtmf_pt[0], "audio", "telephone-event", 0);
if (pvt->dtmf_pt[1] > 0)
- ast_rtp_set_rtpmap_type(pvt->rtp, pvt->dtmf_pt[1], "audio", "cisco-telephone-event", 0);
+ ast_rtp_codecs_payloads_set_rtpmap_type(ast_rtp_instance_get_codecs(pvt->rtp), pvt->rtp, pvt->dtmf_pt[1], "audio", "cisco-telephone-event", 0);
if (pvt->peercapability)
- ast_rtp_codec_setpref(pvt->rtp, &pvt->peer_prefs);
+ ast_rtp_codecs_packetization_set(ast_rtp_instance_get_codecs(pvt->rtp), pvt->rtp, &pvt->peer_prefs);
if (pvt->owner && !ast_channel_trylock(pvt->owner)) {
ast_jb_configure(pvt->owner, &global_jbconf);
- ast_channel_set_fd(pvt->owner, 0, ast_rtp_fd(pvt->rtp));
- ast_channel_set_fd(pvt->owner, 1, ast_rtcp_fd(pvt->rtp));
+ ast_channel_set_fd(pvt->owner, 0, ast_rtp_instance_fd(pvt->rtp, 0));
+ ast_channel_set_fd(pvt->owner, 1, ast_rtp_instance_fd(pvt->rtp, 1));
ast_queue_frame(pvt->owner, &ast_null_frame); /* Tell Asterisk to apply changes */
ast_channel_unlock(pvt->owner);
} else
@@ -1028,13 +1028,13 @@
if (!pvt->rtp)
__oh323_rtp_create(pvt);
#if 0
- ast_channel_set_fd(ch, 0, ast_rtp_fd(pvt->rtp));
- ast_channel_set_fd(ch, 1, ast_rtcp_fd(pvt->rtp));
+ ast_channel_set_fd(ch, 0, ast_rtp_instance_fd(pvt->rtp, 0));
+ ast_channel_set_fd(ch, 1, ast_rtp_instance_fd(pvt->rtp, 1));
#endif
#ifdef VIDEO_SUPPORT
if (pvt->vrtp) {
- ast_channel_set_fd(ch, 2, ast_rtp_fd(pvt->vrtp));
- ast_channel_set_fd(ch, 3, ast_rtcp_fd(pvt->vrtp));
+ ast_channel_set_fd(ch, 2, ast_rtp_instance_fd(pvt->vrtp, 0));
+ ast_channel_set_fd(ch, 3, ast_rtp_instance_fd(pvt->vrtp, 1));
}
#endif
#ifdef T38_SUPPORT
@@ -1112,7 +1112,7 @@
}
if (!pvt->cd.call_token) {
ast_log(LOG_ERROR, "Not enough memory to alocate call token\n");
- ast_rtp_destroy(pvt->rtp);
+ ast_rtp_instance_destroy(pvt->rtp);
ast_free(pvt);
return NULL;
}
@@ -1912,7 +1912,7 @@
return NULL;
}
/* figure out our local RTP port and tell the H.323 stack about it */
- ast_rtp_get_us(pvt->rtp, &us);
+ ast_rtp_instance_get_local_address(pvt->rtp, &us);
ast_mutex_unlock(&pvt->lock);
ast_copy_string(info->addr, ast_inet_ntoa(us.sin_addr), sizeof(info->addr));
@@ -1931,7 +1931,6 @@
{
struct oh323_pvt *pvt;
struct sockaddr_in them;
- struct rtpPayloadType rtptype;
int nativeformats_changed;
enum { NEED_NONE, NEED_HOLD, NEED_UNHOLD } rtp_change = NEED_NONE;
@@ -1953,7 +1952,7 @@
__oh323_rtp_create(pvt);
if ((pt == 2) && (pvt->jointcapability & AST_FORMAT_G726_AAL2)) {
- ast_rtp_set_rtpmap_type(pvt->rtp, pt, "audio", "G726-32", AST_RTP_OPT_G726_NONSTANDARD);
+ ast_rtp_codecs_payloads_set_rtpmap_type(ast_rtp_instance_get_codecs(pvt->rtp), pvt->rtp, pt, "audio", "G726-32", AST_RTP_OPT_G726_NONSTANDARD);
}
them.sin_family = AF_INET;
@@ -1962,13 +1961,13 @@
them.sin_port = htons(remotePort);
if (them.sin_addr.s_addr) {
- ast_rtp_set_peer(pvt->rtp, &them);
+ ast_rtp_instance_set_remote_address(pvt->rtp, &them);
if (pvt->recvonly) {
pvt->recvonly = 0;
rtp_change = NEED_UNHOLD;
}
} else {
- ast_rtp_stop(pvt->rtp);
+ ast_rtp_instance_stop(pvt->rtp);
if (!pvt->recvonly) {
pvt->recvonly = 1;
rtp_change = NEED_HOLD;
@@ -1978,7 +1977,7 @@
/* Change native format to reflect information taken from OLC/OLCAck */
nativeformats_changed = 0;
if (pt != 128 && pvt->rtp) { /* Payload type is invalid, so try to use previously decided */
- rtptype = ast_rtp_lookup_pt(pvt->rtp, pt);
+ struct ast_rtp_payload_type rtptype = ast_rtp_codecs_payload_lookup(ast_rtp_instance_get_codecs(pvt->rtp), pt);
if (h323debug)
ast_debug(1, "Native format is set to %d from %d by RTP payload type %d\n", rtptype.code, pvt->nativeformats, pt);
if (pvt->nativeformats != rtptype.code) {
@@ -2359,7 +2358,7 @@
}
if (pvt->rtp) {
/* Immediately stop RTP */
- ast_rtp_destroy(pvt->rtp);
+ ast_rtp_instance_destroy(pvt->rtp);
pvt->rtp = NULL;
}
/* Free dsp used for in-band DTMF detection */
@@ -2421,7 +2420,7 @@
return;
}
if (pvt->rtp) {
- ast_rtp_set_rtpmap_type(pvt->rtp, payload, "audio", (is_cisco ? "cisco-telephone-event" : "telephone-event"), 0);
+ ast_rtp_codecs_payloads_set_rtpmap_type(ast_rtp_instance_get_codecs(pvt->rtp), pvt->rtp, payload, "audio", (is_cisco ? "cisco-telephone-event" : "telephone-event"), 0);
}
pvt->dtmf_pt[is_cisco ? 1 : 0] = payload;
ast_mutex_unlock(&pvt->lock);
@@ -2452,7 +2451,7 @@
}
}
if (pvt->rtp)
- ast_rtp_codec_setpref(pvt->rtp, &pvt->peer_prefs);
+ ast_rtp_codecs_packetization_set(ast_rtp_instance_get_codecs(pvt->rtp), pvt->rtp, &pvt->peer_prefs);
}
ast_mutex_unlock(&pvt->lock);
}
@@ -3113,29 +3112,24 @@
static struct ast_cli_entry cli_h323_reload =
AST_CLI_DEFINE(handle_cli_h323_reload, "Reload H.323 configuration");
-static enum ast_rtp_get_result oh323_get_rtp_peer(struct ast_channel *chan, struct ast_rtp **rtp)
+static enum ast_rtp_glue_result oh323_get_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance **instance)
{
struct oh323_pvt *pvt;
- enum ast_rtp_get_result res = AST_RTP_TRY_PARTIAL;
+ enum ast_rtp_glue_result res = AST_RTP_GLUE_RESULT_LOCAL;
if (!(pvt = (struct oh323_pvt *)chan->tech_pvt))
- return AST_RTP_GET_FAILED;
+ return AST_RTP_GLUE_RESULT_FORBID;
ast_mutex_lock(&pvt->lock);
- *rtp = pvt->rtp;
+ *instance = pvt->rtp ? ao2_ref(pvt->rtp, +1), pvt->rtp : NULL;
#if 0
if (pvt->options.bridge) {
- res = AST_RTP_TRY_NATIVE;
+ res = AST_RTP_GLUE_RESULT_REMOTE;
}
#endif
ast_mutex_unlock(&pvt->lock);
return res;
-}
-
-static enum ast_rtp_get_result oh323_get_vrtp_peer(struct ast_channel *chan, struct ast_rtp **rtp)
-{
- return AST_RTP_GET_FAILED;
}
static char *convertcap(int cap)
@@ -3165,7 +3159,7 @@
}
}
-static int oh323_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp, struct ast_rtp *vrtp, struct ast_rtp *trtp, int codecs, int nat_active)
+static int oh323_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance *rtp, struct ast_rtp_instance *vrtp, struct ast_rtp_instance *trtp, int codecs, int nat_active)
{
/* XXX Deal with Video */
struct oh323_pvt *pvt;
@@ -3183,19 +3177,18 @@
ast_log(LOG_ERROR, "No Private Structure, this is bad\n");
return -1;
}
- ast_rtp_get_peer(rtp, &them);
- ast_rtp_get_us(rtp, &us);
+ ast_rtp_instance_get_remote_address(rtp, &them);
+ ast_rtp_instance_get_local_address(rtp, &us);
#if 0 /* Native bridge still isn't ready */
h323_native_bridge(pvt->cd.call_token, ast_inet_ntoa(them.sin_addr), mode);
#endif
return 0;
}
-static struct ast_rtp_protocol oh323_rtp = {
+static struct ast_rtp_glue oh323_rtp_glue = {
.type = "H323",
.get_rtp_info = oh323_get_rtp_peer,
- .get_vrtp_info = oh323_get_vrtp_peer,
- .set_rtp_peer = oh323_set_rtp_peer,
+ .update_peer = oh323_set_rtp_peer,
};
static enum ast_module_load_result load_module(void)
@@ -3250,7 +3243,7 @@
}
ast_cli_register_multiple(cli_h323, sizeof(cli_h323) / sizeof(struct ast_cli_entry));
- ast_rtp_proto_register(&oh323_rtp);
+ ast_rtp_glue_register(&oh323_rtp_glue);
/* Register our callback functions */
h323_callback_register(setup_incoming_call,
@@ -3271,7 +3264,7 @@
/* start the h.323 listener */
if (h323_start_listener(h323_signalling_port, bindaddr)) {
ast_log(LOG_ERROR, "Unable to create H323 listener.\n");
- ast_rtp_proto_unregister(&oh323_rtp);
+ ast_rtp_glue_unregister(&oh323_rtp_glue);
ast_cli_unregister_multiple(cli_h323, sizeof(cli_h323) / sizeof(struct ast_cli_entry));
ast_cli_unregister(&cli_h323_reload);
h323_end_process();
@@ -3310,7 +3303,7 @@
ast_cli_unregister(&cli_h323_reload);
ast_channel_unregister(&oh323_tech);
- ast_rtp_proto_unregister(&oh323_rtp);
+ ast_rtp_glue_unregister(&oh323_rtp_glue);
if (!ast_mutex_lock(&iflock)) {
/* hangup all interfaces if they have an owner */
Modified: trunk/channels/chan_jingle.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/channels/chan_jingle.c?view=diff&rev=186078&r1=186077&r2=186078
==============================================================================
--- trunk/channels/chan_jingle.c (original)
+++ trunk/channels/chan_jingle.c Thu Apr 2 12:20:52 2009
@@ -53,7 +53,7 @@
#include "asterisk/pbx.h"
#include "asterisk/sched.h"
#include "asterisk/io.h"
-#include "asterisk/rtp.h"
+#include "asterisk/rtp_engine.h"
#include "asterisk/acl.h"
#include "asterisk/callerid.h"
#include "asterisk/file.h"
@@ -112,9 +112,9 @@
char exten[80]; /*!< Called extension */
struct ast_channel *owner; /*!< Master Channel */
char audio_content_name[100]; /*!< name attribute of content tag */
- struct ast_rtp *rtp; /*!< RTP audio session */
+ struct ast_rtp_instance *rtp; /*!< RTP audio session */
char video_content_name[100]; /*!< name attribute of content tag */
- struct ast_rtp *vrtp; /*!< RTP video session */
+ struct ast_rtp_instance *vrtp; /*!< RTP video session */
int jointcapability; /*!< Supported capability at both ends (codecs ) */
int peercapability;
struct jingle_pvt *next; /* Next entity */
@@ -183,11 +183,6 @@
static struct jingle_pvt *jingle_alloc(struct jingle *client, const char *from, const char *sid);
static char *jingle_show_channels(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *jingle_do_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
-/*----- RTP interface functions */
-static int jingle_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp,
- struct ast_rtp *vrtp, struct ast_rtp *tpeer, int codecs, int nat_active);
-static enum ast_rtp_get_result jingle_get_rtp_peer(struct ast_channel *chan, struct ast_rtp **rtp);
-static int jingle_get_codec(struct ast_channel *chan);
/*! \brief PBX interface structure for channel registration */
static const struct ast_channel_tech jingle_tech = {
@@ -197,7 +192,7 @@
.requester = jingle_request,
.send_digit_begin = jingle_digit_begin,
.send_digit_end = jingle_digit_end,
- .bridge = ast_rtp_bridge,
+ .bridge = ast_rtp_instance_bridge,
.call = jingle_call,
.hangup = jingle_hangup,
.answer = jingle_answer,
@@ -216,15 +211,6 @@
static struct io_context *io; /*!< The IO context */
static struct in_addr __ourip;
-
-/*! \brief RTP driver interface */
-static struct ast_rtp_protocol jingle_rtp = {
- type: "Jingle",
- get_rtp_info: jingle_get_rtp_peer,
- set_rtp_peer: jingle_set_rtp_peer,
- get_codec: jingle_get_codec,
-};
-
static struct ast_cli_entry jingle_cli[] = {
AST_CLI_DEFINE(jingle_do_reload, "Reload Jingle configuration"),
AST_CLI_DEFINE(jingle_show_channels, "Show Jingle channels"),
@@ -304,7 +290,6 @@
iks_insert_attrib(payload_g723, "name", "G723");
iks_insert_node(dcodecs, payload_g723);
}
- ast_rtp_lookup_code(p->rtp, 1, codec);
}
static int jingle_accept_call(struct jingle *client, struct jingle_pvt *p)
@@ -398,18 +383,19 @@
return res;
}
-static enum ast_rtp_get_result jingle_get_rtp_peer(struct ast_channel *chan, struct ast_rtp **rtp)
+static enum ast_rtp_glue_result jingle_get_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance **instance)
{
struct jingle_pvt *p = chan->tech_pvt;
- enum ast_rtp_get_result res = AST_RTP_GET_FAILED;
+ enum ast_rtp_glue_result res = AST_RTP_GLUE_RESULT_FORBID;
if (!p)
return res;
ast_mutex_lock(&p->lock);
if (p->rtp) {
- *rtp = p->rtp;
- res = AST_RTP_TRY_PARTIAL;
+ ao2_ref(p->rtp, +1);
+ *instance = p->rtp;
+ res = AST_RTP_GLUE_RESULT_LOCAL;
}
ast_mutex_unlock(&p->lock);
@@ -422,7 +408,7 @@
return p->peercapability;
}
-static int jingle_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp, struct ast_rtp *vrtp, struct ast_rtp *tpeer, int codecs, int nat_active)
+static int jingle_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance *rtp, struct ast_rtp_instance *vrtp, struct ast_rtp_instance *tpeer, int codecs, int nat_active)
{
struct jingle_pvt *p;
@@ -441,6 +427,13 @@
ast_mutex_unlock(&p->lock);
return 0;
}
+
+static struct ast_rtp_glue jingle_rtp_glue = {
+ .type = "Jingle",
+ .get_rtp_info = jingle_get_rtp_peer,
+ .get_codec = jingle_get_codec,
+ .update_peer = jingle_set_rtp_peer,
+};
static int jingle_response(struct jingle *client, ikspak *pak, const char *reasonstr, const char *reasonstr2)
{
@@ -621,7 +614,7 @@
goto safeout;
}
- ast_rtp_get_us(p->rtp, &sin);
+ ast_rtp_instance_get_local_address(p->rtp, &sin);
ast_find_ourip(&us, bindaddr);
/* Setup our first jingle candidate */
@@ -779,7 +772,7 @@
ast_copy_string(tmp->them, idroster, sizeof(tmp->them));
tmp->initiator = 1;
}
- tmp->rtp = ast_rtp_new_with_bindaddr(sched, io, 1, 0, bindaddr.sin_addr);
+ tmp->rtp = ast_rtp_instance_new(NULL, sched, &bindaddr, NULL);
tmp->parent = client;
if (!tmp->rtp) {
ast_log(LOG_WARNING, "Out of RTP sessions?\n");
@@ -825,18 +818,18 @@
/* Set Frame packetization */
if (i->rtp)
- ast_rtp_codec_setpref(i->rtp, &i->prefs);
+ ast_rtp_codecs_packetization_set(ast_rtp_instance_get_codecs(i->rtp), i->rtp, &i->prefs);
tmp->nativeformats = ast_codec_choose(&i->prefs, what, 1) | (i->jointcapability & AST_FORMAT_VIDEO_MASK);
fmt = ast_best_codec(tmp->nativeformats);
if (i->rtp) {
- ast_channel_set_fd(tmp, 0, ast_rtp_fd(i->rtp));
- ast_channel_set_fd(tmp, 1, ast_rtcp_fd(i->rtp));
+ ast_channel_set_fd(tmp, 0, ast_rtp_instance_fd(i->rtp, 0));
+ ast_channel_set_fd(tmp, 1, ast_rtp_instance_fd(i->rtp, 1));
}
if (i->vrtp) {
- ast_channel_set_fd(tmp, 2, ast_rtp_fd(i->vrtp));
- ast_channel_set_fd(tmp, 3, ast_rtcp_fd(i->vrtp));
+ ast_channel_set_fd(tmp, 2, ast_rtp_instance_fd(i->vrtp, 0));
+ ast_channel_set_fd(tmp, 3, ast_rtp_instance_fd(i->vrtp, 1));
}
if (state == AST_STATE_RING)
tmp->rings = 1;
@@ -942,9 +935,9 @@
if (p->owner)
ast_log(LOG_WARNING, "Uh oh, there's an owner, this is going to be messy.\n");
if (p->rtp)
- ast_rtp_destroy(p->rtp);
+ ast_rtp_instance_destroy(p->rtp);
if (p->vrtp)
- ast_rtp_destroy(p->vrtp);
+ ast_rtp_instance_destroy(p->vrtp);
jingle_free_candidates(p->theircandidates);
ast_free(p);
}
@@ -1009,8 +1002,8 @@
ast_copy_string(p->audio_content_name, iks_find_attrib(content, "name"), sizeof(p->audio_content_name));
while (codec) {
- ast_rtp_set_m_type(p->rtp, atoi(iks_find_attrib(codec, "id")));
- ast_rtp_set_rtpmap_type(p->rtp, atoi(iks_find_attrib(codec, "id")), "audio", iks_find_attrib(codec, "name"), 0);
+ ast_rtp_codecs_payloads_set_m_type(ast_rtp_instance_get_codecs(p->rtp), p->rtp, atoi(iks_find_attrib(codec, "id")));
+ ast_rtp_codecs_payloads_set_rtpmap_type(ast_rtp_instance_get_codecs(p->rtp), p->rtp, atoi(iks_find_attrib(codec, "id")), "audio", iks_find_attrib(codec, "name"), 0);
codec = iks_next(codec);
}
}
@@ -1025,8 +1018,8 @@
ast_copy_string(p->video_content_name, iks_find_attrib(content, "name"), sizeof(p->video_content_name));
while (codec) {
- ast_rtp_set_m_type(p->rtp, atoi(iks_find_attrib(codec, "id")));
- ast_rtp_set_rtpmap_type(p->rtp, atoi(iks_find_attrib(codec, "id")), "audio", iks_find_attrib(codec, "name"), 0);
+ ast_rtp_codecs_payloads_set_m_type(ast_rtp_instance_get_codecs(p->rtp), p->rtp, atoi(iks_find_attrib(codec, "id")));
+ ast_rtp_codecs_payloads_set_rtpmap_type(ast_rtp_instance_get_codecs(p->rtp), p->rtp, atoi(iks_find_attrib(codec, "id")), "audio", iks_find_attrib(codec, "name"), 0);
codec = iks_next(codec);
}
}
@@ -1079,7 +1072,7 @@
sin.sin_port = htons(tmp->port);
snprintf(username, sizeof(username), "%s:%s", tmp->ufrag, p->ourcandidates->ufrag);
- ast_rtp_stun_request(p->rtp, &sin, username);
+ ast_rtp_instance_stun_request(p->rtp, &sin, username);
tmp = tmp->next;
}
return 1;
@@ -1169,7 +1162,7 @@
if (!p->rtp)
return &ast_null_frame;
- f = ast_rtp_read(p->rtp);
+ f = ast_rtp_instance_read(p->rtp, 0);
jingle_update_stun(p->parent, p);
if (p->owner) {
/* We already hold the channel lock */
@@ -1220,7 +1213,7 @@
if (p) {
ast_mutex_lock(&p->lock);
if (p->rtp) {
- res = ast_rtp_write(p->rtp, frame);
+ res = ast_rtp_instance_write(p->rtp, frame);
}
ast_mutex_unlock(&p->lock);
}
@@ -1229,7 +1222,7 @@
if (p) {
ast_mutex_lock(&p->lock);
if (p->vrtp) {
- res = ast_rtp_write(p->vrtp, frame);
+ res = ast_rtp_instance_write(p->vrtp, frame);
}
ast_mutex_unlock(&p->lock);
}
@@ -1879,7 +1872,7 @@
return 0;
}
- ast_rtp_proto_register(&jingle_rtp);
+ ast_rtp_glue_register(&jingle_rtp_glue);
ast_cli_register_multiple(jingle_cli, ARRAY_LEN(jingle_cli));
/* Make sure we can register our channel type */
if (ast_channel_register(&jingle_tech)) {
@@ -1902,7 +1895,7 @@
ast_cli_unregister_multiple(jingle_cli, ARRAY_LEN(jingle_cli));
/* First, take us out of the channel loop */
ast_channel_unregister(&jingle_tech);
- ast_rtp_proto_unregister(&jingle_rtp);
+ ast_rtp_glue_unregister(&jingle_rtp_glue);
if (!ast_mutex_lock(&jinglelock)) {
/* Hangup all interfaces if they have an owner */
Modified: trunk/channels/chan_local.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/channels/chan_local.c?view=diff&rev=186078&r1=186077&r2=186078
==============================================================================
--- trunk/channels/chan_local.c (original)
+++ trunk/channels/chan_local.c Thu Apr 2 12:20:52 2009
@@ -39,7 +39,6 @@
#include "asterisk/pbx.h"
#include "asterisk/sched.h"
#include "asterisk/io.h"
-#include "asterisk/rtp.h"
#include "asterisk/acl.h"
#include "asterisk/callerid.h"
#include "asterisk/file.h"
Modified: trunk/channels/chan_mgcp.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/channels/chan_mgcp.c?view=diff&rev=186078&r1=186077&r2=186078
==============================================================================
--- trunk/channels/chan_mgcp.c (original)
+++ trunk/channels/chan_mgcp.c Thu Apr 2 12:20:52 2009
@@ -52,7 +52,7 @@
#include "asterisk/pbx.h"
#include "asterisk/sched.h"
#include "asterisk/io.h"
-#include "asterisk/rtp.h"
+#include "asterisk/rtp_engine.h"
#include "asterisk/acl.h"
#include "asterisk/callerid.h"
#include "asterisk/cli.h"
@@ -282,7 +282,7 @@
int id;
struct ast_channel *owner;
struct mgcp_endpoint *parent;
- struct ast_rtp *rtp;
+ struct ast_rtp_instance *rtp;
struct sockaddr_in tmpdest;
char txident[80]; /*! \todo FIXME txident is replaced by rqnt_ident in endpoint.
This should be obsoleted */
@@ -408,7 +408,7 @@
static int transmit_notify_request(struct mgcp_subchannel *sub, char *tone);
static int transmit_modify_request(struct mgcp_subchannel *sub);
static int transmit_notify_request_with_callerid(struct mgcp_subchannel *sub, char *tone, char *callernum, char *callername);
-static int transmit_modify_with_sdp(struct mgcp_subchannel *sub, struct ast_rtp *rtp, int codecs);
+static int transmit_modify_with_sdp(struct mgcp_subchannel *sub, struct ast_rtp_instance *rtp, int codecs);
static int transmit_connection_del(struct mgcp_subchannel *sub);
static int transmit_audit_endpoint(struct mgcp_endpoint *p);
static void start_rtp(struct mgcp_subchannel *sub);
@@ -447,7 +447,7 @@
.fixup = mgcp_fixup,
.send_digit_begin = mgcp_senddigit_begin,
.send_digit_end = mgcp_senddigit_end,
- .bridge = ast_rtp_bridge,
[... 2892 lines stripped ...]
More information about the asterisk-commits
mailing list