<p>George Joseph <strong>uploaded patch set #2</strong> to this change.</p><p><a href="https://gerrit.asterisk.org/c/asterisk/+/14577">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Streams: Add features for Advanced Codec Negotiation<br><br>The Streams API becomes the home for the core ACN capabilities.<br>These include...<br><br> * Parsing and formatting of codec negotation preferences.<br> * Resolving pending streams and topologies with those configured<br> using configured preferences.<br> * Utility functions for creating string representations of<br> streams, topologies, and negotiation preferences.<br><br>For codec negotiation preferences:<br> * Added ast_stream_codec_prefs_parse() which takes a string<br> representation of codec negotiation preferences, which<br> may come from a pjsip endpoint for example, and populates<br> a ast_stream_codec_negotiation_prefs structure.<br> * Added ast_stream_codec_prefs_to_str() which does the reverse.<br> * Added many functions to parse individual parameter name<br> and value strings to their respectrive enum values, and the<br> reverse.<br><br>For streams:<br> * Added ast_stream_create_resolved() which takes a "live" stream<br> and resolves it with a configured stream and the negotiation<br> preferences to create a new stream.<br> * Added ast_stream_to_str() which create a string representation<br> of a stream suitable for debug or display purposes.<br><br>For topology:<br> * Added ast_stream_topology_create_resolved() which takes a "live"<br> topology and resolves it, stream by stream, with a configured<br> topology stream and the negotiation preferences to create a new<br> topology.<br> * Added ast_stream_topology_to_str() which create a string<br> representation of a topology suitable for debug or display<br> purposes.<br> * Renamed ast_format_caps_from_topology() to<br> ast_stream_topology_get_formats() to be more consistent with<br> the existing ast_stream_get_formats().<br><br>Additional changes:<br> * ast_format_cap_get_names() now passes back "(null format)"<br> if the supplied format caps is NULL or "" if there was another<br> error. It always returns a valid string now. You can also<br> now pass NULL as the ast_str** and the function will allocate<br> an internal buffer for the response and automatically free it<br> when the format caps object is destroyed. Finally, if you do<br> pass in an ast_str**, the function now appends the results to<br> the buffer instead of replacing buffer contents. Handy for<br> prepending other identifying info to the ast_str.<br><br>Change-Id: I2df77dedd0c72c52deb6e329effe057a8e06cd56<br>---<br>M channels/chan_pjsip.c<br>A doc/CHANGES-staging/ACN_streams.txt<br>A doc/UPGRADE-staging/ACN_streams.txt<br>M include/asterisk/format_cap.h<br>M include/asterisk/stream.h<br>M main/channel.c<br>M main/core_unreal.c<br>M main/format_cap.c<br>M main/stream.c<br>M tests/test_format_cap.c<br>M tests/test_stream.c<br>11 files changed, 938 insertions(+), 13 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/77/14577/2</pre><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/14577">change 14577</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/asterisk/+/14577"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I2df77dedd0c72c52deb6e329effe057a8e06cd56 </div>
<div style="display:none"> Gerrit-Change-Number: 14577 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Friendly Automation </div>
<div style="display:none"> Gerrit-MessageType: newpatchset </div>