<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Apr 29, 2014 at 6:55 AM, Joshua Colp <span dir="ltr"><<a href="mailto:jcolp@digium.com" target="_blank">jcolp@digium.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Matthew Jordan wrote:<br>
<br>
<snip><div class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<snip><br>
<br>
<br>
    The ability to set the framing per-format, globally in a<br>
    capabilities structure, and to get the framing already exists. What<br>
    doesn't exist is adding a format and then setting the framing as two<br>
    separate API calls. That is something that could be added but to<br>
    make sure you set the right format (format capabilities can contain<br>
    multiple formats of the same codec) you have to keep that format<br>
    around, in which case why not just add/set in the same API call?<br>
<br>
<br>
We may end up needing that API call sometime down the road. For example,<br>
if an Offer arrives with a new ptime attribute, it may be easier to<br>
modify an existing ast_format_cap structure rather than create a new<br>
one. But currently I just need the packetization values.<br>
</blockquote>
<br></div>
Since ptime in SIP applies to the media stream (and not to a specific media format) you can actually set a global framing value using ast_format_cap_set_framing. This applies to all media formats within a capabilities structure, unless one is specified for the format explicitly.<div class="">
<br></div></blockquote><div><br></div><div>Yup. That's why I was thinking that ast_format_cap is the most logical place to store it.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class="">
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
What API call provides them? I must be missing it, because I couldn't<br>
seem to find it in format_cap.h. (I could be just going crazy however)<br>
</blockquote>
<br></div>
For getting them you use ast_format_cap_get_framing.<div class=""><div class="h5"><br clear="all"></div></div></blockquote><div><br></div><div>So something like:<br><br><span style="font-family:courier new,monospace">    read_ptime0 = ast_format_cap_get_framing(cap0, ast_channel_rawreadformat(c0->chan));<br>
    read_ptime1 = ast_format_cap_get_framing(cap1, ast_channel_rawreadformat(c1->chan));<br>    write_ptime0 = ast_format_cap_get_framing(cap0, ast_channel_rawwriteformat(c0->chan));<br>    write_ptime1 = ast_format_cap_get_framing(cap1, ast_channel_rawwriteformat(c1->chan));</span><br>
<br></div><div>My concern here is that the capabilities are obtained from the channel driver via the get_codec callbacks. I'm not sure that's correct, since the previous approach got the codecs from the rtp instance via ast_rtp_instance_get_codecs. However, as that is an AST_VECTOR of ast_formats, there's not a clean way to turn that into an ast_format_cap.<br>
<br></div><div>Do we need a call that turns the vector of formats into a capabilities structure? Or is what comes back from the get_codecs callback sufficient?<br></div></div><br>-- <br><div dir="ltr"><div>Matthew Jordan<br>
</div><div>Digium, Inc. | Engineering Manager</div><div>445 Jan Davis Drive NW - Huntsville, AL 35806 - USA</div><div>Check us out at: <a href="http://digium.com" target="_blank">http://digium.com</a> & <a href="http://asterisk.org" target="_blank">http://asterisk.org</a></div>
</div>
</div></div>