Dear Ross,<br> I am relatively new using the live555 libraries and sorry if my questions are too trivial. I read the FAQ especially the question which says how to modify test*Streamer application to read from a live audio or video. I wanted to modify testMPEG2TransportStreamer so that it can read from my buffers instead of a file.<br>
<br>I have tried piping and using files as mentioned in the FAQ but i dont have cotrol over the syncronization.<br><br> I intended to implement something like below....<br> <br> NewDeviceSource (which reads from the buffer containing *TS ) --> TransportStreamFramer --> sink( a simple RTP sink)<br>
<br>*TS = (MPEG2 Transport Stream 188 byte packets)<br><br> One question which i have is whether i have to also write a new Filter for TransportStreamFramer . I already have the MPEG2 transport stream packets in my buffer so i thought i need not write a new filter but instead use the exising TransportStreamFramer. <br>
<br>Also i have a doubt in the way i need to signal the arrival of new data to the event loop and i explain it below.<br><br>I used the watchVariable of the doEventloop and when ever its set i call <br>videoSink->startPlaying ( ).and i am not calling newDeviceSource->doGetNextFrame() because it needs to be framed by the TransportStreamFramer.<br>
<br>I dont know wether calling videoSink->startPlaying() is the correct way of signalling the new data.<br><br> i can clarify some of the points if its not clear.<br><br>best regards<br>Anand Meher.<br><br><br><br><br>
<br> <br><br><br><div class="gmail_quote">On Wed, Dec 3, 2008 at 2:46 PM, anand meher <span dir="ltr"><<a href="mailto:kvmsanand@gmail.com">kvmsanand@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi everyone,<br> I am developing software which is a multithreaded program and one thread requires the transport stream packets to be streamed from my data structures. I should also take care of mutual exclusion to the access of the data structure .I have created a new Device Source and implemented the doGetNextFrame() and deliverFrame() functions.<br>
<br>the doGetNextFrame() function reads from the data strcutres and calls the deliver frame function.<br>the deliverFrame function copies the data to fTo and then deletes the respective bytes from the data strucutre.<br>
<br>
//I have modelled the actual thread which streams along the lines of testMPEG2TransportStreamer.cpp<br><br><br><br><br>in the play() function i do the following steps<br><br>vectorSource = VectorDeviceSource::createNew(*env, g_packets_outputvector, g_packets_outputvectorlock,signal_vector);<br>
<br>//where vectorSource is the new Device Source i have created.<br><br>videoSource = MPEG2TransportStreamFramer::createNew(*env, vectorSource);<br> //then i create a videoSource for Framer and i pass theVectorSource object.<br>
<br>then i call <br><br>videoSink->startPlaying(*videoSource, afterPlaying, videoSink);<br><br><br><br><br>BUT my program some how does not work properly...<br><br>firslty it gets stuck in the deliverFrame() function always ....and uses lot of CPU and causes the other threads running to slow down as well.....<br>
<br>I read some of the posts of live555 and feared that may be the program is going to a infinite loop..so i tried using the watchVariable in the event loop , but even that did not work .....<br><br><br>1) it would be great if some can help me in what i am missing .....<br>
<br><br>i can claify if something is missing .........<br><br>Regards<br><font color="#888888">Anand.<br> <br><br><br><br> <br><br> <br>
</font></blockquote></div><br>