mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 20:04:50 +00:00
media formats: update res_format_attr_opus & silk
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
This commit is contained in:
@@ -51,6 +51,12 @@ struct opus_attr {
|
||||
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);
|
||||
@@ -120,7 +126,7 @@ static struct ast_format *opus_parse_sdp_fmtp(const struct ast_format *format, c
|
||||
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)
|
||||
@@ -163,6 +169,14 @@ static struct ast_format *opus_getjoint(const struct ast_format *format1, const
|
||||
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;
|
||||
|
@@ -94,7 +94,7 @@ static struct ast_format *silk_parse_sdp_fmtp(const struct ast_format *format, c
|
||||
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)
|
||||
|
Reference in New Issue
Block a user