diff options
author | Matt Jordan <mjordan@digium.com> | 2015-08-09 17:56:48 -0500 |
---|---|---|
committer | Matt Jordan <mjordan@digium.com> | 2015-08-10 12:47:56 -0500 |
commit | e188192ad10a8570785986a46666b91d7a448b75 (patch) | |
tree | 3c3a1302a88a18985501ca9fffc97f0ba37398c1 /main | |
parent | feffafbd554db9a41291ace567aaeffe5375c6f7 (diff) |
main/format: Add an API call for retrieving format attributes
Some codecs that may be a third party library to Asterisk need to have
knowledge of the format attributes that were negotiated. Unfortunately,
when the great format migration of Asterisk 13 occurred, that ability
was lost.
This patch adds an API call, ast_format_attribute_get, to the core
format API, along with updates to the unit test to check the new API
call. A new callback is also now available for format attribute modules,
such that they can provide the format attribute values they manage.
Note that the API returns a void *. This is done as the format attribute
modules themselves may store format attributes in any particular manner
they like. Care should be taken by consumers of the API to check the
return value before casting and dereferencing. Consumers will obviously
need to have a priori knowledge of the type of the format attribute as
well.
Change-Id: Ieec76883dfb46ecd7aff3dc81a52c81f4dc1b9e3
Diffstat (limited to 'main')
-rw-r--r-- | main/format.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/main/format.c b/main/format.c index bbfb69721..b9931e544 100644 --- a/main/format.c +++ b/main/format.c @@ -298,6 +298,17 @@ struct ast_format *ast_format_attribute_set(const struct ast_format *format, con return interface->format_attribute_set(format, name, value); } +const void *ast_format_attribute_get(const struct ast_format *format, const char *name) +{ + const struct ast_format_interface *interface = format->interface; + + if (!interface || !interface->format_attribute_get) { + return NULL; + } + + return interface->format_attribute_get(format, name); +} + struct ast_format *ast_format_parse_sdp_fmtp(const struct ast_format *format, const char *attributes) { const struct ast_format_interface *interface = format->interface; |