[asterisk-commits] may: branch 1.8 r308242 - /branches/1.8/addons/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Feb 17 18:07:24 CST 2011
Author: may
Date: Thu Feb 17 18:07:20 2011
New Revision: 308242
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=308242
Log:
added g729onlyA option for announce only AnnexA g.729 codec in
h.323 capabilities. Option can be global or per user/peer.
Modified:
branches/1.8/addons/chan_ooh323.c
branches/1.8/addons/ooh323cDriver.c
branches/1.8/addons/ooh323cDriver.h
Modified: branches/1.8/addons/chan_ooh323.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/addons/chan_ooh323.c?view=diff&rev=308242&r1=308241&r2=308242
==============================================================================
--- branches/1.8/addons/chan_ooh323.c (original)
+++ branches/1.8/addons/chan_ooh323.c Thu Feb 17 18:07:20 2011
@@ -185,6 +185,7 @@
int amaflags;
int progsent; /* progress is sent */
int alertsent; /* alerting is sent */
+ int g729onlyA; /* G.729 only A */
struct ast_dsp *vad;
struct OOH323Regex *rtpmask; /* rtp ip regexp */
char rtpmaskstr[120];
@@ -217,6 +218,7 @@
char rtpmaskstr[120];
int rtdrcount, rtdrinterval;
int faststart, h245tunneling;
+ int g729onlyA;
struct ooh323_user *next;
};
@@ -245,6 +247,7 @@
char rtpmaskstr[120];
int rtdrcount,rtdrinterval;
int faststart, h245tunneling;
+ int g729onlyA;
struct ooh323_peer *next;
};
@@ -302,6 +305,7 @@
static int gMediaWaitForConnect = 0;
static int gTOS = 0;
static int gRTPTimeout = 60;
+static int g729onlyA = 0;
static char gAccountcode[80] = DEFAULT_H323ACCNT;
static int gAMAFLAGS;
static char gContext[AST_MAX_EXTENSION] = DEFAULT_CONTEXT;
@@ -515,6 +519,7 @@
pvt->rtptimeout = gRTPTimeout;
pvt->rtdrinterval = gRTDRInterval;
pvt->rtdrcount = gRTDRCount;
+ pvt->g729onlyA = g729onlyA;
pvt->call_reference = callref;
if (callToken)
@@ -636,6 +641,7 @@
p->capability = peer->capability;
memcpy(&p->prefs, &peer->prefs, sizeof(struct ast_codec_pref));
+ p->g729onlyA = peer->g729onlyA;
p->dtmfmode |= peer->dtmfmode;
p->dtmfcodec = peer->dtmfcodec;
p->t38support = peer->t38support;
@@ -664,6 +670,7 @@
ast_mutex_unlock(&iflock);
return NULL;
}
+ p->g729onlyA = g729onlyA;
p->dtmfmode = gDTMFMode;
p->dtmfcodec = gDTMFCodec;
p->t38support = gT38Support;
@@ -1765,6 +1772,7 @@
ast_copy_string(p->accountcode, user->accountcode, sizeof(p->accountcode));
p->amaflags = user->amaflags;
p->capability = user->capability;
+ p->g729onlyA = user->g729onlyA;
memcpy(&p->prefs, &user->prefs, sizeof(struct ast_codec_pref));
p->dtmfmode |= user->dtmfmode;
p->dtmfcodec = user->dtmfcodec;
@@ -1777,9 +1785,11 @@
OO_SETFLAG(call->flags, OO_M_FASTSTART);
else
OO_CLRFLAG(call->flags, OO_M_FASTSTART);
- if (p->h245tunneling)
- OO_SETFLAG(call->flags, OO_M_TUNNELING);
- else
+ /* if we disable h245tun for this user then we clear flag */
+ /* in any other case we don't must touch this */
+ /* ie if we receive setup without h245tun but enabled
+ we can't enable it per call */
+ if (!p->h245tunneling)
OO_CLRFLAG(call->flags, OO_M_TUNNELING);
if (user->rtpmask && user->rtpmaskstr[0]) {
@@ -1809,7 +1819,7 @@
}
ooh323c_set_capability_for_call(call, &p->prefs, p->capability, p->dtmfmode, p->dtmfcodec,
- p->t38support);
+ p->t38support, p->g729onlyA);
configure_local_rtp(p, call);
/* Incoming call */
@@ -1976,7 +1986,7 @@
}
ooh323c_set_capability_for_call(call, &p->prefs, p->capability,
- p->dtmfmode, p->dtmfcodec, p->t38support);
+ p->dtmfmode, p->dtmfcodec, p->t38support, p->g729onlyA);
configure_local_rtp(p, call);
ast_mutex_unlock(&p->lock);
@@ -2191,6 +2201,7 @@
user->t38support = gT38Support;
user->faststart = gFastStart;
user->h245tunneling = gTunneling;
+ user->g729onlyA = g729onlyA;
/* set default context */
ast_copy_string(user->context, gContext, sizeof(user->context));
ast_copy_string(user->accountcode, gAccountcode, sizeof(user->accountcode));
@@ -2212,6 +2223,8 @@
user->faststart = ast_true(v->value);
} else if (!strcasecmp(v->name, "h245tunneling")) {
user->h245tunneling = ast_true(v->value);
+ } else if (!strcasecmp(v->name, "g729onlyA")) {
+ user->g729onlyA = ast_true(v->value);
} else if (!strcasecmp(v->name, "rtptimeout")) {
user->rtptimeout = atoi(v->value);
if (user->rtptimeout < 0)
@@ -2302,6 +2315,7 @@
peer->t38support = gT38Support;
peer->faststart = gFastStart;
peer->h245tunneling = gTunneling;
+ peer->g729onlyA = g729onlyA;
peer->port = 1720;
if (0 == friend_type) {
peer->mFriend = 1;
@@ -2352,6 +2366,8 @@
peer->faststart = ast_true(v->value);
} else if (!strcasecmp(v->name, "h245tunneling")) {
peer->h245tunneling = ast_true(v->value);
+ } else if (!strcasecmp(v->name, "g729onlyA")) {
+ peer->g729onlyA = ast_true(v->value);
} else if (!strcasecmp(v->name, "rtptimeout")) {
peer->rtptimeout = atoi(v->value);
if(peer->rtptimeout < 0)
@@ -2581,6 +2597,8 @@
ooH323EpEnableH245Tunneling();
else
ooH323EpDisableH245Tunneling();
+ } else if (!strcasecmp(v->name, "g729onlyA")) {
+ g729onlyA = ast_true(v->value);
} else if (!strcasecmp(v->name, "roundtrip")) {
sscanf(v->value, "%d,%d", &gRTDRCount, &gRTDRInterval);
} else if (!strcasecmp(v->name, "trybemaster")) {
Modified: branches/1.8/addons/ooh323cDriver.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/addons/ooh323cDriver.c?view=diff&rev=308242&r1=308241&r2=308242
==============================================================================
--- branches/1.8/addons/ooh323cDriver.c (original)
+++ branches/1.8/addons/ooh323cDriver.c Thu Feb 17 18:07:20 2011
@@ -385,7 +385,7 @@
int ooh323c_set_capability_for_call
(ooCallData *call, struct ast_codec_pref *prefs, int capability, int dtmf, int dtmfcodec,
- int t38support)
+ int t38support, int g729onlyA)
{
int ret = 0, x, txframes;
int format=0;
@@ -471,17 +471,19 @@
txframes = (prefs->framing[x])/10;
if(gH323Debug)
+ ast_verbose("\tAdding g729A capability to call(%s, %s)\n",
+ call->callType, call->callToken);
+ ret= ooCallAddG729Capability(call, OO_G729A, txframes, txframes,
+ OORXANDTX, &ooh323c_start_receive_channel,
+ &ooh323c_start_transmit_channel,
+ &ooh323c_stop_receive_channel,
+ &ooh323c_stop_transmit_channel);
+ if (g729onlyA)
+ continue;
+ if(gH323Debug)
ast_verbose("\tAdding g729 capability to call(%s, %s)\n",
call->callType, call->callToken);
ret|= ooCallAddG729Capability(call, OO_G729, txframes, txframes,
- OORXANDTX, &ooh323c_start_receive_channel,
- &ooh323c_start_transmit_channel,
- &ooh323c_stop_receive_channel,
- &ooh323c_stop_transmit_channel);
- if(gH323Debug)
- ast_verbose("\tAdding g729A capability to call(%s, %s)\n",
- call->callType, call->callToken);
- ret= ooCallAddG729Capability(call, OO_G729A, txframes, txframes,
OORXANDTX, &ooh323c_start_receive_channel,
&ooh323c_start_transmit_channel,
&ooh323c_stop_receive_channel,
Modified: branches/1.8/addons/ooh323cDriver.h
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/addons/ooh323cDriver.h?view=diff&rev=308242&r1=308241&r2=308242
==============================================================================
--- branches/1.8/addons/ooh323cDriver.h (original)
+++ branches/1.8/addons/ooh323cDriver.h Thu Feb 17 18:07:20 2011
@@ -41,5 +41,5 @@
format_t convertH323CapToAsteriskCap(int cap);
int ooh323c_set_capability_for_call
(ooCallData *call, struct ast_codec_pref *prefs, int capability, int dtmf, int dtmfcodec,
- int t38support);
+ int t38support, int g729onlyA);
#endif
More information about the asterisk-commits
mailing list