<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=koi8-r"><meta name=Generator content="Microsoft Word 12 (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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-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.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:2.0cm 42.5pt 2.0cm 3.0cm;}
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=RU link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US>Hello.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Don’t know why but I cant post in my previous thread so I started another one.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>This is about the openrtsp/live555 problem on windows with the rtp over rtsp tcp channel.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I’ve done some debugging and put additional debug output to live555 on incoming data handling.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Take a look:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>…Skipped some RTSP related output…<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Received a complete PLAY response:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>RTSP/1.0 200 OK<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>CSeq: 6<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Session: d85<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Started playing session<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Receiving streamed data...<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=36<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=5<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=152<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#1 MultiFramedRTPSource::networkReadHandler1() before fillInData()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1432<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>RTPInterface::handleRead() curBytesRead=1432 bytesRead=1432 totBytesToRead=1432<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>RTPInterface::handleRead() fNextTCPReadSize=0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#2 MultiFramedRTPSource::networkReadHandler1() before processing RTP header<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#3 MultiFramedRTPSource::doGetNextFrame1()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#4 MultiFramedRTPSource::doGetNextFrame1() nextPacket != NULL<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=36<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=232<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#1 MultiFramedRTPSource::networkReadHandler1() before fillInData()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=232<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>RTPInterface::handleRead() curBytesRead=232 bytesRead=232 totBytesToRead=232<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>RTPInterface::handleRead() fNextTCPReadSize=0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#2 MultiFramedRTPSource::networkReadHandler1() before processing RTP header<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#3 MultiFramedRTPSource::doGetNextFrame1()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#4 MultiFramedRTPSource::doGetNextFrame1() nextPacket != NULL<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=36<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=5<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=152<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#1 MultiFramedRTPSource::networkReadHandler1() before fillInData()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1432<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>RTPInterface::handleRead() curBytesRead=1432 bytesRead=1432 totBytesToRead=1432<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>RTPInterface::handleRead() fNextTCPReadSize=0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#2 MultiFramedRTPSource::networkReadHandler1() before processing RTP header<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#3 MultiFramedRTPSource::doGetNextFrame1()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#4 MultiFramedRTPSource::doGetNextFrame1() nextPacket != NULL<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#5 MultiFramedRTPSource::doGetNextFrame1() after nextPacket->use() frameSize=1419 fFrameSize=1419<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#6 MultiFramedRTPSource::doGetNextFrame1() !fCurrentPacketCompletesFrame fFrameSize=1419 fMaxSize=262144<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=36<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=5<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=152<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#1 MultiFramedRTPSource::networkReadHandler1() before fillInData()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1432<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>RTPInterface::handleRead() curBytesRead=1432 bytesRead=1432 totBytesToRead=1432<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>RTPInterface::handleRead() fNextTCPReadSize=0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#2 MultiFramedRTPSource::networkReadHandler1() before processing RTP header<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#3 MultiFramedRTPSource::doGetNextFrame1()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#4 MultiFramedRTPSource::doGetNextFrame1() nextPacket != NULL<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#5 MultiFramedRTPSource::doGetNextFrame1() after nextPacket->use() frameSize=1418 fFrameSize=2837<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#6 MultiFramedRTPSource::doGetNextFrame1() !fCurrentPacketCompletesFrame fFrameSize=2837 fMaxSize=260725<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=36<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=5<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=1, buffer[0]=152<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#1 MultiFramedRTPSource::networkReadHandler1() before fillInData()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>readSocket()=44<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>RTPInterface::handleRead() curBytesRead=44 bytesRead=44 totBytesToRead=1432<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>RTPInterface::handleRead() fNextTCPReadSize=1388<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>fillInData() return false<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#3 MultiFramedRTPSource::doGetNextFrame1()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#1 MultiFramedRTPSource::networkReadHandler1() before fillInData()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#2 MultiFramedRTPSource::networkReadHandler1() before processing RTP header<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#3 MultiFramedRTPSource::doGetNextFrame1()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#1 MultiFramedRTPSource::networkReadHandler1() before fillInData()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#2 MultiFramedRTPSource::networkReadHandler1() before processing RTP header<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#3 MultiFramedRTPSource::doGetNextFrame1()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#1 MultiFramedRTPSource::networkReadHandler1() before fillInData()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#2 MultiFramedRTPSource::networkReadHandler1() before processing RTP header<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#3 MultiFramedRTPSource::doGetNextFrame1()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#1 MultiFramedRTPSource::networkReadHandler1() before fillInData()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#2 MultiFramedRTPSource::networkReadHandler1() before processing RTP header<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#3 MultiFramedRTPSource::doGetNextFrame1()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#1 MultiFramedRTPSource::networkReadHandler1() before fillInData()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#2 MultiFramedRTPSource::networkReadHandler1() before processing RTP header<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#3 MultiFramedRTPSource::doGetNextFrame1()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#1 MultiFramedRTPSource::networkReadHandler1() before fillInData()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#2 MultiFramedRTPSource::networkReadHandler1() before processing RTP header<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#3 MultiFramedRTPSource::doGetNextFrame1()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#1 MultiFramedRTPSource::networkReadHandler1() before fillInData()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#2 MultiFramedRTPSource::networkReadHandler1() before processing RTP header<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>… repeated until break…<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Looks like after the fillInData returns false its hang in some kind of loop and stop to receive any futher data.<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>Lets check the code of RTPInterdace::handleRead:<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>š } else {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš // Read from the TCP connection:<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš bytesRead = 0;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš unsigned totBytesToRead = fNextTCPReadSize;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš if (totBytesToRead > bufferMaxSize) totBytesToRead = bufferMaxSize;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš unsigned curBytesToRead = totBytesToRead;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš int curBytesRead;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš while ((curBytesRead = readSocket(envir(), fNextTCPReadStreamSocketNum,<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>šššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššš ššššš &buffer[bytesRead], curBytesToRead,<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>šššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššš ššššš fromAddress)) > 0) {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššššš bytesRead += curBytesRead;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššššš if (bytesRead >= totBytesToRead) break;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššššš curBytesToRead -= curBytesRead;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš }<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš fNextTCPReadSize -= bytesRead;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš if (fNextTCPReadSize == 0) {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššššš // We've read all of the data that we asked for<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššššš readSuccess = True;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš } else if (curBytesRead <= 0) {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššššš // There was an error reading the socket<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššššš bytesRead = 0;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššššš readSuccess = False;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš } else {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššššš // We need to read more bytes, and there was not an error reading the socket<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššššš packetReadWasIncomplete = True;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššššš return True;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš }<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>If I change <o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>šššš} else if (curBytesRead <= 0) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>to<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>ššš } else if (curBytesRead < 0) {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>openrtsp starts to working properly and receive data from stream. Is it a bug or I misunderstood something?<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>Thanks in advance.<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></body></html>