summaryrefslogtreecommitdiff
path: root/addons/ooh323cDriver.c
diff options
context:
space:
mode:
Diffstat (limited to 'addons/ooh323cDriver.c')
-rw-r--r--addons/ooh323cDriver.c159
1 files changed, 59 insertions, 100 deletions
diff --git a/addons/ooh323cDriver.c b/addons/ooh323cDriver.c
index dd127a499..bceb07745 100644
--- a/addons/ooh323cDriver.c
+++ b/addons/ooh323cDriver.c
@@ -225,17 +225,17 @@ int ooh323c_stop_stack_thread(void)
}
int ooh323c_set_capability
- (struct ast_codec_pref *prefs, struct ast_format_cap *cap, int dtmf, int dtmfcodec)
+ (struct ast_format_cap *cap, int dtmf, int dtmfcodec)
{
int ret = 0, x;
- struct ast_format tmpfmt;
if (gH323Debug) {
ast_verb(0, "\tAdding capabilities to H323 endpoint\n");
}
- for(x=0; ast_codec_pref_index(prefs, x, &tmpfmt); x++)
+ for(x=0; x<ast_format_cap_count(cap); x++)
{
- if(tmpfmt.id == AST_FORMAT_ULAW)
+ struct ast_format *format = ast_format_cap_get_format(cap, x);
+ if(ast_format_cmp(format, ast_format_ulaw) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding g711 ulaw capability to H323 endpoint\n");
@@ -246,7 +246,7 @@ int ooh323c_set_capability
&ooh323c_stop_receive_channel,
&ooh323c_stop_transmit_channel);
}
- if(tmpfmt.id == AST_FORMAT_ALAW)
+ if(ast_format_cmp(format, ast_format_alaw) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding g711 alaw capability to H323 endpoint\n");
@@ -258,7 +258,7 @@ int ooh323c_set_capability
&ooh323c_stop_transmit_channel);
}
- if(tmpfmt.id == AST_FORMAT_G729A)
+ if(ast_format_cmp(format, ast_format_g729) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding g729A capability to H323 endpoint\n");
@@ -287,7 +287,7 @@ int ooh323c_set_capability
&ooh323c_stop_transmit_channel);
}
- if(tmpfmt.id == AST_FORMAT_G723_1)
+ if(ast_format_cmp(format, ast_format_g723) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding g7231 capability to H323 endpoint\n");
@@ -300,7 +300,7 @@ int ooh323c_set_capability
}
- if(tmpfmt.id == AST_FORMAT_G726)
+ if(ast_format_cmp(format, ast_format_g726) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding g726 capability to H323 endpoint\n");
@@ -313,7 +313,7 @@ int ooh323c_set_capability
}
- if(tmpfmt.id == AST_FORMAT_G726_AAL2)
+ if(ast_format_cmp(format, ast_format_g726_aal2) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding g726aal2 capability to H323 endpoint\n");
@@ -326,7 +326,7 @@ int ooh323c_set_capability
}
- if(tmpfmt.id == AST_FORMAT_H263)
+ if(ast_format_cmp(format, ast_format_h263) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding h263 capability to H323 endpoint\n");
@@ -339,7 +339,7 @@ int ooh323c_set_capability
}
- if(tmpfmt.id == AST_FORMAT_GSM)
+ if(ast_format_cmp(format, ast_format_gsm) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding gsm capability to H323 endpoint\n");
@@ -351,24 +351,8 @@ int ooh323c_set_capability
&ooh323c_stop_transmit_channel);
}
-
-#ifdef AST_FORMAT_AMRNB
- if(tmpfmt.id == AST_FORMAT_AMRNB)
- {
- if (gH323Debug) {
- ast_verb(0, "\tAdding amr nb capability to H323 endpoint\n");
- }
- ret = ooH323EpAddAMRNBCapability(OO_AMRNB, 4, 4, FALSE,
- OORXANDTX, &ooh323c_start_receive_channel,
- &ooh323c_start_transmit_channel,
- &ooh323c_stop_receive_channel,
- &ooh323c_stop_transmit_channel);
-
- }
-#endif
-#ifdef AST_FORMAT_SPEEX
- if(tmpfmt.id == AST_FORMAT_SPEEX)
+ if(ast_format_cmp(format, ast_format_speex) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding speex capability to H323 endpoint\n");
@@ -380,8 +364,8 @@ int ooh323c_set_capability
&ooh323c_stop_transmit_channel);
}
-#endif
-
+
+ ao2_ref(format, -1);
}
if(dtmf & H323_DTMF_CISCO)
@@ -397,11 +381,10 @@ int ooh323c_set_capability
}
int ooh323c_set_capability_for_call
- (ooCallData *call, struct ast_codec_pref *prefs, struct ast_format_cap *cap, int dtmf, int dtmfcodec,
+ (ooCallData *call, struct ast_format_cap *cap, int dtmf, int dtmfcodec,
int t38support, int g729onlyA)
{
int ret = 0, x, txframes;
- struct ast_format tmpfmt;
if (gH323Debug) {
ast_verb(0, "\tAdding capabilities to call(%s, %s)\n", call->callType,
call->callToken);
@@ -423,15 +406,16 @@ int ooh323c_set_capability_for_call
&ooh323c_stop_transmit_datachannel,
0);
- for(x=0; ast_codec_pref_index(prefs, x, &tmpfmt); x++)
+ for(x=0; x<ast_format_cap_count(cap); x++)
{
- if(tmpfmt.id == AST_FORMAT_ULAW)
+ struct ast_format *format = ast_format_cap_get_format(cap, x);
+ if(ast_format_cmp(format, ast_format_ulaw) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding g711 ulaw capability to call(%s, %s)\n",
call->callType, call->callToken);
}
- txframes = prefs->framing[x];
+ txframes = ast_format_cap_get_format_framing(cap, format);
ret= ooCallAddG711Capability(call, OO_G711ULAW64K, txframes,
txframes, OORXANDTX,
&ooh323c_start_receive_channel,
@@ -439,13 +423,13 @@ int ooh323c_set_capability_for_call
&ooh323c_stop_receive_channel,
&ooh323c_stop_transmit_channel);
}
- if(tmpfmt.id == AST_FORMAT_ALAW)
+ if(ast_format_cmp(format, ast_format_alaw) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding g711 alaw capability to call(%s, %s)\n",
call->callType, call->callToken);
}
- txframes = prefs->framing[x];
+ txframes = ast_format_cap_get_format_framing(cap, format);
ret= ooCallAddG711Capability(call, OO_G711ALAW64K, txframes,
txframes, OORXANDTX,
&ooh323c_start_receive_channel,
@@ -454,13 +438,13 @@ int ooh323c_set_capability_for_call
&ooh323c_stop_transmit_channel);
}
- if(tmpfmt.id == AST_FORMAT_G726)
+ if(ast_format_cmp(format, ast_format_g726) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding g726 capability to call (%s, %s)\n",
call->callType, call->callToken);
}
- txframes = prefs->framing[x];
+ txframes = ast_format_cap_get_format_framing(cap, format);
ret = ooCallAddG726Capability(call, OO_G726, txframes, grxframes, FALSE,
OORXANDTX, &ooh323c_start_receive_channel,
&ooh323c_start_transmit_channel,
@@ -469,13 +453,13 @@ int ooh323c_set_capability_for_call
}
- if(tmpfmt.id == AST_FORMAT_G726_AAL2)
+ if(ast_format_cmp(format, ast_format_g726_aal2) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding g726aal2 capability to call (%s, %s)\n",
call->callType, call->callToken);
}
- txframes = prefs->framing[x];
+ txframes = ast_format_cap_get_format_framing(cap, format);
ret = ooCallAddG726Capability(call, OO_G726AAL2, txframes, grxframes, FALSE,
OORXANDTX, &ooh323c_start_receive_channel,
&ooh323c_start_transmit_channel,
@@ -484,10 +468,10 @@ int ooh323c_set_capability_for_call
}
- if(tmpfmt.id == AST_FORMAT_G729A)
+ if(ast_format_cmp(format, ast_format_g729) == AST_FORMAT_CMP_EQUAL)
{
- txframes = (prefs->framing[x])/10;
+ txframes = (ast_format_cap_get_format_framing(cap, format))/10;
if (gH323Debug) {
ast_verb(0, "\tAdding g729A capability to call(%s, %s)\n",
call->callType, call->callToken);
@@ -520,7 +504,7 @@ int ooh323c_set_capability_for_call
}
- if(tmpfmt.id == AST_FORMAT_G723_1)
+ if(ast_format_cmp(format, ast_format_g723) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding g7231 capability to call (%s, %s)\n",
@@ -534,7 +518,7 @@ int ooh323c_set_capability_for_call
}
- if(tmpfmt.id == AST_FORMAT_H263)
+ if(ast_format_cmp(format, ast_format_h263) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding h263 capability to call (%s, %s)\n",
@@ -548,7 +532,7 @@ int ooh323c_set_capability_for_call
}
- if(tmpfmt.id == AST_FORMAT_GSM)
+ if(ast_format_cmp(format, ast_format_gsm) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding gsm capability to call(%s, %s)\n",
@@ -561,22 +545,7 @@ int ooh323c_set_capability_for_call
&ooh323c_stop_transmit_channel);
}
-#ifdef AST_FORMAT_AMRNB
- if(tmpfmt.id == AST_FORMAT_AMRNB)
- {
- if (gH323Debug) {
- ast_verb(0, "\tAdding AMR capability to call(%s, %s)\n",
- call->callType, call->callToken);
- }
- ret = ooCallAddAMRNBCapability(call, OO_AMRNB, 4, 4, FALSE,
- OORXANDTX, &ooh323c_start_receive_channel,
- &ooh323c_start_transmit_channel,
- &ooh323c_stop_receive_channel,
- &ooh323c_stop_transmit_channel);
- }
-#endif
-#ifdef AST_FORMAT_SPEEX
- if(tmpfmt.id == AST_FORMAT_SPEEX)
+ if(ast_format_cmp(format, ast_format_speex) == AST_FORMAT_CMP_EQUAL)
{
if (gH323Debug) {
ast_verb(0, "\tAdding Speex capability to call(%s, %s)\n",
@@ -588,7 +557,8 @@ int ooh323c_set_capability_for_call
&ooh323c_stop_receive_channel,
&ooh323c_stop_transmit_channel);
}
-#endif
+
+ ao2_ref(format, -1);
}
return ret;
}
@@ -622,9 +592,9 @@ int ooh323c_set_aliases(ooAliases * aliases)
int ooh323c_start_receive_channel(ooCallData *call, ooLogicalChannel *pChannel)
{
- struct ast_format tmpfmt;
- convertH323CapToAsteriskCap(pChannel->chanCap->cap, &tmpfmt);
- if(tmpfmt.id) {
+ struct ast_format *tmpfmt = NULL;
+ tmpfmt = convertH323CapToAsteriskCap(pChannel->chanCap->cap);
+ if(tmpfmt) {
/* ooh323_set_read_format(call, fmt); */
}else{
ast_log(LOG_ERROR, "Invalid capability type for receive channel %s\n",
@@ -636,19 +606,17 @@ int ooh323c_start_receive_channel(ooCallData *call, ooLogicalChannel *pChannel)
int ooh323c_start_transmit_channel(ooCallData *call, ooLogicalChannel *pChannel)
{
- struct ast_format tmpfmt;
- convertH323CapToAsteriskCap(pChannel->chanCap->cap, &tmpfmt);
- if(tmpfmt.id) {
- switch (tmpfmt.id) {
- case AST_FORMAT_ALAW:
- case AST_FORMAT_ULAW:
- ooh323_set_write_format(call, &tmpfmt, ((OOCapParams *)(pChannel->chanCap->params))->txframes);
- break;
- case AST_FORMAT_G729A:
- ooh323_set_write_format(call, &tmpfmt, ((OOCapParams *)(pChannel->chanCap->params))->txframes*10);
- break;
- default:
- ooh323_set_write_format(call, &tmpfmt, 0);
+ struct ast_format *tmpfmt = NULL;
+ tmpfmt = convertH323CapToAsteriskCap(pChannel->chanCap->cap);
+
+ if (tmpfmt) {
+ if ((ast_format_cmp(tmpfmt, ast_format_alaw) == AST_FORMAT_CMP_EQUAL) ||
+ (ast_format_cmp(tmpfmt, ast_format_ulaw) == AST_FORMAT_CMP_EQUAL)) {
+ ooh323_set_write_format(call, tmpfmt, ((OOCapParams *)(pChannel->chanCap->params))->txframes);
+ } else if (ast_format_cmp(tmpfmt, ast_format_g729) == AST_FORMAT_CMP_EQUAL) {
+ ooh323_set_write_format(call, tmpfmt, ((OOCapParams *)(pChannel->chanCap->params))->txframes*10);
+ } else {
+ ooh323_set_write_format(call, tmpfmt, 0);
}
}else{
ast_log(LOG_ERROR, "Invalid capability type for receive channel %s\n",
@@ -693,41 +661,32 @@ int ooh323c_stop_transmit_datachannel(ooCallData *call, ooLogicalChannel *pChann
return 1;
}
-struct ast_format *convertH323CapToAsteriskCap(int cap, struct ast_format *result)
+struct ast_format *convertH323CapToAsteriskCap(int cap)
{
- ast_format_clear(result);
switch(cap)
{
case OO_G711ULAW64K:
- return ast_format_set(result, AST_FORMAT_ULAW, 0);
+ return ast_format_ulaw;
case OO_G711ALAW64K:
- return ast_format_set(result, AST_FORMAT_ALAW, 0);
+ return ast_format_alaw;
case OO_GSMFULLRATE:
- return ast_format_set(result, AST_FORMAT_GSM, 0);
-
-#ifdef AST_FORMAT_AMRNB
- case OO_AMRNB:
- return ast_format_set(result, AST_FORMAT_AMRNB, 0);
-#endif
-#ifdef AST_FORMAT_SPEEX
+ return ast_format_gsm;
case OO_SPEEX:
- return ast_format_set(result, AST_FORMAT_SPEEX, 0);
-#endif
-
+ return ast_format_speex;
case OO_G729:
- return ast_format_set(result, AST_FORMAT_G729A, 0);
+ return ast_format_g729;
case OO_G729A:
- return ast_format_set(result, AST_FORMAT_G729A, 0);
+ return ast_format_g729;
case OO_G729B:
- return ast_format_set(result, AST_FORMAT_G729A, 0);
+ return ast_format_g729;
case OO_G7231:
- return ast_format_set(result, AST_FORMAT_G723_1, 0);
+ return ast_format_g723;
case OO_G726:
- return ast_format_set(result, AST_FORMAT_G726, 0);
+ return ast_format_g726;
case OO_G726AAL2:
- return ast_format_set(result, AST_FORMAT_G726_AAL2, 0);
+ return ast_format_g726_aal2;
case OO_H263VIDEO:
- return ast_format_set(result, AST_FORMAT_H263, 0);
+ return ast_format_h263;
default:
ast_debug(1, "Cap %d is not supported by driver yet\n", cap);
return NULL;