<div dir="ltr">I found a bug in the start code implementation. I noticed some artifacts in the MPEG-TS video output and ffprobe analysis showed some errors with the I and P frames suggesting the NAL units were corrupted. Through further hexdump analysis I noticed the last 4 bytes of every NAL unit inside the TS packets were missing. Just as a test I added the following line and the ffprobe errors went away and the hexdump showed the 4 bytes restored. I removed the line after testing.<div><br></div><div>diff --git a/src/liveMedia/H264or5VideoStreamDiscreteFramer.cpp b/src/liveMedia/H264or5VideoStreamDiscreteFramer.cpp<br>index c2de4e8..d041c15 100644<br>--- a/src/liveMedia/H264or5VideoStreamDiscreteFramer.cpp<br>+++ b/src/liveMedia/H264or5VideoStreamDiscreteFramer.cpp<br>@@ -78,6 +78,7 @@ void H264or5VideoStreamDiscreteFramer<br>     nal_unit_type = 0xFF;<br>   }<br> <br>+    frameSize += 4;<br>   // Begin by checking for a (likely) common error: NAL units that (erroneously) begin with a<br>   // 0x00000001 or 0x000001 'start code'.  (Those start codes should only be in byte-stream data;<br>   // *not* data that consists of discrete NAL units.)<br></div><div><br></div><div>I am using a subclass of H264VideoStreamDiscreteFramer to inject additional NAL units into the TS stream, so I applied the fix there instead of modifying the LIVE555 source code. Do you see any issues with this approach? Even if you patch the LIVE555 source code I would still need to adjust frameSize to account for the NAL units I am inserting into the stream.</div><div><br></div><div>void ROCH264VideoStreamDiscreteFramer::afterGettingFrame1(unsigned frameSize,<br>        unsigned numTruncatedBytes, struct timeval presentationTime,<br>        unsigned durationInMicroseconds)<br>{<br>    // ... code to add specific NAL units here ...</div><div><br>    frameSize += sizeof (start_code);<br>    frameSize += sizeof (specific_NAL_units);<br><br>    H264or5VideoStreamDiscreteFramer::afterGettingFrame1(frameSize,<br>            numTruncatedBytes, presentationTime, durationInMicroseconds);<br>}<br></div><div><br></div><div>Thanks,</div><div>Chris</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, May 14, 2019 at 11:30 AM Ross Finlayson <<a href="mailto:finlayson@live555.com">finlayson@live555.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
> On May 14, 2019, at 10:07 AM, Chris Paucar <<a href="mailto:chris.paucar@roc-connect.com" target="_blank">chris.paucar@roc-connect.com</a>> wrote:<br>
> <br>
> Have there been any recent changes to the TS part of the LIVE555?<br>
<br>
No.<br>
<br>
<br>
Ross Finlayson<br>
Live Networks, Inc.<br>
<a href="http://www.live555.com/" rel="noreferrer" target="_blank">http://www.live555.com/</a><br>
<br>
<br>
_______________________________________________<br>
live-devel mailing list<br>
<a href="mailto:live-devel@lists.live555.com" target="_blank">live-devel@lists.live555.com</a><br>
<a href="http://lists.live555.com/mailman/listinfo/live-devel" rel="noreferrer" target="_blank">http://lists.live555.com/mailman/listinfo/live-devel</a><br>
</blockquote></div>