diff options
author | Matt Jordan <mjordan@digium.com> | 2015-11-17 14:35:06 -0600 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2015-11-17 14:35:06 -0600 |
commit | e3cb27d341b5288c8845f9a4382c56cd867d93eb (patch) | |
tree | f26e6bbd653996193bcea122acdac917a012011d | |
parent | 6c10d30d0ec2c1c9effa0bd2f279d913aeaaee56 (diff) | |
parent | d8d3991390bcae96dd5e33c59dcfe17e9932b7d4 (diff) |
Merge "format: Register format-attribute module with cached formats." into 13
-rw-r--r-- | main/format.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/main/format.c b/main/format.c index 8ac82f0ed..5bf38dfb2 100644 --- a/main/format.c +++ b/main/format.c @@ -302,6 +302,14 @@ const void *ast_format_attribute_get(const struct ast_format *format, const char { const struct ast_format_interface *interface = format->interface; + if (!interface) { + struct format_interface *format_interface = ao2_find(interfaces, format->codec->name, OBJ_SEARCH_KEY); + if (format_interface) { + interface = format_interface->interface; + ao2_ref(format_interface, -1); + } + } + if (!interface || !interface->format_attribute_get) { return NULL; } @@ -330,11 +338,21 @@ struct ast_format *ast_format_parse_sdp_fmtp(const struct ast_format *format, co void ast_format_generate_sdp_fmtp(const struct ast_format *format, unsigned int payload, struct ast_str **str) { - if (!format->interface || !format->interface->format_generate_sdp_fmtp) { + const struct ast_format_interface *interface = format->interface; + + if (!interface) { + struct format_interface *format_interface = ao2_find(interfaces, format->codec->name, OBJ_SEARCH_KEY); + if (format_interface) { + interface = format_interface->interface; + ao2_ref(format_interface, -1); + } + } + + if (!interface || !interface->format_generate_sdp_fmtp) { return; } - format->interface->format_generate_sdp_fmtp(format, payload, str); + interface->format_generate_sdp_fmtp(format, payload, str); } struct ast_codec *ast_format_get_codec(const struct ast_format *format) |