<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:Arial;}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:1531257749;
        mso-list-type:hybrid;
        mso-list-template-ids:-478668708 1683497466 134807555 134807557 134807553 134807555 134807557 134807553 134807555 134807557;}
@list l0:level1
        {mso-level-start-at:3;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Arial;
        mso-fareast-font-family:"Times New Roman";}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
-->
</style>

</head>

<body lang=EN-GB link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>Developers,
(Olle),<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>&nbsp;
I posted a couple of months or so ago about better video support in chan_sip1 to
which KevinF gave some good advice: go have a go.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>&nbsp;
Well I&#8217;ve got round to having a go and wanted to get some input on ideas
and issues, sorry in advance for the length of the email. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>&nbsp;
I know that many of you consider video to be of limited interest at the moment
but we make a business out of it </span></font><font face=Wingdings><span
style='font-family:Wingdings'>J</span></font> with about 50% of our customers
wanting to use Asterisk as their preferred switch solution and who are disappointed
when they try it. So if nothing else we need to implement some changes for us
and our customers &#8211; though I&#8217;d rather have this adopted and supported
in mantis.<o:p></o:p></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>&nbsp;
The description below is my view on the matter &#8211; coming from a very video
centric H.32x world. Please don&#8217;t take my suggestions as doctrine, they&#8217;re
up for debate and for me to be educated on the wider world </span></font><font
face=Wingdings><span style='font-family:Wingdings'>J</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>The
decisions that I need to make are:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>- How
to support call bandwidth management.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>- How
to support video capabilities management.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>The
Problem:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>------------------<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>1. Bandwidth<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>Sip
UAs that support video have the capacity to clog up a low capacity network such
as a xDSL/cable connection. They therefore need to be set up correctly for any particular
network. This is possible at the end point by restricting bitrates when working
point-to-point but doesn&#8217;t work so well with Asterisk as it stands -
Asterisk doesn&#8217;t declare any call bandwidth or video capabilities and so
a UA has to guess at Asterisk&#8217;s and the remote codecs cap &#8211; and can
get it very wrong.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>Asterisk
has no support for a UA to have it&#8217;s video bandwidth restricted in
accordance with any centralised policy (as implemented by the Asterisk manager),
unlike audio bandwidth management which is achieved by codec choice.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>With
no bandwidth support an unsuspecting user may be able to instigate a high
bandwidth call on a low bandwidth connection and a) experience a poor quality
call while the UA tries to ascertain the available bandwidth and b) unwittingly
swamp the connection. This is not a problem with SoftSwitches from the big
boys: Cisco, Huawei, etc and needn&#8217;t cause Asterisk users any problems
either. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>2.
Resolution<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>While
video resolution is not going to cause problems with network congestion it can
cause incompatibilities between endpoints if not properly configured. Most
endpoints support CIF and QCIF resolutions, but we&#8217;re moving into an HD
age and 4CIF, 16CIF and H.264 HD resolutions will crash some of the UAs out
there at the moment.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>3.
Framerate<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>A
similar problem to 2 above &#8211; some endpoints can be crashed by sending
them video of a higher frame rate than they can support.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>4. In
Call Bandwidth Management<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>During
a call on a constricted network a UA needs to co-operate with the network so as
to be sensitive to other traffic. If a home worker tries to make a &#8220;near
capacity&#8221; video call on a DSL/cable connection and they then have other traffic
come in on the network during the call (such as an incoming email): the other
traffic (usually TCP) tries to grab all the bandwidth and will degrade the
video/audio call. To reduce the effects of this, the video channel must &#8220;throttle-back&#8221;
to reduce packet loss. The best standards based way of doing this is with RTCP &#8211;
thanks to vechers and sb for the work they&#8217;ve done on this. RTCP is
nearly there with Asterisk and I don&#8217;t propose we need to do anything
more on this for the moment - other than perhaps to say that the RTCP RFCs
suggest that RTCP should be about 5% of traffic in order to control a channel
correctly&#8230; that means a lot more often than every 5 seconds for a video
call.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>It
needn&#8217;t be this way with SIP and I propose we fix this in chan_sip1 with
the hope that this can be rolled forwards into future versions.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>The
SIP Solution<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>------------------------<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>While
I don&#8217;t think they are ratified, most video UAs support the draft RFCs: <o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><font
size=2 face=Arial><span style='font-size:10.0pt'><span style='mso-list:Ignore'>-<font
size=1 face="Times New Roman"><span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></span></span></font><![endif]>levin-mmusic-xml-media-control-02
- INFO fast updates and <o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><font
size=2 face=Arial><span style='font-size:10.0pt'><span style='mso-list:Ignore'>-<font
size=1 face="Times New Roman"><span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></span></span></font><![endif]>koskelainen-sdp263-02 - H263 fmtp
options<o:p></o:p></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>Ideally
video channel bandwidths should propagate through from one endpoint&#8217;s
capability to the far end&#8217;s capability - a video call should be made at
the lowest common capability.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>Chan_sip
currently (sort of) supports video and I was pleased to see the support that is
in there (chan_h323 still has some way to go but I&#8217;m working on that
too).<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>Possible
Asteisk Implementation<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>-----------------------------------------------<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>So
how do we add these features to chan_sip1<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>Call
bandwidth:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>Add &nbsp;&nbsp;&#8216;maxcallbandwidth=x&#8217;
&nbsp;into [general] and [peer/user/friend] sections of sip.conf ?<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>This
will be translated into &#8216;b=CT:x/r/n&#8217; in a sip header. I&#8217;d
also propose that this is only added if it&#8217;s a video call.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>(I
have this working on a 1.2 build along with all the sip show peer/user stuff on
the cli)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>Resolution
and Frame Rate:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>Support
&#8220;a=fmtp:&#8230;&#8221; along the same lines as &#8220;a=rtpmap&#8230;&#8221;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>For
those of you that haven&#8217;t looked at fmtp before a declaration looks a bit
like:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>a=fmtp:34
4CIF=2 CIF=1 QCIF=1 SQCIF=1 MaxBR=3840\r\n<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>I
guess there are a number of options on how this should be implemented:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>1.
Add sip.conf entries for each resolution, framerate, and bitrate<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>This
doesn&#8217;t allow H.263 to be different to H.261 or H.264. Which they often
are.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>2.
Add optional sip.conf entries for &#8216;allow=h26x&#8217;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>I
like this solution and it could come in a number of different forms, for example:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>a) allow=h263,
&#8220;4CIF=2 CIF=1 QCIF=1 SQCIF=1 MaxBR=3840\r\n&#8221;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>b) allow=h263,
4cif=2, cif=1, qcif=1, sqcif=1, maxbr=3840<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>c) allow=h263,
maxmbps=23760,maxfsmb=1584, minfsmb=48, minmbps=1440, maxbr=3840<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>The
three above are equivalent as may be recognised by those of you that are H.264 aficionados.
I&#8217;d prefer either &#8216;b&#8217; or &#8216;c&#8217; but I can see that
these may not be as palatable to Asterisk managers that don&#8217;t know a
great deal about video &#8211; though I think that comes down to their video UA
provider giving them the right recipe.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>In
development terms it will be easier to do &#8216;a&#8217; and more difficult to
do &#8216;c&#8217;. &#8216;b&#8217; is about in the middle, I think. However, &#8216;c&#8217;
is more flexible and would be easier to support for H.264 and is less protocol
specific if we end up putting support into struct ast_channel.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>I
guess that all these settings really need to be propagated between channels and
appropriate variables should be added to the ast_channel structure so that IAX
and H323 can set video capabilities dependant on the lowest capable UA, even
across different protocols.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>Still
to be thought about<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>----------------------------------<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>- Dynamic
rtp payload support for H.264 and sequence/picture parameter definitions<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>- How
to reflect these changes into H.323 and IAX<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>-
Other fast update mechanisms (the H.261 RTP FU for instance)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'>Thanks
in advance for your input, John<br>
<br>
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></p>

</div>

</body>

</html>