<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:"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:"Segoe UI";
panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
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-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi Team, <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This is continuation of my earlier post (<a href="https://www.mail-archive.com/live-devel@lists.live555.com/msg15406.html">https://www.mail-archive.com/live-devel@lists.live555.com/msg15406.html</a>).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Frames sending as multiple slices is good, because it makes stream more resilient to packet loss.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Though decoders are able to decode the slice of a frame, our recording system needs to write a full I/P frame(not a partial frame).
<o:p></o:p></p>
<p class="MsoNormal">Because during playback of these recordings client will get these recordings as list of GOPs, if we save these recording as is example 5 FPS data is saved as 10 frames(I1I1P2P2P3P3P4P4P5P5) in two GOPs(GOP1 => I1, GOP2 => I2P2P2 P3P3P4P4P5P5).<o:p></o:p></p>
<p class="MsoNormal">Also sometimes we play only I frame / alternate I frames / every 4<sup>th</sup> I Frame, these logics also getting affected because of this.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We have done changes in our application code in the live555 callback function
<b><i>H265BufferSink::afterGettingFrame()</i></b><o:p></o:p></p>
<p class="MsoNormal">We are getting the marker bit value <b><i>Boolean rtpMarkerBit = fSource->curPacketMarkerBit();</i></b><o:p></o:p></p>
<p class="MsoNormal">Only if it is true(set to 1), we will consider as last frame received and write the buffered data to file system, till then we will be keep on appending the data to a buffer.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We checked the RFC(<a href="https://www.ietf.org/rfc/rfc3550.txt">https://www.ietf.org/rfc/rfc3550.txt</a>,
<a href="https://www.ietf.org/rfc/rfc3551.txt">https://www.ietf.org/rfc/rfc3551.txt</a>), it says that
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#161616;background:white">
</span><b><i>“In video streams, the marker bit MUST be one for the last packet sent for each <a href="https://learn.microsoft.com/en-us/openspecs/office_protocols/ms-rtp/ba0d6cb2-f11f-4fd4-b08b-2ee9151067f8#gt_74615d14-4462-4a5c-a4aa-73b8cea35d5e"><span style="color:windowtext;text-decoration:none">video
frame</span></a>, and zero for all other packets”.</i></b><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Is this implementation of merging multiple slices of data into a single frame is correct ?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Please share your input.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks and Regards,<o:p></o:p></p>
<p class="MsoNormal">Ranjith<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>