[Live-devel] MJPEG streaming over RTP using livemedia

Satheesh Ram satheesh at streamprocessors.com
Tue Mar 11 23:39:25 PDT 2008


Hi all,

Question#1
    I was referring to previous discussions in the live media archives 
for MJPEG Streaming through RTP using live. see here 
<http://lists.live555.com/pipermail/live-devel/2005-January/001908.html> 
and here 
<http://lists.live555.com/pipermail/live-devel/2003-November/000037.html>.Got 
the streamer up and running in real time (getting width and height from 
JPEG header; Qfactor from MJPEG encoder). I am using VLC as RTP client 
for receiving and playing back the streams. User-Agent: VLC media player 
(LIVE555 Streaming Media v2007.02.20). The issue is: *VLC player crashes 
*often with error messages like these
*[00000304] main decoder error: decoder is leaking pictures, resetting 
the heap
main error: decoder is leaking pictures, resetting the heap
live555 debug: tk->rtpSource->hasBeenSynchronizedUsingRTCP()
*Has anyone faced similar problems with MJPEG streaming over RTP? How to 
solve this problem?

Few notes on my implementation
- I have a created a class SPIJPEGVideoSource inheriting from abstract 
class JPEGVideoSource
- defined type, qfactor, width and height. (getting width and height 
from JPEG header; Qfactor from MJPEG encoder)
- Defined another class JPEGMediaSubsession : public 
OnDemandServerMediaSubsession with following function definitions
FramedSource* JPEGMediaSubsession::createNewStreamSource(unsigned 
clientSessionId, unsigned& estBitrate){
    FramedSource* framedSource = SPIJPEGVideoSource::createNew(envir(), 
clientSessionId, p_context);
    return framedSource;}
RTPSink* JPEGMediaSubsession::createNewRTPSink(Groupsock* rtpGroupsock, 
unsigned char rtpPayloadTypeIfDynamic, FramedSource* inputSource){
    return JPEGVideoRTPSink::createNew(envir(), rtpGroupsock);}
- In main jpeg streamer thread, I am creating objects of the following 
class in sequence: BasicTaskScheduler, BasicUsageEnvironment, 
RTSPServer, ServerMediaSession, JPEGMediaSubsession and adding 
JPEGMediaSubsession as subsession in server media session.and finally, 
lm->env->taskScheduler().doEventLoop();

Question#2
What is the difference in functionality of OnDemandServerMediaSubsession 
and PassiveServerMediaSubsession? I am using the doxygen documentation 
of livemedia to understand the classes, its members and their 
relationships. Can you point me to any other documentation on basic 
functionality of different classes in livemedia?

**

-- 
Satheesh Ram
Off. +91.80.41630270x25
Mob. +91.9945211181

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.live555.com/pipermail/live-devel/attachments/20080311/3d7eddef/attachment.html 


More information about the live-devel mailing list