<DIV>
<P>Hi Ross,<BR>we have added some classes to Live.com. You can find this files attached<BR>to this mail. This add allow to client to request OnDemand multicast<BR>stream through RTSP. All client requesting the same stream get the sema<BR>SDP description and will share this stream with the first client. New<BR>client who requests the same video after some delay (given to the<BR>createNew function as a parameter) gets a new instance of the video on a<BR>new RTPSink (so a new RTCP instance and a new SDP description) and so<BR>on...<BR>Basically we have added these classes :<BR>&nbsp;&nbsp; OnDemandMulticastServerMediaSubsession<BR>&nbsp;&nbsp; FileMulticastServerMediaSubsession<BR>&nbsp;&nbsp; MPEG2TransportFileMulticastServerMediaSubsession<BR>the OnDemandMulticastServerMediaSubsession:createNew function takes the<BR>multicast address, the RTP port, the env and a delay parameters. after<BR>this delay we change the RTPSink/RTCPInstance(this is a personnal<BR>requirment!!) and the client
 requesting this multicast stream after this<BR>delay get a new SDP description and get a new instance of the video all<BR>clients arriving within this delay share the same stream. The RTP port is<BR>incremented by 2 for each new multicast session (opened after the delay).<BR>we have also created new classes that implement createNewRTPSink and<BR>createNewStreamSource which is<BR>MPEG2TransportFileMulticastServerMediaSubsession class .<BR>We gave test this new feature by adding a new OndemanMulticastSession (for<BR>a mpeg2 TS) in the testOnDemandRTSPServer. And here is the add :<BR><BR>{<BR>&nbsp;&nbsp;&nbsp; char const* streamName = "mpeg2MulticastTSTest";<BR>&nbsp;&nbsp;&nbsp; char const* fileName = "test.ts";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned acceptedDelayTime = 60;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char* firstMulticastAddress = "232.255.42.42";<BR>&nbsp;&nbsp;&nbsp; //firstMulticastAddress[12]='\0';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 unsigned NumRTPPort = 6666;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *env &lt;&lt;"l'adresse utilisee est "&lt;&lt;firstMulticastAddress&lt;&lt;"\n";<BR>&nbsp;&nbsp;&nbsp; ServerMediaSession* sms<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = ServerMediaSession::createNew(*env, streamName, streamName,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; descriptionString);<BR><BR>&nbsp;&nbsp;&nbsp; sms-&gt;addSubsession(Mpeg2TransportFileMulticastServerMediaSubsession<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ::createNew(*env,&nbsp;&nbsp;&nbsp; acceptedDelayTime,firstMulticastAddress,<BR>NumRTPPort,fileName));<BR>&nbsp;&nbsp;&nbsp; rtspServer-&gt;addServerMediaSession(sms);<BR><BR>&nbsp;&nbsp;&nbsp; char* url =
 rtspServer-&gt;rtspURL(sms);<BR>&nbsp;&nbsp;&nbsp; *env &lt;&lt; "\n\"" &lt;&lt; streamName &lt;&lt; "\" stream, from the file \""<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; fileName &lt;&lt; "\"\n";<BR>&nbsp;&nbsp;&nbsp; *env &lt;&lt; "Play this stream using the URL \"" &lt;&lt; url &lt;&lt; "\"\n";<BR>&nbsp;&nbsp;&nbsp; delete[] url;<BR>}<BR><BR>Please check this and i'm waiting for your replay!!!<BR>Best regards<BR></P></DIV><p>
                <hr size=1> 
Découvrez le nouveau Yahoo! Mail : <font color="red">250 Mo d'espace</font> de stockage pour vos mails !<br><a href="http://fr.rd.yahoo.com/mail/taglines/*http://us.rd.yahoo.com/evt=25917/*http://us.rd.yahoo.com/mail_fr/mail_campaigns/splash/taglines_250/default/*http://fr.promotions.yahoo.com/mail/creer28.html">Créez votre Yahoo! Mail</a>