From: <abe...@us...> - 2016-07-22 13:51:40
|
Revision: 7771 http://sourceforge.net/p/astlinux/code/7771 Author: abelbeck Date: 2016-07-22 13:51:37 +0000 (Fri, 22 Jul 2016) Log Message: ----------- asterisk, version bump to 11.23.0, 13.10.0, add SILK CODEC support to Asterisk 13 Modified Paths: -------------- branches/1.0/astlinux-ast13.config branches/1.0/package/asterisk/asterisk-11-configure-cross-fix.patch branches/1.0/package/asterisk/asterisk-11-extension-changed-verbosity-chan_sip.patch branches/1.0/package/asterisk/asterisk-11-voicemail-multiple-recipients.patch branches/1.0/package/asterisk/asterisk-13-configure-menuselect-cross-fix.patch branches/1.0/package/asterisk/asterisk-13-extension-changed-verbosity-chan_sip.patch branches/1.0/package/asterisk/asterisk.mk branches/1.0/x86_64-configs/astlinux-ast13.config Added Paths: ----------- branches/1.0/package/asterisk/asterisk-13-SILK-CODEC-support.patch Removed Paths: ------------- branches/1.0/package/asterisk/asterisk-11-app_queue-segfault-fix.patch Modified: branches/1.0/astlinux-ast13.config =================================================================== --- branches/1.0/astlinux-ast13.config 2016-07-21 21:45:19 UTC (rev 7770) +++ branches/1.0/astlinux-ast13.config 2016-07-22 13:51:37 UTC (rev 7771) @@ -169,7 +169,7 @@ # app_voicemail=IMAP_STORAGE - disabled (requires UW_IMAP) # # BR2_PACKAGE_ASTERISK_MENUSELECT is not set -# BR2_PACKAGE_ASTERISK_CODEC_SILK is not set +BR2_PACKAGE_ASTERISK_CODEC_SILK=y BR2_PACKAGE_ASTERISK_FOP2=y # BR2_PACKAGE_ASTERISK_GUI is not set BR2_PACKAGE_PHONEPROV_TOOLS=y Deleted: branches/1.0/package/asterisk/asterisk-11-app_queue-segfault-fix.patch =================================================================== --- branches/1.0/package/asterisk/asterisk-11-app_queue-segfault-fix.patch 2016-07-21 21:45:19 UTC (rev 7770) +++ branches/1.0/package/asterisk/asterisk-11-app_queue-segfault-fix.patch 2016-07-22 13:51:37 UTC (rev 7771) @@ -1,15 +0,0 @@ -X-Git-Url: http://git.asterisk.org/gitweb/?p=asterisk%2Fasterisk.git;a=blobdiff_plain;f=apps%2Fapp_queue.c;h=fa432cb76f5e41ad1168b73d3cd415daf3c851c3;hp=4a8029080d4b88a34a84f8d2b20491ba1dcbf6f0;hb=32b4320d620ffff5c55f111fc22f22fdb07f8c60;hpb=981ed6091e513bc81d4863d409762638495c2ed1 - -diff --git a/apps/app_queue.c b/apps/app_queue.c -index 4a80290..fa432cb 100644 ---- a/apps/app_queue.c -+++ b/apps/app_queue.c -@@ -3641,7 +3641,7 @@ static int can_ring_entry(struct queue_ent *qe, struct callattempt *call) - return 0; - } - -- if (call->member->in_call && call->lastqueue->wrapuptime) { -+ if (call->member->in_call && call->lastqueue && call->lastqueue->wrapuptime) { - ast_debug(1, "%s is in call, so not available (wrapuptime %d)\n", - call->interface, call->lastqueue->wrapuptime); - return 0; Modified: branches/1.0/package/asterisk/asterisk-11-configure-cross-fix.patch =================================================================== --- branches/1.0/package/asterisk/asterisk-11-configure-cross-fix.patch 2016-07-21 21:45:19 UTC (rev 7770) +++ branches/1.0/package/asterisk/asterisk-11-configure-cross-fix.patch 2016-07-22 13:51:37 UTC (rev 7771) @@ -1,6 +1,6 @@ --- asterisk-1.8.25.0/configure.ac.orig 2014-01-24 16:52:23.000000000 -0600 +++ asterisk-1.8.25.0/configure.ac 2014-01-24 16:55:14.000000000 -0600 -@@ -2474,11 +2474,13 @@ +@@ -2473,11 +2473,13 @@ AC_OUTPUT ${ac_cv_path_EGREP} 'CURSES|GTK2|OSARCH|NEWT' makeopts > makeopts.acbak2 Modified: branches/1.0/package/asterisk/asterisk-11-extension-changed-verbosity-chan_sip.patch =================================================================== --- branches/1.0/package/asterisk/asterisk-11-extension-changed-verbosity-chan_sip.patch 2016-07-21 21:45:19 UTC (rev 7770) +++ branches/1.0/package/asterisk/asterisk-11-extension-changed-verbosity-chan_sip.patch 2016-07-22 13:51:37 UTC (rev 7771) @@ -1,6 +1,6 @@ --- asterisk-11.17.1/channels/chan_sip.c.orig 2015-04-23 10:22:04.000000000 -0500 +++ asterisk-11.17.1/channels/chan_sip.c 2015-04-23 10:22:40.000000000 -0500 -@@ -16781,7 +16781,7 @@ +@@ -16799,7 +16799,7 @@ } if (!force) { Modified: branches/1.0/package/asterisk/asterisk-11-voicemail-multiple-recipients.patch =================================================================== --- branches/1.0/package/asterisk/asterisk-11-voicemail-multiple-recipients.patch 2016-07-21 21:45:19 UTC (rev 7770) +++ branches/1.0/package/asterisk/asterisk-11-voicemail-multiple-recipients.patch 2016-07-22 13:51:37 UTC (rev 7771) @@ -1,6 +1,6 @@ --- asterisk-11.16.0/apps/app_voicemail.c.orig 2015-01-23 08:51:03.000000000 -0600 +++ asterisk-11.16.0/apps/app_voicemail.c 2015-02-10 09:58:04.000000000 -0600 -@@ -751,7 +751,7 @@ +@@ -753,7 +753,7 @@ char mailbox[AST_MAX_EXTENSION]; /*!< Mailbox id, unique within vm context */ char password[80]; /*!< Secret pin code, numbers only */ char fullname[80]; /*!< Full name, for directory app */ @@ -9,7 +9,7 @@ char *emailsubject; /*!< E-mail subject */ char *emailbody; /*!< E-mail body */ char pager[80]; /*!< E-mail address to pager (no attachment) */ -@@ -1194,6 +1194,8 @@ +@@ -1196,6 +1196,8 @@ vmu->maxdeletedmsg = maxdeletedmsg; } vmu->volgain = volgain; @@ -18,7 +18,7 @@ ast_free(vmu->emailsubject); vmu->emailsubject = NULL; ast_free(vmu->emailbody); -@@ -1505,7 +1507,8 @@ +@@ -1507,7 +1509,8 @@ } else if (!strcasecmp(var->name, "pager")) { ast_copy_string(retval->pager, var->value, sizeof(retval->pager)); } else if (!strcasecmp(var->name, "email")) { @@ -28,25 +28,26 @@ } else if (!strcasecmp(var->name, "fullname")) { ast_copy_string(retval->fullname, var->value, sizeof(retval->fullname)); } else if (!strcasecmp(var->name, "context")) { -@@ -1642,6 +1645,7 @@ - if ((vmu = (ivm ? ivm : ast_malloc(sizeof(*vmu))))) { +@@ -1644,7 +1647,9 @@ + if ((vmu = (ivm ? ivm : ast_calloc(1, sizeof(*vmu))))) { ++ ast_free(vmu->email); + ast_free(vmu->emailbody); + ast_free(vmu->emailsubject); *vmu = *cur; - if (!ivm) { -+ vmu->email = ast_strdup(cur->email); - vmu->emailbody = ast_strdup(cur->emailbody); - vmu->emailsubject = ast_strdup(cur->emailsubject); - } -@@ -1924,6 +1928,9 @@ - { - if (ast_test_flag(vmu, VM_ALLOCED)) { ++ vmu->email = ast_strdup(cur->email); + vmu->emailbody = ast_strdup(cur->emailbody); + vmu->emailsubject = ast_strdup(cur->emailsubject); + ast_set2_flag(vmu, !ivm, VM_ALLOCED); +@@ -1928,6 +1932,8 @@ + return; + } -+ ast_free(vmu->email); -+ vmu->email = NULL; -+ - ast_free(vmu->emailbody); - vmu->emailbody = NULL; - -@@ -2571,7 +2578,7 @@ ++ ast_free(vmu->email); ++ vmu->email = NULL; + ast_free(vmu->emailbody); + vmu->emailbody = NULL; + ast_free(vmu->emailsubject); +@@ -2583,7 +2589,7 @@ * of this function, we will revert back to an empty string if tempcopy * is 1. */ @@ -55,7 +56,7 @@ tempcopy = 1; } -@@ -2583,8 +2590,10 @@ +@@ -2595,8 +2601,10 @@ command hangs. */ if (!(p = vm_mkftemp(tmp))) { ast_log(AST_LOG_WARNING, "Unable to store '%s' (can't create temporary file)\n", fn); @@ -68,7 +69,7 @@ return -1; } -@@ -4929,6 +4938,9 @@ +@@ -4947,6 +4955,9 @@ struct ast_str *str1 = ast_str_create(16), *str2 = ast_str_create(16); char *greeting_attachment; char filename[256]; @@ -78,7 +79,7 @@ if (!str1 || !str2) { ast_free(str1); -@@ -4970,7 +4982,7 @@ +@@ -4988,7 +4999,7 @@ ast_str_substitute_variables(&str1, 0, ast, fromstring); if (check_mime(ast_str_buffer(str1))) { @@ -87,7 +88,7 @@ ast_str_encode_mime(&str2, 0, ast_str_buffer(str1), strlen("From: "), strlen(who) + 3); while ((ptr = strchr(ast_str_buffer(str2), ' '))) { *ptr = '\0'; -@@ -4991,20 +5003,25 @@ +@@ -5009,20 +5020,25 @@ fprintf(p, "From: Asterisk PBX <%s>" ENDL, who); } @@ -126,7 +127,7 @@ } if (!ast_strlen_zero(emailsubject) || !ast_strlen_zero(vmu->emailsubject)) { -@@ -5014,7 +5031,7 @@ +@@ -5032,7 +5048,7 @@ prep_email_sub_vars(ast, vmu, msgnum + 1, context, mailbox, fromfolder, cidnum, cidname, dur, date, category, flag); ast_str_substitute_variables(&str1, 0, ast, e_subj); if (check_mime(ast_str_buffer(str1))) { @@ -135,7 +136,7 @@ char *ptr; ast_str_encode_mime(&str2, 0, ast_str_buffer(str1), strlen("Subject: "), 0); while ((ptr = strchr(ast_str_buffer(str2), ' '))) { -@@ -11766,7 +11783,7 @@ +@@ -11802,7 +11818,7 @@ ast_copy_string(vmu->fullname, s, sizeof(vmu->fullname)); } if (stringp && (s = strsep(&stringp, ","))) { @@ -144,7 +145,7 @@ } if (stringp && (s = strsep(&stringp, ","))) { ast_copy_string(vmu->pager, s, sizeof(vmu->pager)); -@@ -14035,7 +14052,7 @@ +@@ -14084,7 +14100,7 @@ } populate_defaults(vmu); Added: branches/1.0/package/asterisk/asterisk-13-SILK-CODEC-support.patch =================================================================== --- branches/1.0/package/asterisk/asterisk-13-SILK-CODEC-support.patch (rev 0) +++ branches/1.0/package/asterisk/asterisk-13-SILK-CODEC-support.patch 2016-07-22 13:51:37 UTC (rev 7771) @@ -0,0 +1,346 @@ +From 28501051b47e6bb8968bb016abf0b3493c05fa21 Mon Sep 17 00:00:00 2001 +From: Mark Michelson <mmi...@di...> +Date: Thu, 30 Jun 2016 15:58:53 -0500 +Subject: [PATCH] Update support for SILK format. + +This commit adds scaffolding in order to support the SILK audio format +on calls. Roughly, this is what is added: + +* Cached silk formats. One for each possible sample rate. +* ast_codec structures for each possible sample rate. +* RTP payload mappings for "SILK". + +In addition, this change overhauls the res_format_attr_silk file in the +following ways: + +* The "samplerate" attribute is scrapped. That's native to the format. +* There are far more checks to ensure that attributes have been + allocated before attempting to reference them. +* We do not SDP fmtp lines for attributes set to 0. + +These changes make way to be able to install a codec_silk module and +have it actually work. It also should allow for passthrough silk calls +in Asterisk. + +Change-Id: Ieeb39c95a9fecc9246bcfd3c45a6c9b51c59380e +--- + include/asterisk/format_cache.h | 8 +++++ + main/codec_builtin.c | 63 ++++++++++++++++++++++++++++++++++++++ + main/format_cache.c | 20 ++++++++++++ + main/rtp_engine.c | 10 ++++++ + res/res_format_attr_silk.c | 64 ++++++++++++++++++++------------------- + 5 files changed, 134 insertions(+), 31 deletions(-) + +diff --git a/include/asterisk/format_cache.h b/include/asterisk/format_cache.h +index 9f4e06a..ff03bb4 100644 +--- a/include/asterisk/format_cache.h ++++ b/include/asterisk/format_cache.h +@@ -224,6 +224,14 @@ extern struct ast_format *ast_format_t140_red; + extern struct ast_format *ast_format_none; + + /*! ++ * \brief Built-in SILK format. ++ */ ++extern struct ast_format *ast_format_silk8; ++extern struct ast_format *ast_format_silk12; ++extern struct ast_format *ast_format_silk16; ++extern struct ast_format *ast_format_silk24; ++ ++/*! + * \brief Initialize format cache support within the core. + * + * \retval 0 success +diff --git a/main/codec_builtin.c b/main/codec_builtin.c +index d3f6517..1d329bc 100644 +--- a/main/codec_builtin.c ++++ b/main/codec_builtin.c +@@ -772,6 +772,65 @@ static struct ast_codec t140 = { + .type = AST_MEDIA_TYPE_TEXT, + }; + ++static int silk_samples(struct ast_frame *frame) ++{ ++ /* XXX This is likely not at all what's intended from this callback. However, ++ * since SILK is variable bit rate, I have no idea how to take a frame of data ++ * and determine the number of samples present. Instead, we base this on the ++ * sample rate of the codec and the expected number of samples to receive in 20ms. ++ * In testing, this has worked just fine. ++ */ ++ return ast_format_get_sample_rate(frame->subclass.format) / 50; ++} ++ ++static struct ast_codec silk8 = { ++ .name = "silk", ++ .description = "SILK Codec (8 KHz)", ++ .type = AST_MEDIA_TYPE_AUDIO, ++ .sample_rate = 8000, ++ .minimum_ms = 20, ++ .maximum_ms = 100, ++ .default_ms = 20, ++ .minimum_bytes = 160, ++ .samples_count = silk_samples ++}; ++ ++static struct ast_codec silk12 = { ++ .name = "silk", ++ .description = "SILK Codec (12 KHz)", ++ .type = AST_MEDIA_TYPE_AUDIO, ++ .sample_rate = 12000, ++ .minimum_ms = 20, ++ .maximum_ms = 100, ++ .default_ms = 20, ++ .minimum_bytes = 240, ++ .samples_count = silk_samples ++}; ++ ++static struct ast_codec silk16 = { ++ .name = "silk", ++ .description = "SILK Codec (16 KHz)", ++ .type = AST_MEDIA_TYPE_AUDIO, ++ .sample_rate = 16000, ++ .minimum_ms = 20, ++ .maximum_ms = 100, ++ .default_ms = 20, ++ .minimum_bytes = 320, ++ .samples_count = silk_samples ++}; ++ ++static struct ast_codec silk24 = { ++ .name = "silk", ++ .description = "SILK Codec (24 KHz)", ++ .type = AST_MEDIA_TYPE_AUDIO, ++ .sample_rate = 24000, ++ .minimum_ms = 20, ++ .maximum_ms = 100, ++ .default_ms = 20, ++ .minimum_bytes = 480, ++ .samples_count = silk_samples ++}; ++ + #define CODEC_REGISTER_AND_CACHE(codec) \ + ({ \ + int __res_ ## __LINE__ = 0; \ +@@ -843,6 +902,10 @@ int ast_codec_builtin_init(void) + res |= CODEC_REGISTER_AND_CACHE(t140red); + res |= CODEC_REGISTER_AND_CACHE(t140); + res |= CODEC_REGISTER_AND_CACHE(none); ++ res |= CODEC_REGISTER_AND_CACHE_NAMED("silk8", silk8); ++ res |= CODEC_REGISTER_AND_CACHE_NAMED("silk12", silk12); ++ res |= CODEC_REGISTER_AND_CACHE_NAMED("silk16", silk16); ++ res |= CODEC_REGISTER_AND_CACHE_NAMED("silk24", silk24); + + return res; + } +diff --git a/main/format_cache.c b/main/format_cache.c +index 6638a78..74ebfe8 100644 +--- a/main/format_cache.c ++++ b/main/format_cache.c +@@ -232,6 +232,14 @@ struct ast_format *ast_format_t140_red; + */ + struct ast_format *ast_format_none; + ++/*! ++ * \brief Built-in "silk" format ++ */ ++struct ast_format *ast_format_silk8; ++struct ast_format *ast_format_silk12; ++struct ast_format *ast_format_silk16; ++struct ast_format *ast_format_silk24; ++ + /*! \brief Number of buckets to use for the media format cache (should be prime for performance reasons) */ + #define CACHE_BUCKETS 53 + +@@ -331,6 +339,10 @@ static void format_cache_shutdown(void) + ao2_replace(ast_format_t140_red, NULL); + ao2_replace(ast_format_t140, NULL); + ao2_replace(ast_format_none, NULL); ++ ao2_replace(ast_format_silk8, NULL); ++ ao2_replace(ast_format_silk12, NULL); ++ ao2_replace(ast_format_silk16, NULL); ++ ao2_replace(ast_format_silk24, NULL); + } + + int ast_format_cache_init(void) +@@ -426,6 +438,14 @@ static void set_cached_format(const char *name, struct ast_format *format) + ao2_replace(ast_format_t140, format); + } else if (!strcmp(name, "none")) { + ao2_replace(ast_format_none, format); ++ } else if (!strcmp(name, "silk8")) { ++ ao2_replace(ast_format_silk8, format); ++ } else if (!strcmp(name, "silk12")) { ++ ao2_replace(ast_format_silk12, format); ++ } else if (!strcmp(name, "silk16")) { ++ ao2_replace(ast_format_silk16, format); ++ } else if (!strcmp(name, "silk24")) { ++ ao2_replace(ast_format_silk24, format); + } + } + +diff --git a/main/rtp_engine.c b/main/rtp_engine.c +index 462d4c5..8d46bfd 100644 +--- a/main/rtp_engine.c ++++ b/main/rtp_engine.c +@@ -2198,6 +2198,11 @@ int ast_rtp_engine_init(void) + /* Opus and VP8 */ + set_next_mime_type(ast_format_opus, 0, "audio", "opus", 48000); + set_next_mime_type(ast_format_vp8, 0, "video", "VP8", 90000); ++ /* DA SILK */ ++ set_next_mime_type(ast_format_silk8, 0, "audio", "silk", 8000); ++ set_next_mime_type(ast_format_silk12, 0, "audio", "silk", 12000); ++ set_next_mime_type(ast_format_silk16, 0, "audio", "silk", 16000); ++ set_next_mime_type(ast_format_silk24, 0, "audio", "silk", 24000); + + /* Define the static rtp payload mappings */ + add_static_payload(0, ast_format_ulaw, 0); +@@ -2243,6 +2248,11 @@ int ast_rtp_engine_init(void) + add_static_payload(100, ast_format_vp8, 0); + add_static_payload(107, ast_format_opus, 0); + ++ add_static_payload(108, ast_format_silk8, 0); ++ add_static_payload(109, ast_format_silk12, 0); ++ add_static_payload(113, ast_format_silk16, 0); ++ add_static_payload(114, ast_format_silk24, 0); ++ + return 0; + } + +diff --git a/res/res_format_attr_silk.c b/res/res_format_attr_silk.c +index dcbbe4c..d52ec74 100644 +--- a/res/res_format_attr_silk.c ++++ b/res/res_format_attr_silk.c +@@ -40,7 +40,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") + * \note The only attribute that affects compatibility here is the sample rate. + */ + struct silk_attr { +- unsigned int samplerate; + unsigned int maxbitrate; + unsigned int dtx; + unsigned int fec; +@@ -54,10 +53,15 @@ static void silk_destroy(struct ast_format *format) + ast_free(attr); + } + ++static void attr_init(struct silk_attr *attr) ++{ ++ memset(attr, 0, sizeof(*attr)); ++} ++ + static int silk_clone(const struct ast_format *src, struct ast_format *dst) + { + struct silk_attr *original = ast_format_get_attribute_data(src); +- struct silk_attr *attr = ast_calloc(1, sizeof(*attr)); ++ struct silk_attr *attr = ast_malloc(sizeof(*attr)); + + if (!attr) { + return -1; +@@ -65,6 +69,8 @@ static int silk_clone(const struct ast_format *src, struct ast_format *dst) + + if (original) { + *attr = *original; ++ } else { ++ attr_init(attr); + } + + ast_format_set_attribute_data(dst, attr); +@@ -109,17 +115,17 @@ static void silk_generate_sdp_fmtp(const struct ast_format *format, unsigned int + ast_str_append(str, 0, "a=fmtp:%u maxaveragebitrate=%u\r\n", payload, attr->maxbitrate); + } + +- ast_str_append(str, 0, "a=fmtp:%u usedtx=%u\r\n", payload, attr->dtx); +- ast_str_append(str, 0, "a=fmtp:%u useinbandfec=%u\r\n", payload, attr->fec); ++ if (attr->dtx) { ++ ast_str_append(str, 0, "a=fmtp:%u usedtx=%u\r\n", payload, attr->dtx); ++ } ++ if (attr->fec) { ++ ast_str_append(str, 0, "a=fmtp:%u useinbandfec=%u\r\n", payload, attr->fec); ++ } + } + + static enum ast_format_cmp_res silk_cmp(const struct ast_format *format1, const struct ast_format *format2) + { +- struct silk_attr *attr1 = ast_format_get_attribute_data(format1); +- struct silk_attr *attr2 = ast_format_get_attribute_data(format2); +- +- if (((!attr1 || !attr1->samplerate) && (!attr2 || !attr2->samplerate)) || +- (attr1->samplerate == attr2->samplerate)) { ++ if (ast_format_get_sample_rate(format1) == ast_format_get_sample_rate(format2)) { + return AST_FORMAT_CMP_EQUAL; + } + +@@ -130,13 +136,10 @@ static struct ast_format *silk_getjoint(const struct ast_format *format1, const + { + struct silk_attr *attr1 = ast_format_get_attribute_data(format1); + struct silk_attr *attr2 = ast_format_get_attribute_data(format2); +- unsigned int samplerate; + struct ast_format *jointformat; + struct silk_attr *attr_res; + +- samplerate = attr1->samplerate & attr2->samplerate; +- /* sample rate is the only attribute that has any bearing on if joint capabilities exist or not */ +- if (samplerate) { ++ if (ast_format_get_sample_rate(format1) != ast_format_get_sample_rate(format2)) { + return NULL; + } + +@@ -145,22 +148,25 @@ static struct ast_format *silk_getjoint(const struct ast_format *format1, const + return NULL; + } + attr_res = ast_format_get_attribute_data(jointformat); +- attr_res->samplerate = samplerate; + +- /* Take the lowest max bitrate */ +- attr_res->maxbitrate = MIN(attr1->maxbitrate, attr2->maxbitrate); ++ if (!attr1 || !attr2) { ++ attr_init(attr_res); ++ } else { ++ /* Take the lowest max bitrate */ ++ attr_res->maxbitrate = MIN(attr1->maxbitrate, attr2->maxbitrate); + +- /* Only do dtx if both sides want it. DTX is a trade off between +- * computational complexity and bandwidth. */ +- attr_res->dtx = attr1->dtx && attr2->dtx ? 1 : 0; ++ /* Only do dtx if both sides want it. DTX is a trade off between ++ * computational complexity and bandwidth. */ ++ attr_res->dtx = attr1->dtx && attr2->dtx ? 1 : 0; + +- /* Only do FEC if both sides want it. If a peer specifically requests not +- * to receive with FEC, it may be a waste of bandwidth. */ +- attr_res->fec = attr1->fec && attr2->fec ? 1 : 0; ++ /* Only do FEC if both sides want it. If a peer specifically requests not ++ * to receive with FEC, it may be a waste of bandwidth. */ ++ attr_res->fec = attr1->fec && attr2->fec ? 1 : 0; + +- /* Use the maximum packetloss percentage between the two attributes. This affects how +- * much redundancy is used in the FEC. */ +- attr_res->packetloss_percentage = MAX(attr1->packetloss_percentage, attr2->packetloss_percentage); ++ /* Use the maximum packetloss percentage between the two attributes. This affects how ++ * much redundancy is used in the FEC. */ ++ attr_res->packetloss_percentage = MAX(attr1->packetloss_percentage, attr2->packetloss_percentage); ++ } + + return jointformat; + } +@@ -183,9 +189,7 @@ static struct ast_format *silk_set(const struct ast_format *format, const char * + } + attr = ast_format_get_attribute_data(cloned); + +- if (!strcasecmp(name, "sample_rate")) { +- attr->samplerate = val; +- } else if (!strcasecmp(name, "max_bitrate")) { ++ if (!strcasecmp(name, "max_bitrate")) { + attr->maxbitrate = val; + } else if (!strcasecmp(name, "dtx")) { + attr->dtx = val; +@@ -205,9 +209,7 @@ static const void *silk_get(const struct ast_format *format, const char *name) + struct silk_attr *attr = ast_format_get_attribute_data(format); + unsigned int *val; + +- if (!strcasecmp(name, "sample_rate")) { +- val = &attr->samplerate; +- } else if (!strcasecmp(name, "max_bitrate")) { ++ if (!strcasecmp(name, "max_bitrate")) { + val = &attr->maxbitrate; + } else if (!strcasecmp(name, "dtx")) { + val = &attr->dtx; +-- +1.7.9.5 Modified: branches/1.0/package/asterisk/asterisk-13-configure-menuselect-cross-fix.patch =================================================================== --- branches/1.0/package/asterisk/asterisk-13-configure-menuselect-cross-fix.patch 2016-07-21 21:45:19 UTC (rev 7770) +++ branches/1.0/package/asterisk/asterisk-13-configure-menuselect-cross-fix.patch 2016-07-22 13:51:37 UTC (rev 7771) @@ -1,6 +1,6 @@ --- asterisk-13.1.0/configure.ac.orig 2014-01-24 16:52:23.000000000 -0600 +++ asterisk-13.1.0/configure.ac 2014-01-24 16:55:14.000000000 -0600 -@@ -2630,11 +2630,13 @@ +@@ -2636,11 +2636,13 @@ AC_OUTPUT ${ac_cv_path_EGREP} 'CURSES|GTK2|OSARCH|NEWT' makeopts > makeopts.acbak2 Modified: branches/1.0/package/asterisk/asterisk-13-extension-changed-verbosity-chan_sip.patch =================================================================== --- branches/1.0/package/asterisk/asterisk-13-extension-changed-verbosity-chan_sip.patch 2016-07-21 21:45:19 UTC (rev 7770) +++ branches/1.0/package/asterisk/asterisk-13-extension-changed-verbosity-chan_sip.patch 2016-07-22 13:51:37 UTC (rev 7771) @@ -1,6 +1,6 @@ --- asterisk-11.17.1/channels/chan_sip.c.orig 2015-04-23 10:22:04.000000000 -0500 +++ asterisk-11.17.1/channels/chan_sip.c 2015-04-23 10:22:40.000000000 -0500 -@@ -17333,7 +17333,7 @@ +@@ -17351,7 +17351,7 @@ } if (!force) { Modified: branches/1.0/package/asterisk/asterisk.mk =================================================================== --- branches/1.0/package/asterisk/asterisk.mk 2016-07-21 21:45:19 UTC (rev 7770) +++ branches/1.0/package/asterisk/asterisk.mk 2016-07-22 13:51:37 UTC (rev 7771) @@ -7,9 +7,9 @@ ASTERISK_VERSION := 1.8.32.3 else ifeq ($(BR2_PACKAGE_ASTERISK_v11),y) -ASTERISK_VERSION := 11.22.0 +ASTERISK_VERSION := 11.23.0 else -ASTERISK_VERSION := 13.9.1 +ASTERISK_VERSION := 13.10.0 endif endif ASTERISK_SOURCE := asterisk-$(ASTERISK_VERSION).tar.gz Modified: branches/1.0/x86_64-configs/astlinux-ast13.config =================================================================== --- branches/1.0/x86_64-configs/astlinux-ast13.config 2016-07-21 21:45:19 UTC (rev 7770) +++ branches/1.0/x86_64-configs/astlinux-ast13.config 2016-07-22 13:51:37 UTC (rev 7771) @@ -150,7 +150,7 @@ # app_voicemail=IMAP_STORAGE - disabled (requires UW_IMAP) # # BR2_PACKAGE_ASTERISK_MENUSELECT is not set -# BR2_PACKAGE_ASTERISK_CODEC_SILK is not set +BR2_PACKAGE_ASTERISK_CODEC_SILK=y BR2_PACKAGE_ASTERISK_FOP2=y # BR2_PACKAGE_ASTERISK_GUI is not set BR2_PACKAGE_PHONEPROV_TOOLS=y This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |