<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" 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 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:'
        panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Trebuchet MS";
        panose-1:2 11 6 3 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.apple-style-span
        {mso-style-name:apple-style-span;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Ahh, thanks for that. For reference, I guess it’s MAX_PACKET_SIZE in MultiFramedRTPSource.cpp, and all the file sinks by default?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">I'm not sure why I didn’t find that beforehand.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">The firmware in this camera uses GStreamer which is one of the big changes they were shouting about.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">I don’t know what prior versions were, but it didn’t identify itself.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Trebuchet MS",sans-serif;color:#5E5E5F">--
<o:p></o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:10.5pt;font-family:"Trebuchet MS",sans-serif;color:#5E5E5F">Deanna Earley |</span></b><span style="font-size:10.5pt;font-family:"Trebuchet MS",sans-serif;color:#5E5E5F"> Lead d</span><span style="font-size:10.5pt;font-family:"Trebuchet MS",sans-serif;color:#5E5E5F">eveloper <b>| </b></span><b><span lang="EN-US" style="font-size:10.5pt;font-family:"Trebuchet MS",sans-serif;color:black">icatcher</span></b><b><span lang="EN-US" style="font-size:10.5pt;font-family:"Trebuchet MS",sans-serif;color:#FF9223">cctv</span></b><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p> </o:p></span></b></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:9.0pt;font-family:"Trebuchet MS",sans-serif;color:#5E5E5F">w:
</span><u><span lang="EN-US" style="font-size:9.0pt;font-family:"Trebuchet MS",sans-serif;color:#595959"><a href="http://www.icode.co.uk/icatcher">www.icode.co.uk/icatcher</a></span></u><span lang="EN-US" style="font-size:9.0pt;font-family:"Trebuchet MS",sans-serif;color:#5E5E5F">
 | t: 01329 835335 | f: 01329 835338</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:7.5pt;font-family:"Trebuchet MS",sans-serif;color:#919191">Registered Office : 71 The Hundred, Romsey, SO51 8BZ. Company Number : 03428325</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> live-devel [mailto:live-devel-bounces@ns.live555.com]
<b>On Behalf Of </b>Ross Finlayson<br>
<b>Sent:</b> 15 April 2015 18:33<br>
<b>To:</b> LIVE555 Streaming Media - development & use<br>
<b>Subject:</b> Re: [Live-devel] Maximum interleaved RTP packet size<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">We have an open case with one of our RTSP source vendors where RTP streams over interleaved TCP seem to be throttled resulting in dropped frames in situations where the camera increases the frame size.<br>
This does not happen with UDP unicast.<br>
For reference, here's the video explaining the issue to the vendor:<br>
<a href="https://dl.dropboxusercontent.com/u/2931731/Bugs/Axis/501898/20150325_101155.mp4">https://dl.dropboxusercontent.com/u/2931731/Bugs/Axis/501898/20150325_101155.mp4</a><br>
<br>
The vendor's response suggests it could be a TCP flow control issue<o:p></o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">Another possibility is that the server (camera) is also using the “LIVE555 Streaming Media” software - but an old, buggy version that does not implement RTP packet writes to TCP sockets as an atomic action (either written entirely, or not
 written at all).  In this case it’s possible that - under congestion (when the server’s OS socket buffer fills up), partially-written (i.e., corrupted) RTP packets might get transmitted.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">You should investigate this possibility.  (Note that if the server manufacturer uses our libraries, then they are required under the LGPL to upgrade their product - upon request by their customers - to use the latest version of our libraries.)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">Is there a specific upper limit to the packet size that liveMedia's interleaved TCP implementation can handle?<o:p></o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">The ‘packet size’ field in the TCP framing header is 2-bytes long, so the theoretical maximum is 65535 bytes.  However, currently in the code there’s a hardwired limit of 20000 bytes (the size of the buffer used by the RTP source (i.e.,
 reception) implementation).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">It’s the BlockSize header.</span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">I didn’t think it was standard, but apparently:</span><span style="font-family:"&apos",serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:purple"><a href="https://tools.ietf.org/html/rfc2326#page-47">https://tools.ietf.org/html/rfc2326#page-47</a></span><span style="font-family:"&apos",serif"><o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">Interesting.  I wasn’t aware of this before.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">It’s allowed on all requests (bar </span><span style="font-size:11.0pt;font-family:"&apos",serif;color:#1F497D">OPTIONS</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> and </span><span style="font-size:11.0pt;font-family:"&apos",serif;color:#1F497D">TEARDOWN</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">)</span><span style="font-family:"&apos",serif"><o:p></o:p></span></p>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">Although it would seem to make sense only for “SETUP” and “PLAY”…<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Maybe it could be pulled from </span><span style="font-size:11.0pt;font-family:"&apos",serif;color:#1F497D">RTSPClient::responseBufferSize</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> automatically?</span><span style="font-family:"&apos",serif"><o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">No, that wouldn’t be right - even when streaming over TCP - because incoming RTP/RTCP packets aren’t delivered into the RTSPClient’s buffer.  (That buffer’s used only for incoming RTSP responses (or perhaps requests).)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I might, however, add a mechanism that will allow the client code to specify that it wants a specific incoming packet size, and then (if this option is set) include a “Blocksize:” header in its requests.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-style-span"><span style="font-family:"Helvetica",sans-serif;color:black">Ross Finlayson</span></span><span style="font-family:"Helvetica",sans-serif;color:black"><br>
<span class="apple-style-span">Live Networks, Inc.</span><br>
<span class="apple-style-span"><a href="http://www.live555.com/">http://www.live555.com/</a></span></span>
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</body>
</html>