<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:arial,helvetica,sans-serif;font-size:10pt"><div style="font-family: arial,helvetica,sans-serif; font-size: 10pt;">hi,<br><br>i try to stream jpeg image files as multicast to 239.255.42.42 but vlc can show the pictures in the report i can read this errors <br><br><span style="font-weight: bold;">ps warning: found sync code</span><br style="font-weight: bold;"><span style="font-weight: bold;">ps warning: garbage at input, trying to resync...</span><br><br>i don´t know what are missing in the streaming.<br><br>i think i don´t need "ByteStreamFileSource"&nbsp; to open the file as a byte stream but open the file also stream like this<br><br><span style="font-weight: bold;">m_ImageSource = ImageSource::createNew(*m_Env, pFileName, timeToDisplay);</span><br style="font-weight: bold;"><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; if
 (m_ImageSource == NULL) {</span><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *m_Env &lt;&lt; "Unable to open file \"" &lt;&lt; pFileName</span><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;&lt; "\" as a byte-stream file source\n";</span><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return FALSE;</span><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; }</span><br style="font-weight: bold;"><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; // Finally, start playing ---------------------------------</span><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp; *m_Env &lt;&lt; "Beginning streaming image...\n";</span><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp;
 m_ImageSink-&gt;startPlaying(*m_ImageSource, OnEndShowImage, this);</span><br><br>thanks for a tips or ideas.<br>Armando<br><br><br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">----- Message d'origine ----<br>De : Armando Ko &lt;armandopoulos@yahoo.fr&gt;<br>À : live-devel@ns.live555.com<br>Envoyé le : Mardi, 13 Février 2007, 16h51mn 36s<br>Objet&nbsp;: [Live-devel] help -- Streaming RTP/JPEG Multicast<br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><div>hi Ross,<br><br>i try to stream jpeg Files as RTP Multicast with the live555. But&nbsp; i can stream&nbsp; the jpegfiles but the vlc cannot see them and with wireshark i can see the jpeg frames they are sending, also here is my test program for do it.<br><br>i would be very happy, if you can give me some tips or what is wrong in my code.<br><br>The ImageSource is a subclass of&nbsp; JPEGVideoSource where i define this
 methodes<br>&nbsp;<br><span style="font-weight: bold;">createNew(UsageEnvironment&amp; env, char const* fileName, unsigned viewTime);</span><br style="font-weight: bold;"><span style="font-weight: bold;">// redefined virtual functions:</span><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; virtual void doGetNextFrame();</span><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; virtual u_int8_t type();</span><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; virtual u_int8_t qFactor();</span><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; virtual u_int8_t width();</span><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; virtual u_int8_t height();</span><br style="font-weight: bold;"><span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; virtual u_int8_t const* quantizationTables(u_int8_t&amp; precision,
 u_int16_t&amp; length);</span><br><br>here is my testprogramm (see attachment)<br><br> thanks<br><br>Armando<br><br></div></div><br>
                <hr size="1"> 
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions ! 
Profitez des connaissances, des opinions et des expériences des internautes sur <a rel="nofollow" target="_blank" href="http://fr.rd.yahoo.com/evt=42054/*http://fr.answers.yahoo.com">Yahoo! Questions/Réponses</a>.<div><br>UsageEnvironment* env;<br>char const* inputFileName = "test.jpeg";<br>ImageSource* ImageSource;<br>JPEGVideoRTPSink* ImageSink;<br><br>void play(); // forward<br><br>int main(int argc, char** argv) {<br><br>// Begin by setting up our usage environment:<br>&nbsp;&nbsp;&nbsp; TaskScheduler* scheduler = BasicTaskScheduler::createNew();<br>&nbsp; &nbsp;&nbsp; m_Env = BasicUsageEnvironment::createNew(*scheduler);<br><br>&nbsp;&nbsp;&nbsp; // Create 'groupsocks' for RTP and RTCP:<br>&nbsp;&nbsp;&nbsp; char* destinationAddressStr = "239.255.42.42";<br>&nbsp;&nbsp;&nbsp; const unsigned short rtpPortNum = 1234;<br>&nbsp;&nbsp;&nbsp; const unsigned short rtcpPortNum = rtpPortNum+1;<br>&nbsp;&nbsp;&nbsp; const unsigned char ttl = 7; // low, in case routers don't
 admin scope<br>&nbsp;&nbsp; <br>&nbsp; &nbsp; struct in_addr destinationAddress;<br>&nbsp;&nbsp;&nbsp; destinationAddress.s_addr = our_inet_addr(destinationAddressStr);<br>&nbsp;&nbsp;&nbsp; const Port rtpPort(rtpPortNum);<br>&nbsp;&nbsp;&nbsp; const Port rtcpPort(rtcpPortNum);<br>&nbsp;&nbsp;&nbsp; Groupsock rtpGroupsock(*env, destinationAddress, rtpPort, ttl);<br>&nbsp;&nbsp;&nbsp; Groupsock rtcpGroupsock(*env, destinationAddress, rtcpPort, ttl);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; ImageSink = JPEGVideoRTPSink::createNew(*m_Env, rtpGroupsock);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;// Create (and start) a 'RTCP instance' for this RTP sink:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const unsigned estimatedSessionBandwidth = 5000; // in kbps; for RTCP b/w share<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const unsigned maxCNAMElen = 100;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned char CNAME[maxCNAMElen+1];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gethostname((char*)CNAME,
 maxCNAMElen);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CNAME[maxCNAMElen] = '\0'; // just in case<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RTCPInstance::createNew(*m_Env,m_rtcpGroupsock,<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; estimatedSessionBandwidth, CNAME,<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; ImageSink, NULL /* we're a server */,/*isSSM*/false);<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;  <br>// Finally, start the streaming:<br>&nbsp; *env &lt;&lt; "Beginning streaming...\n";<br><br>&nbsp; play();<br><br>&nbsp; env-&gt;taskScheduler().doEventLoop(); // does not return<br>&nbsp; return 0; //
 only to prevent compiler warning<br>}<br><br><br><br>void afterPlaying(void* /*clientData*/) {<br><br>&nbsp;&nbsp;*env &lt;&lt; "...done reading from file\n";<br>&nbsp; Medium::close(ImageSource);<br>&nbsp; // Note that this also closes the input file that this source read from.<br>&nbsp; play();<br>}<br><br>void play() {<br>&nbsp;&nbsp;&nbsp; //----------- Create a framer for the image elementary Stream---------<br>&nbsp;&nbsp;&nbsp; m_ImageSource = ImageSource::createNew(*m_Env, inputFileName, timeToDisplay); //timeToDisplay<br>&nbsp;&nbsp;&nbsp; if (m_ImageSource == NULL) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *m_Env &lt;&lt; "Unable to open file \"" &lt;&lt; inputFileName<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "\" as a byte-stream file source\n";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return FALSE;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; // Finally, start playing ---------------------------------<br>&nbsp;&nbsp;
 *m_Env &lt;&lt; "Beginning streaming image...\n";<br>&nbsp;&nbsp;&nbsp;&nbsp; m_ImageSink-&gt;startPlaying(*m_ImageSource, afterPlaying, ImageSink);<br><br>}</div><div>_______________________________________________<br>live-devel mailing list<br>live-devel@lists.live555.com<br><a target="_blank" href="http://lists.live555.com/mailman/listinfo/live-devel">http://lists.live555.com/mailman/listinfo/live-devel</a><br></div></div><br></div></div><br>
                <hr size="1"> 
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions ! 
Profitez des connaissances, des opinions et des expériences des internautes sur <a href="http://fr.rd.yahoo.com/evt=42054/*http://fr.answers.yahoo.com">Yahoo! Questions/Réponses</a>.</body></html>