Streams: Add features for Advanced Codec Negotiation
authorGeorge Joseph <gjoseph@digium.com>
Fri, 26 Jun 2020 16:14:58 +0000 (10:14 -0600)
committerFriendly Automation <jenkins2@gerrit.asterisk.org>
Wed, 1 Jul 2020 14:27:14 +0000 (09:27 -0500)
commit8d1064eaafe899044adbd30a40cdaa15c315c463
treead3ef80a42cb4bf4d4c5e5317ec6e4a2e1402228
parent7440fd03970d831a5db80c740349b30efe5f283e
Streams:  Add features for Advanced Codec Negotiation

The Streams API becomes the home for the core ACN capabilities.
These include...

 * Parsing and formatting of codec negotation preferences.
 * Resolving pending streams and topologies with those configured
   using configured preferences.
 * Utility functions for creating string representations of
   streams, topologies, and negotiation preferences.

For codec negotiation preferences:
 * Added ast_stream_codec_prefs_parse() which takes a string
   representation of codec negotiation preferences, which
   may come from a pjsip endpoint for example, and populates
   a ast_stream_codec_negotiation_prefs structure.
 * Added ast_stream_codec_prefs_to_str() which does the reverse.
 * Added many functions to parse individual parameter name
   and value strings to their respectrive enum values, and the
   reverse.

For streams:
 * Added ast_stream_create_resolved() which takes a "live" stream
   and resolves it with a configured stream and the negotiation
   preferences to create a new stream.
 * Added ast_stream_to_str() which create a string representation
   of a stream suitable for debug or display purposes.

For topology:
 * Added ast_stream_topology_create_resolved() which takes a "live"
   topology and resolves it, stream by stream, with a configured
   topology stream and the negotiation preferences to create a new
   topology.
 * Added ast_stream_topology_to_str() which create a string
   representation of a topology suitable for debug or display
   purposes.
 * Renamed ast_format_caps_from_topology() to
   ast_stream_topology_get_formats() to be more consistent with
   the existing ast_stream_get_formats().

Additional changes:
 * A new function ast_format_cap_append_names() appends the results
   to the ast_str buffer instead of replacing buffer contents.

Change-Id: I2df77dedd0c72c52deb6e329effe057a8e06cd56
channels/chan_pjsip.c
doc/CHANGES-staging/ACN_streams.txt [new file with mode: 0644]
doc/UPGRADE-staging/ACN_streams.txt [new file with mode: 0644]
include/asterisk/format_cap.h
include/asterisk/stream.h
main/channel.c
main/core_unreal.c
main/format_cap.c
main/stream.c
tests/test_stream.c