[asterisk-commits] coreyfarrell: branch group/media_formats-reviewed-trunk r417211 - in /team/gr...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Jun 25 13:54:30 CDT 2014
Author: coreyfarrell
Date: Wed Jun 25 13:54:19 2014
New Revision: 417211
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=417211
Log:
Update res_rtp_asterisk and other fixes for media_formats
Review: https://reviewboard.asterisk.org/r/3671/
Modified:
team/group/media_formats-reviewed-trunk/addons/chan_mobile.c
team/group/media_formats-reviewed-trunk/addons/chan_ooh323.c
team/group/media_formats-reviewed-trunk/channels/chan_alsa.c
team/group/media_formats-reviewed-trunk/channels/chan_gtalk.c
team/group/media_formats-reviewed-trunk/channels/chan_h323.c
team/group/media_formats-reviewed-trunk/channels/chan_jingle.c
team/group/media_formats-reviewed-trunk/channels/chan_mgcp.c
team/group/media_formats-reviewed-trunk/channels/chan_motif.c
team/group/media_formats-reviewed-trunk/channels/chan_nbs.c
team/group/media_formats-reviewed-trunk/channels/chan_oss.c
team/group/media_formats-reviewed-trunk/channels/chan_pjsip.c
team/group/media_formats-reviewed-trunk/channels/chan_sip.c
team/group/media_formats-reviewed-trunk/channels/chan_skinny.c
team/group/media_formats-reviewed-trunk/channels/chan_unistim.c
team/group/media_formats-reviewed-trunk/include/asterisk/codec.h
team/group/media_formats-reviewed-trunk/include/asterisk/format.h
team/group/media_formats-reviewed-trunk/main/bridge.c
team/group/media_formats-reviewed-trunk/main/channel.c
team/group/media_formats-reviewed-trunk/main/codec.c
team/group/media_formats-reviewed-trunk/main/codec_builtin.c
team/group/media_formats-reviewed-trunk/main/format.c
team/group/media_formats-reviewed-trunk/main/frame.c
team/group/media_formats-reviewed-trunk/main/translate.c
team/group/media_formats-reviewed-trunk/res/res_rtp_asterisk.c
team/group/media_formats-reviewed-trunk/res/res_speech.c
Modified: team/group/media_formats-reviewed-trunk/addons/chan_mobile.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/addons/chan_mobile.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/addons/chan_mobile.c (original)
+++ team/group/media_formats-reviewed-trunk/addons/chan_mobile.c Wed Jun 25 13:54:19 2014
@@ -901,7 +901,7 @@
return NULL;
}
- if (!(ast_format_cap_iscompatible_format(cap, DEVICE_FRAME_FORMAT))) {
+ if (ast_format_cap_iscompatible_format(cap, DEVICE_FRAME_FORMAT) == AST_FORMAT_CMP_NOT_EQUAL) {
char tmp[256];
ast_log(LOG_WARNING, "Asked to get a channel of unsupported format '%s'\n", ast_getformatname_multiple(tmp, sizeof(tmp), cap));
*cause = AST_CAUSE_FACILITY_NOT_IMPLEMENTED;
Modified: team/group/media_formats-reviewed-trunk/addons/chan_ooh323.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/addons/chan_ooh323.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/addons/chan_ooh323.c (original)
+++ team/group/media_formats-reviewed-trunk/addons/chan_ooh323.c Wed Jun 25 13:54:19 2014
@@ -1191,7 +1191,7 @@
}
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), f->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
if (ast_format_cap_count(ast_channel_nativeformats(ast))) {
ast_log(LOG_WARNING,
"Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n",
@@ -4956,7 +4956,7 @@
if (f && p->owner && !p->faxmode && (f->frametype == AST_FRAME_VOICE)) {
/* We already hold the channel lock */
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(p->owner), f->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(p->owner), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
struct ast_format_cap *caps;
ast_debug(1, "Oooh, voice format changed to %s\n", ast_format_get_name(f->subclass.format));
Modified: team/group/media_formats-reviewed-trunk/channels/chan_alsa.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_alsa.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_alsa.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_alsa.c Wed Jun 25 13:54:19 2014
@@ -620,7 +620,7 @@
char buf[256];
struct ast_channel *tmp = NULL;
- if (!ast_format_cap_iscompatible_format(cap, ast_format_slin)) {
+ if (ast_format_cap_iscompatible_format(cap, ast_format_slin) == AST_FORMAT_CMP_NOT_EQUAL) {
ast_log(LOG_NOTICE, "Asked to get a channel of format '%s'\n", ast_getformatname_multiple(buf, sizeof(buf), cap));
return NULL;
}
Modified: team/group/media_formats-reviewed-trunk/channels/chan_gtalk.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_gtalk.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_gtalk.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_gtalk.c Wed Jun 25 13:54:19 2014
@@ -1636,7 +1636,7 @@
if (p->owner) {
/* We already hold the channel lock */
if (f->frametype == AST_FRAME_VOICE) {
- if (!ast_format_cap_iscompatible_format(ast_channel_nativeformats(p->owner), f->subclass.format)) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(p->owner), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
struct ast_format_cap *caps;
ast_debug(1, "Oooh, format changed to %s\n", ast_format_get_name(f->subclass.format));
@@ -1682,7 +1682,7 @@
switch (frame->frametype) {
case AST_FRAME_VOICE:
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
ast_log(LOG_WARNING,
"Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n",
ast_format_get_name(frame->subclass.format),
Modified: team/group/media_formats-reviewed-trunk/channels/chan_h323.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_h323.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_h323.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_h323.c Wed Jun 25 13:54:19 2014
@@ -795,7 +795,7 @@
if (f && pvt->owner) {
/* We already hold the channel lock */
if (f->frametype == AST_FRAME_VOICE) {
- if (!ast_format_cap_iscompatible_format(ast_channel_nativeformats(pvt->owner), f->subclass.format)) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(pvt->owner), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
struct ast_format_cap *nativeformats;
nativeformats = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT);
@@ -883,7 +883,7 @@
return 0;
}
} else {
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(c), frame->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(c), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
char tmp[256];
ast_log(LOG_WARNING, "Asked to transmit frame type '%s', while native formats is '%s' (read/write = %s/%s)\n",
ast_format_get_name(frame->subclass.format),
Modified: team/group/media_formats-reviewed-trunk/channels/chan_jingle.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_jingle.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_jingle.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_jingle.c Wed Jun 25 13:54:19 2014
@@ -1253,7 +1253,7 @@
if (p->owner) {
/* We already hold the channel lock */
if (f->frametype == AST_FRAME_VOICE) {
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(p->owner), f->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(p->owner), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
struct ast_format_cap *caps;
ast_debug(1, "Oooh, format changed to %s\n", ast_format_get_name(f->subclass.format));
@@ -1299,7 +1299,7 @@
switch (frame->frametype) {
case AST_FRAME_VOICE:
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
ast_log(LOG_WARNING,
"Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n",
ast_format_get_name(frame->subclass.format),
Modified: team/group/media_formats-reviewed-trunk/channels/chan_mgcp.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_mgcp.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_mgcp.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_mgcp.c Wed Jun 25 13:54:19 2014
@@ -1200,7 +1200,7 @@
if (sub->owner) {
/* We already hold the channel lock */
if (f->frametype == AST_FRAME_VOICE) {
- if (!ast_format_cap_iscompatible_format(ast_channel_nativeformats(sub->owner), f->subclass.format)) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(sub->owner), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
struct ast_format_cap *caps;
ast_debug(1, "Oooh, format changed to %s\n", ast_format_get_name(f->subclass.format));
@@ -1261,7 +1261,7 @@
return 0;
}
} else {
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n",
ast_format_get_name(frame->subclass.format),
ast_getformatname_multiple(buf, sizeof(buf), ast_channel_nativeformats(ast)),
Modified: team/group/media_formats-reviewed-trunk/channels/chan_motif.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_motif.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_motif.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_motif.c Wed Jun 25 13:54:19 2014
@@ -1672,8 +1672,8 @@
}
if (frame && frame->frametype == AST_FRAME_VOICE &&
- !ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format)) {
- if (!ast_format_cap_iscompatible_format(session->jointcap, frame->subclass.format)) {
+ ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
+ if (ast_format_cap_iscompatible_format(session->jointcap, frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
ast_debug(1, "Bogus frame of format '%s' received from '%s'!\n",
ast_format_get_name(frame->subclass.format), ast_channel_name(ast));
ast_frfree(frame);
@@ -1707,7 +1707,7 @@
switch (frame->frametype) {
case AST_FRAME_VOICE:
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
ast_log(LOG_WARNING,
"Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n",
ast_format_get_name(frame->subclass.format),
Modified: team/group/media_formats-reviewed-trunk/channels/chan_nbs.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_nbs.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_nbs.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_nbs.c Wed Jun 25 13:54:19 2014
@@ -231,7 +231,7 @@
struct nbs_pvt *p;
struct ast_channel *tmp = NULL;
- if (!(ast_format_cap_iscompatible_format(cap, ast_format_slin))) {
+ if (ast_format_cap_iscompatible_format(cap, ast_format_slin) == AST_FORMAT_CMP_NOT_EQUAL) {
char tmp[256];
ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format '%s'\n", ast_getformatname_multiple(tmp, sizeof(tmp), cap));
return NULL;
Modified: team/group/media_formats-reviewed-trunk/channels/chan_oss.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_oss.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_oss.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_oss.c Wed Jun 25 13:54:19 2014
@@ -863,7 +863,7 @@
/* XXX we could default to 'dsp' perhaps ? */
return NULL;
}
- if (!ast_format_cap_iscompatible_format(cap, ast_format_slin)) {
+ if (ast_format_cap_iscompatible_format(cap, ast_format_slin) == AST_FORMAT_CMP_NOT_EQUAL) {
ast_log(LOG_NOTICE, "Format %s unsupported\n", ast_getformatname_multiple(buf, sizeof(buf), cap));
return NULL;
}
Modified: team/group/media_formats-reviewed-trunk/channels/chan_pjsip.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_pjsip.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_pjsip.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_pjsip.c Wed Jun 25 13:54:19 2014
@@ -591,7 +591,7 @@
return f;
}
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), f->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
struct ast_format_cap *caps;
ast_debug(1, "Oooh, format changed to %s\n", ast_format_get_name(f->subclass.format));
@@ -639,7 +639,7 @@
if (!media) {
return 0;
}
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
char buf[256];
ast_log(LOG_WARNING,
@@ -1144,8 +1144,7 @@
/* FIXME: Only use this for VP8. Additional work would have to be done to
* fully support other video codecs */
- if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast),
- ast_format_vp8)) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), ast_format_vp8) != AST_FORMAT_CMP_NOT_EQUAL) {
/* FIXME Fake RTP write, this will be sent as an RTCP packet. Ideally the
* RTP engine would provide a way to externally write/schedule RTCP
* packets */
Modified: team/group/media_formats-reviewed-trunk/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_sip.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_sip.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_sip.c Wed Jun 25 13:54:19 2014
@@ -7375,7 +7375,7 @@
ast_log(AST_LOG_NOTICE, "Ignoring ${SIP_CODEC*} variable because of unrecognized/not configured codec %s (check allow/disallow in sip.conf)\n", codec);
continue;
}
- if (ast_format_cap_iscompatible_format(original_jointcaps, fmt)) {
+ if (ast_format_cap_iscompatible_format(original_jointcaps, fmt) != AST_FORMAT_CMP_NOT_EQUAL) {
if (first_codec) {
ast_verb(4, "Set codec to '%s' for this call because of ${SIP_CODEC*} variable\n", codec);
ast_format_cap_remove_bytype(p->jointcaps, AST_MEDIA_TYPE_UNKNOWN);
@@ -7443,7 +7443,7 @@
switch (frame->frametype) {
case AST_FRAME_VOICE:
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
char s1[512];
ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s read/write = %s/%s\n",
ast_format_get_name(frame->subclass.format),
@@ -7956,7 +7956,7 @@
if (p->vrtp && !p->novideo) {
/* FIXME: Only use this for VP8. Additional work would have to be done to
* fully support other video codecs */
- if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), ast_format_vp8)) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), ast_format_vp8) != AST_FORMAT_CMP_NOT_EQUAL) {
/* FIXME Fake RTP write, this will be sent as an RTCP packet. Ideally the
* RTP engine would provide a way to externally write/schedule RTCP
* packets */
@@ -8570,10 +8570,10 @@
return f;
}
- if (f && !ast_format_cap_iscompatible_format(ast_channel_nativeformats(p->owner), f->subclass.format)) {
+ if (f && ast_format_cap_iscompatible_format(ast_channel_nativeformats(p->owner), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
struct ast_format_cap *caps;
- if (!ast_format_cap_iscompatible_format(p->jointcaps, f->subclass.format)) {
+ if (ast_format_cap_iscompatible_format(p->jointcaps, f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
ast_debug(1, "Bogus frame of format '%s' received from '%s'!\n",
ast_format_get_name(f->subclass.format), ast_channel_name(p->owner));
ast_frfree(f);
@@ -10849,7 +10849,7 @@
ast_verbose("Peer T.140 RTP is at port %s\n",
ast_sockaddr_stringify(tsa));
}
- if (ast_format_cap_iscompatible_format(p->jointcaps, ast_format_t140_red)) {
+ if (ast_format_cap_iscompatible_format(p->jointcaps, ast_format_t140_red) != AST_FORMAT_CMP_NOT_EQUAL) {
p->red = 1;
ast_rtp_red_init(p->trtp, 300, red_data_pt, 2);
} else {
@@ -13443,7 +13443,7 @@
tmp_fmt = ast_format_cap_get_format(p->prefcaps, x);
if ((ast_format_get_type(tmp_fmt) != AST_MEDIA_TYPE_AUDIO) ||
- (!ast_format_cap_iscompatible_format(tmpcap, tmp_fmt))) {
+ (ast_format_cap_iscompatible_format(tmpcap, tmp_fmt) == AST_FORMAT_CMP_NOT_EQUAL)) {
ao2_ref(tmp_fmt, -1);
continue;
}
@@ -13458,7 +13458,7 @@
for (x = 0; x < ast_format_cap_count(p->caps); x++) {
tmp_fmt = ast_format_cap_get_format(p->caps, x);
- if (ast_format_cap_iscompatible_format(alreadysent, tmp_fmt)) {
+ if (ast_format_cap_iscompatible_format(alreadysent, tmp_fmt) != AST_FORMAT_CMP_NOT_EQUAL) {
ao2_ref(tmp_fmt, -1);
continue;
}
@@ -13479,7 +13479,7 @@
for (x = 0; x < ast_format_cap_count(tmpcap); x++) {
tmp_fmt = ast_format_cap_get_format(tmpcap, x);
- if (ast_format_cap_iscompatible_format(alreadysent, tmp_fmt)) {
+ if (ast_format_cap_iscompatible_format(alreadysent, tmp_fmt) != AST_FORMAT_CMP_NOT_EQUAL) {
ao2_ref(tmp_fmt, -1);
continue;
}
Modified: team/group/media_formats-reviewed-trunk/channels/chan_skinny.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_skinny.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_skinny.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_skinny.c Wed Jun 25 13:54:19 2014
@@ -5062,7 +5062,7 @@
if (ast) {
/* We already hold the channel lock */
if (f->frametype == AST_FRAME_VOICE) {
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), f->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
struct ast_format_cap *caps;
ast_debug(1, "Oooh, format changed to %s\n", ast_format_get_name(f->subclass.format));
@@ -5103,7 +5103,7 @@
return 0;
}
} else {
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
char buf[256];
ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n",
ast_format_get_name(frame->subclass.format),
Modified: team/group/media_formats-reviewed-trunk/channels/chan_unistim.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/channels/chan_unistim.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/channels/chan_unistim.c (original)
+++ team/group/media_formats-reviewed-trunk/channels/chan_unistim.c Wed Jun 25 13:54:19 2014
@@ -2884,7 +2884,7 @@
sin.sin_port = htons(find_rtp_port(sub));
ast_sockaddr_from_sin(&sin_tmp, &sin);
ast_rtp_instance_set_remote_address(sub->rtp, &sin_tmp);
- if (!ast_format_cap_iscompatible_format(ast_channel_nativeformats(sub->owner), ast_channel_readformat(sub->owner))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(sub->owner), ast_channel_readformat(sub->owner)) == AST_FORMAT_CMP_NOT_EQUAL) {
struct ast_format *tmpfmt;
char tmp[256];
tmpfmt = ast_format_cap_get_format(ast_channel_nativeformats(sub->owner), 0);
@@ -5134,7 +5134,7 @@
if (sub->owner) {
/* We already hold the channel lock */
if (f->frametype == AST_FRAME_VOICE) {
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(sub->owner), f->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(sub->owner), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
char tmp[256];
struct ast_format_cap *caps;
@@ -5184,7 +5184,7 @@
return 0;
}
} else {
- if (!(ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format))) {
+ if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
char tmp[256];
ast_log(LOG_WARNING,
"Asked to transmit frame type %s, while native formats is %s (read/write = (%s/%s)\n",
Modified: team/group/media_formats-reviewed-trunk/include/asterisk/codec.h
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/include/asterisk/codec.h?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/include/asterisk/codec.h (original)
+++ team/group/media_formats-reviewed-trunk/include/asterisk/codec.h Wed Jun 25 13:54:19 2014
@@ -72,7 +72,7 @@
*/
int (*get_length)(unsigned int samples);
/*! \brief Whether the media can be smoothed or not */
- unsigned int smooth:1;
+ unsigned int smooth;
};
/*!
Modified: team/group/media_formats-reviewed-trunk/include/asterisk/format.h
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/include/asterisk/format.h?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/include/asterisk/format.h (original)
+++ team/group/media_formats-reviewed-trunk/include/asterisk/format.h Wed Jun 25 13:54:19 2014
@@ -170,7 +170,7 @@
*
* \note The returned format must be treated as immutable.
*/
-struct ast_format *ast_format_copy(struct ast_format *format);
+#define ast_format_copy(format) ao2_bump(format)
/*!
* \brief Set an attribute on a format to a specific value
@@ -258,6 +258,16 @@
const char *ast_format_get_codec_name(const struct ast_format *format);
/*!
+ * \brief Get whether or not the format can be smoothed
+ *
+ * \param format The media format
+ *
+ * \retval 0 the format cannot be smoothed
+ * \retval 1 the format can be smoothed
+ */
+int ast_format_can_be_smoothed(const struct ast_format *format);
+
+/*!
* \brief Get the media type of a format
*
* \param format The media format
@@ -311,16 +321,6 @@
* \return length of media (in milliseconds)
*/
unsigned int ast_format_determine_length(const struct ast_format *format, unsigned int samples);
-
-/*!
- * \brief Check if the format is signed linear
- *
- * \param format The media format
- *
- * \retval 1 format is signed linear
- * \retval 0 format is not signed linear
- */
-int ast_format_is_slinear(const struct ast_format *format);
/*!
* \since 12
Modified: team/group/media_formats-reviewed-trunk/main/bridge.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/main/bridge.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/main/bridge.c (original)
+++ team/group/media_formats-reviewed-trunk/main/bridge.c Wed Jun 25 13:54:19 2014
@@ -943,7 +943,7 @@
write_format = ast_channel_writeformat(bridge_channel->chan);
/* Are the formats currently in use something this bridge can handle? */
- if (!ast_format_cap_iscompatible_format(bridge->technology->format_capabilities, read_format)) {
+ if (ast_format_cap_iscompatible_format(bridge->technology->format_capabilities, read_format) == AST_FORMAT_CMP_NOT_EQUAL) {
best_format = ast_format_cap_get_format(bridge->technology->format_capabilities, 0);
/* Read format is a no go... */
@@ -967,7 +967,7 @@
ast_format_get_name(read_format));
}
- if (!ast_format_cap_iscompatible_format(bridge->technology->format_capabilities, write_format)) {
+ if (ast_format_cap_iscompatible_format(bridge->technology->format_capabilities, write_format) == AST_FORMAT_CMP_NOT_EQUAL) {
best_format = ast_format_cap_get_format(bridge->technology->format_capabilities, 0);
/* Write format is a no go... */
Modified: team/group/media_formats-reviewed-trunk/main/channel.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/main/channel.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/main/channel.c (original)
+++ team/group/media_formats-reviewed-trunk/main/channel.c Wed Jun 25 13:54:19 2014
@@ -2244,6 +2244,13 @@
ast_translator_free_path(ast_channel_writetrans(chan));
if (ast_channel_pbx(chan))
ast_log_callid(LOG_WARNING, callid, "PBX may not have been terminated properly on '%s'\n", ast_channel_name(chan));
+
+ /* Free formats */
+ ast_channel_set_oldwriteformat(chan, NULL);
+ ast_channel_set_rawreadformat(chan, NULL);
+ ast_channel_set_rawwriteformat(chan, NULL);
+ ast_channel_set_readformat(chan, NULL);
+ ast_channel_set_writeformat(chan, NULL);
ast_party_dialed_free(ast_channel_dialed(chan));
ast_party_caller_free(ast_channel_caller(chan));
@@ -4113,7 +4120,7 @@
ast_frfree(f);
f = &ast_null_frame;
}
- } else if ((f->frametype == AST_FRAME_VOICE) && !ast_format_cap_iscompatible_format(ast_channel_nativeformats(chan), f->subclass.format)) {
+ } else if ((f->frametype == AST_FRAME_VOICE) && ast_format_cap_iscompatible_format(ast_channel_nativeformats(chan), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
/* This frame is not one of the current native formats -- drop it on the floor */
char to[200];
ast_log(LOG_NOTICE, "Dropping incompatible voice frame on %s of format %s since our native format has changed to %s\n",
@@ -5032,7 +5039,7 @@
if (ast_format_cmp(fr->subclass.format, ast_channel_rawwriteformat(chan)) != AST_FORMAT_CMP_NOT_EQUAL) {
f = fr;
} else {
- if ((!ast_format_cap_iscompatible_format(ast_channel_nativeformats(chan), fr->subclass.format)) &&
+ if ((ast_format_cap_iscompatible_format(ast_channel_nativeformats(chan), fr->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) &&
(ast_format_cmp(ast_channel_writeformat(chan), fr->subclass.format) != AST_FORMAT_CMP_EQUAL)) {
char nf[512];
Modified: team/group/media_formats-reviewed-trunk/main/codec.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/main/codec.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/main/codec.c (original)
+++ team/group/media_formats-reviewed-trunk/main/codec.c Wed Jun 25 13:54:19 2014
@@ -345,6 +345,9 @@
return 0;
}
+ /* BUGBUG - why not just get the codec pointer off the format?
+ This is a bit roundabout
+ */
codec = ast_codec_get_by_id(ast_format_get_codec_id(frame->subclass.format));
if (codec->samples_count) {
Modified: team/group/media_formats-reviewed-trunk/main/codec_builtin.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/main/codec_builtin.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/main/codec_builtin.c (original)
+++ team/group/media_formats-reviewed-trunk/main/codec_builtin.c Wed Jun 25 13:54:19 2014
@@ -123,6 +123,7 @@
.default_ms = 20,
.samples_count = ulaw_samples,
.get_length = ulaw_length,
+ .smooth = 1,
};
static struct ast_codec alaw = {
@@ -135,6 +136,7 @@
.default_ms = 20,
.samples_count = ulaw_samples,
.get_length = ulaw_length,
+ .smooth = 1,
};
static int gsm_samples(struct ast_frame *frame)
@@ -157,6 +159,7 @@
.default_ms = 20,
.samples_count = gsm_samples,
.get_length = gsm_length,
+ .smooth = 1,
};
static int g726_samples(struct ast_frame *frame)
@@ -179,6 +182,7 @@
.default_ms = 20,
.samples_count = g726_samples,
.get_length = g726_length,
+ .smooth = 1,
};
static struct ast_codec g726aal2 = {
@@ -191,6 +195,7 @@
.default_ms = 20,
.samples_count = g726_samples,
.get_length = g726_length,
+ .smooth = 1,
};
static struct ast_codec adpcm = {
@@ -203,6 +208,7 @@
.default_ms = 20,
.samples_count = g726_samples,
.get_length = g726_length,
+ .smooth = 1,
};
static int slin_samples(struct ast_frame *frame)
@@ -225,6 +231,7 @@
.default_ms = 20,
.samples_count = slin_samples,
.get_length = slin_length,
+ .smooth = 1,
};
static struct ast_codec slin12 = {
@@ -237,6 +244,7 @@
.default_ms = 20,
.samples_count = slin_samples,
.get_length = slin_length,
+ .smooth = 1,
};
static struct ast_codec slin16 = {
@@ -249,6 +257,7 @@
.default_ms = 20,
.samples_count = slin_samples,
.get_length = slin_length,
+ .smooth = 1,
};
static struct ast_codec slin24 = {
@@ -261,6 +270,7 @@
.default_ms = 20,
.samples_count = slin_samples,
.get_length = slin_length,
+ .smooth = 1,
};
static struct ast_codec slin32 = {
@@ -273,6 +283,7 @@
.default_ms = 20,
.samples_count = slin_samples,
.get_length = slin_length,
+ .smooth = 1,
};
static struct ast_codec slin44 = {
@@ -285,6 +296,7 @@
.default_ms = 20,
.samples_count = slin_samples,
.get_length = slin_length,
+ .smooth = 1,
};
static struct ast_codec slin48 = {
@@ -297,6 +309,7 @@
.default_ms = 20,
.samples_count = slin_samples,
.get_length = slin_length,
+ .smooth = 1,
};
static struct ast_codec slin96 = {
@@ -309,6 +322,7 @@
.default_ms = 20,
.samples_count = slin_samples,
.get_length = slin_length,
+ .smooth = 1,
};
static struct ast_codec slin192 = {
@@ -321,6 +335,7 @@
.default_ms = 20,
.samples_count = slin_samples,
.get_length = slin_length,
+ .smooth = 1,
};
static int lpc10_samples(struct ast_frame *frame)
@@ -342,6 +357,7 @@
.maximum_ms = 20,
.default_ms = 20,
.samples_count = lpc10_samples,
+ .smooth = 1,
};
static int g729_samples(struct ast_frame *frame)
@@ -364,6 +380,7 @@
.default_ms = 20,
.samples_count = g729_samples,
.get_length = g729_length,
+ .smooth = 1,
};
static unsigned char get_n_bits_at(unsigned char *data, int n, int bit)
@@ -537,6 +554,7 @@
.maximum_ms = 30,
.default_ms = 30,
.samples_count = ilbc_samples,
+ .smooth = 1,
};
static struct ast_codec g722 = {
@@ -549,6 +567,7 @@
.default_ms = 20,
.samples_count = g726_samples,
.get_length = g726_length,
+ .smooth = 1,
};
static int siren7_samples(struct ast_frame *frame)
@@ -605,6 +624,7 @@
.default_ms = 20,
.samples_count = ulaw_samples,
.get_length = ulaw_length,
+ .smooth = 1,
};
static int g719_samples(struct ast_frame *frame)
Modified: team/group/media_formats-reviewed-trunk/main/format.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/main/format.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/main/format.c (original)
+++ team/group/media_formats-reviewed-trunk/main/format.c Wed Jun 25 13:54:19 2014
@@ -197,6 +197,10 @@
enum ast_format_cmp_res ast_format_cmp(const struct ast_format *format1, const struct ast_format *format2)
{
+ if (format1 == NULL || format2 == NULL) {
+ return AST_FORMAT_CMP_NOT_EQUAL;
+ }
+
if (format1 == format2) {
return AST_FORMAT_CMP_EQUAL;
}
@@ -230,11 +234,6 @@
return format1->interface->format_get_joint(format1, format2);
}
-struct ast_format *ast_format_copy(struct ast_format *format)
-{
- return ao2_bump(format);
-}
-
int ast_format_attribute_set(struct ast_format *format, const char *name, const char *value)
{
if (!format->interface || !format->interface->format_attribute_set) {
@@ -277,6 +276,11 @@
return format->codec->name;
}
+int ast_format_can_be_smoothed(const struct ast_format *format)
+{
+ return format->codec->smooth;
+}
+
enum ast_media_type ast_format_get_type(const struct ast_format *format)
{
return format->codec->type;
Modified: team/group/media_formats-reviewed-trunk/main/frame.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/main/frame.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/main/frame.c (original)
+++ team/group/media_formats-reviewed-trunk/main/frame.c Wed Jun 25 13:54:19 2014
@@ -121,6 +121,8 @@
if ((fr->frametype == AST_FRAME_VOICE) || (fr->frametype == AST_FRAME_VIDEO) ||
(fr->frametype == AST_FRAME_IMAGE)) {
ao2_cleanup(fr->subclass.format);
+ } else {
+ memset(&fr->subclass, 0, sizeof(fr->subclass));
}
if (!fr->mallocd)
@@ -202,7 +204,12 @@
return NULL;
}
out->frametype = fr->frametype;
- out->subclass.format = ast_format_copy(fr->subclass.format);
+ if ((fr->frametype == AST_FRAME_VOICE) || (fr->frametype == AST_FRAME_VIDEO) ||
+ (fr->frametype == AST_FRAME_IMAGE)) {
+ out->subclass.format = ast_format_copy(fr->subclass.format);
+ } else {
+ memcpy(&out->subclass, &fr->subclass, sizeof(out->subclass));
+ }
out->datalen = fr->datalen;
out->samples = fr->samples;
out->offset = fr->offset;
@@ -309,7 +316,12 @@
}
out->frametype = f->frametype;
- out->subclass.format = ast_format_copy(f->subclass.format);
+ if ((f->frametype == AST_FRAME_VOICE) || (f->frametype == AST_FRAME_VIDEO) ||
+ (f->frametype == AST_FRAME_IMAGE)) {
+ out->subclass.format = ast_format_copy(f->subclass.format);
+ } else {
+ memcpy(&out->subclass, &f->subclass, sizeof(out->subclass));
+ }
out->datalen = f->datalen;
out->samples = f->samples;
out->delivery = f->delivery;
Modified: team/group/media_formats-reviewed-trunk/main/translate.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/main/translate.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/main/translate.c (original)
+++ team/group/media_formats-reviewed-trunk/main/translate.c Wed Jun 25 13:54:19 2014
@@ -1408,15 +1408,13 @@
}
/* if this is not a desired format, nothing to do */
- if (ast_format_cap_iscompatible_format(
- dest, fmt) == AST_FORMAT_CMP_NOT_EQUAL) {
+ if (ast_format_cap_iscompatible_format(dest, fmt) == AST_FORMAT_CMP_NOT_EQUAL) {
continue;
}
/* if the source is supplying this format, then
we can leave it in the result */
- if (ast_format_cap_iscompatible_format(
- src, fmt) == AST_FORMAT_CMP_EQUAL) {
+ if (ast_format_cap_iscompatible_format(src, fmt) == AST_FORMAT_CMP_EQUAL) {
continue;
}
Modified: team/group/media_formats-reviewed-trunk/res/res_rtp_asterisk.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats-reviewed-trunk/res/res_rtp_asterisk.c?view=diff&rev=417211&r1=417210&r2=417211
==============================================================================
--- team/group/media_formats-reviewed-trunk/res/res_rtp_asterisk.c (original)
+++ team/group/media_formats-reviewed-trunk/res/res_rtp_asterisk.c Wed Jun 25 13:54:19 2014
@@ -56,6 +56,7 @@
#include "asterisk/stun.h"
#include "asterisk/pbx.h"
#include "asterisk/frame.h"
+#include "asterisk/format_cache.h"
#include "asterisk/channel.h"
#include "asterisk/acl.h"
#include "asterisk/config.h"
@@ -207,8 +208,8 @@
unsigned int cycles; /*!< Shifted count of sequence number cycles */
double rxjitter; /*!< Interarrival jitter at the moment in seconds */
double rxtransit; /*!< Relative transit time for previous packet */
- struct ast_format lasttxformat;
- struct ast_format lastrxformat;
+ struct ast_format *lasttxformat;
+ struct ast_format *lastrxformat;
int rtptimeout; /*!< RTP timeout time (negative or zero means disabled, negative value means temporarily disabled) */
int rtpholdtimeout; /*!< RTP timeout when on hold (negative or zero means disabled, negative value means temporarily disabled). */
@@ -1679,7 +1680,11 @@
static int rtp_get_rate(struct ast_format *format)
{
- return (format->id == AST_FORMAT_G722) ? 8000 : ast_format_rate(format);
+ /* For those wondering: due to a fluke in RFC publication, G.722 is advertised
+ * as having a sample rate of 8kHz, while implementations must know that its
+ * real rate is 16kHz. Seriously.
+ */
+ return (ast_format_cmp(format, ast_format_g722) == AST_FORMAT_CMP_EQUAL) ? 8000 : (int)ast_format_get_sample_rate(format);
}
static unsigned int ast_rtcp_calc_interval(struct ast_rtp *rtp)
@@ -2106,6 +2111,9 @@
}
#endif
+ ao2_cleanup(rtp->lasttxformat);
+ ao2_cleanup(rtp->lastrxformat);
+
/* Destroy synchronization items */
ast_mutex_destroy(&rtp->lock);
ast_cond_destroy(&rtp->cond);
@@ -2285,7 +2293,7 @@
rtp->dtmfmute = ast_tvadd(ast_tvnow(), ast_tv(0, 500000));
- if (duration > 0 && (measured_samples = duration * rtp_get_rate(&rtp->f.subclass.format) / 1000) > rtp->send_duration) {
[... 338 lines stripped ...]
More information about the asterisk-commits
mailing list