<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=utf-8">
<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:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
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:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Folks:<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> [Editorial Aside – please tell me what is the
right mailing list to send this message to? I looked at the archive for <a
href="mailto:videolan-devel@videolan.org">videolan-devel@videolan.org</a> – and
it doesn’t look like real discussion happens there; there was some real
discussion on the streaming list].<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> I’ve noticed that when you try to play a rtsp
movie with VLC and read from Windows Media Server, there are problems detecting
the end of stream.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'>I’ve tested this with the 0.8.6f
build (on WinVista), and the 0.9 daily build trunk-20080514-0003 on Windows XP.<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'>This function was pretty badly
broken on the 0.9 daily builds (video just started and then dropped out
entirely), but as that’s unreleased, we’ll ignore that.<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'>But on 0.8.6f, it comes close to
working. It plays the video all the way though, but then fails to detect the
end of the video.<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'>Noodling around about with WireShark,
Windows Media Player (which of course plays the video just fine), and the VLC
0.8.6f source code, I’ve come to suspect the problem stems from how VLC (and
MSFT) handle End-Of-Stream detection.<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'>Looking a streams of packets from WireShark,
with WMP<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>Request: DESCRIBE
rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv RTSP/1.0\r\n<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>…..Supported:
com.microsoft.wm.srvppair, com.microsoft.wm.sswitch, com.microsoft.wm.eosmsg,
com.microsoft.wm.predstrm, com.microsoft.wm.startupprofile\r\n<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>Reply: RTSP/1.0 200 OK, with
session description<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTSP GET_PARAMETER
rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv RTSP/1.0<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTSP Reply: RTSP/1.0 200 OK<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>…Content-type:
application/x-rtsp-packetpair<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'><<< OK – now I think this
packetpair thing is a red-herring, but I’ll leave it in, just in case it’s
relevant>>><o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTSP SETUP
rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv/audio RTSP/1.0<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> …<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> Then a bit of video flies by…, and then I get:<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTP PT=Unknown (96),
SSRC=0x84A7C509, Seq=3112, Time=21713, Mark<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTP PT=Unknown (96),
SSRC=0x84A7C509, Seq=3113, Time=21733, Mark<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTSP Request: SET_PARAMETER
rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv RTSP/1.0\r\n<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>Content-type:
application/x-wms-extension-cmd<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>X-Notice:
2101 "End-of-Stream Reached"\r\n<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>RTP-Info:
url=rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv/audio;Seq=3116,
url=rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv/video;Seq=5632\r\n<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>RTP [TCP
Out-Of-Order] PT=Unknown (96), SSRC=0x84A7C509, Seq=3114, Time=21919, Mark<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> Reading between the lines, I inferred from the com.microsoft.wm.eosmsg
‘supported’ string means that WMS is using some non-standard way to signal
end-of-stream. Given that they aren’t complete idiots at MSFT (and a few other
hints I’ve gleaned from googling around), I infer that there must be some flaws
the default RTSP end-of-stream algorithm.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> And from the (significantly edited down)
sequence of RTSP/RTP packets, I inferred that when the client gets the ‘end-of-stream
reached’ message, it stops playing video.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> Now – there are lots of details I don’t
understand here about what MSFT is doing here, including why the end-of-stream
comes with an ‘RTPInfo’ indicating that its sent 3116 CSeq’s, but it has really
only sent 3113 (or 3114 if you count the one just after the RTSP packet).<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> Now, when I look at the WireShark output from
VLC </span></font><font size=2 face=Wingdings><span style='font-size:10.0pt;
font-family:Wingdings'>ß</span></font><font size=2 face=Wingdings><span
style='font-size:10.0pt;font-family:Wingdings'>à</span></font><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'> WMS, I see somewhat
similar exchanges at the beginning:<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTSP OPTIONS
rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv RTSP/1.0<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTSP Reply: RTSP/1.0 200 OK<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.5in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>Supported:
com.microsoft.wm.srvppair, com.microsoft.wm.sswitch, com.microsoft.wm.eosmsg,
com.microsoft.wm.fastcache, com.microsoft.wm.packetpairssrc,
com.microsoft.wm.startupprofile\r\n<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTSP DESCRIBE
rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv RTSP/1.0<br>
RTSP/SDP Reply: RTSP/1.0 200 OK, with session description<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTSP SETUP
rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv/audio RTSP/1.0<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTSP Reply: RTSP/1.0 200 OK<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTSP SETUP
rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv/video RTSP/1.0<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.5in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>Transport:
RTP/AVP;unicast;client_port=56518-56519<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>Reply: RTSP/1.0 461
Unsupported Transport<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTSP SETUP
rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv/video RTSP/1.0<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>Transport:
RTP/AVP/TCP;unicast;interleaved=0-1<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>RTSP Reply: RTSP/1.0 200 OK<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>Cache-Control:
x-wms-content-size=<b><span style='font-weight:bold'>836560</span></b>,
no-cache, no-user-cache, private\r\n<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'>….<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> A little video playing later<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> ….<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>RTP PT=Unknown
(96), SSRC=0x46B01221, Seq=22340, Time=21733, Mark<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>RTSP [TCP
Previous segment lost] SET_PARAMETER
rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv RTSP/1.0<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>Content-type:
application/x-wms-extension-cmd<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>X-Notice:
2101 "End-of-Stream Reached"\r\n<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>RTP-Info:
url=rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv/audio;Seq=33214,
url=rtsp://dev-wms.highwinds.com/abcdefgh/wms/pinball.wmv/video;Seq=22343\r\n<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>RTP [TCP
Out-Of-Order] PT=Unknown (96), SSRC=0x46B01221, Seq=22342, Time=22105, Mark<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> OK – at least with VLC – I got a little closer
on the sequence numbers ;-). I’m really new to this, so I’m not really sure
what to expect….<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> Anyhow – VLC did get the message. But it appears
to ignore it.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> Now – its time to turn to c-code spelunking ….<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> It appears the relevant bit of code would be in <b><span
style='font-weight:bold'>vlc-0.8.6f\modules\demux\live555.cpp</span></b>.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> In the routine static int Play( demux_t *p_demux
) we have:<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> if(
p_sys->i_timeout <= 0 )<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>
p_sys->i_timeout = 60; /* default value from RFC2326 */<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> /* start
timeout-thread only on x-asf streams (wms), it has rtcp support but doesn't<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> * seem to use it
for liveness/keep-alive, get_parameter seems to work for it. get_parameter<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> * doesn't work with
dss 5.5.4 & 5.5.5, they seems to work with rtcp */</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> This suggests to the naïve reader that you are
implementing a stream-end-detection strategy based on the rtcp keep-alive
mechanism.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> Then in the code:<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'>static int Demux(
demux_t *p_demux )<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> …<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-autospace:none'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>
<font color=green><span style='color:green'>/* Check if we need to send the
server a Keep-A-Live signal */<o:p></o:p></span></font></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-autospace:none'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>
<font color=blue><span style='color:blue'>if</span></font>(
p_sys->b_timeout_call && p_sys->rtsp && p_sys->ms )<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-autospace:none'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>
{<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-autospace:none'><font size=2
color=blue face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#if</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>
LIVEMEDIA_LIBRARY_VERSION_INT >= 1138089600<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-autospace:none'><font size=2
color=gray face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:gray'> char *psz_bye = NULL;<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-autospace:none'><font size=2
color=gray face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:gray'> p_sys->rtsp->getMediaSessionParameter( *p_sys->ms,
NULL, psz_bye );<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-autospace:none'><font size=2
color=blue face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#endif<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-autospace:none'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>
p_sys->b_timeout_call = VLC_FALSE;<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-autospace:none'><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>
}<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> I’m not really sure what this means
(my next steps are to get the live555 library and try debugging that too), but seemed
possibly relevant, given earlier comments about using RTP keep-alives to detect
the end of the stream.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> Not having the source for the live555 library, I
haven’t get figured out exactly how the vlc live555.c demux code gets
callbacks, but it appears maybe through the ‘Control’ function in demux\live555.c?
If so – the next question would be – is the underlying library catching this
End-Of-Stream message and passing it to the control function, which is ignoring
it? Or how do I fix the control library to look for this end of stream message.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> Of course, at this point, I still don’t’ know
QUITE enough to actually tell VLC about the end of stream – if I got the
message, but I think I’m getting close to that point.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> I’m anxious to collaborate with anyone else
interested in making VLC work properly with Windows Media Server to correct
this (and some related) problems.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> Thanks,<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'> Lewis.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
</div>
</body>
</html>