In r419044, we changed how formats were handled, but the return value
of the format_parse_sdp_fmtp functions in res_format_attr_opus and
res_format_attr_silk were not updated, causing calls to fail. Ran
into this when getting codec_opus working with Asterisk 13.
Once the return value was corrected, we were crashing in opus_getjoint
because of NULL format attributes. I've fixed this as well in this
patch.
Review: https://reviewboard.asterisk.org/r/4371/
........
Merged revisions 431267 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431268
65c4cc65-6c06-0410-ace0-
fbb531ad65f3
unsigned int spropstereo; /* Default 0 */
};
+static struct opus_attr default_opus_attr = {
+ .fec = 0,
+ .dtx = 0,
+ .stereo = 0,
+};
+
static void opus_destroy(struct ast_format *format)
{
struct opus_attr *attr = ast_format_get_attribute_data(format);
attr->dtx = val;
}
- return 0;
+ return cloned;
}
static void opus_generate_sdp_fmtp(const struct ast_format *format, unsigned int payload, struct ast_str **str)
struct ast_format *jointformat;
struct opus_attr *attr_res;
+ if (!attr1) {
+ attr1 = &default_opus_attr;
+ }
+
+ if (!attr2) {
+ attr2 = &default_opus_attr;
+ }
+
jointformat = ast_format_clone(format1);
if (!jointformat) {
return NULL;
attr->fec = val;
}
- return 0;
+ return cloned;
}
static void silk_generate_sdp_fmtp(const struct ast_format *format, unsigned int payload, struct ast_str **str)