Are you trying to implement a RTSP server that serves (transmits) metadata from 
some local source?  If so, then you don’t call "SimpleRTPSource::createNew()” 
at all.  “SimpleRTPSource” is for *receiving* RTP streams, not transmitting 
them.

What you need to do is:
        1/ Implement a “FramedSource” subclass that delivers - in real time - 
individual “KLVunits” (i.e., one “KLVunit” at a time), each with an appropriate 
“presentationTime” (aligned with ‘wall-clock time’, i.e., the time that you’d 
get by calling “gettimeofday()”).
        2/ Implement the "createStreamSource()” virtual function, which would 
create a new instance of your “FramedSource” subclass each time it’s called.
        3/ Implement the “createNewRTPSink()” virtual function, as follows:

RTPSink* MyServerMediaSubsession::createNewRTPSink(Groupsock* rtpGroupsock,
                        unsigned char rtpPayloadTypeIfDynamic,
                        FramedSource* /*inputSource*/) {
        return SimpleRTPSink::createNew(envir(), rtpGroupsock, 
rtpPayloadTypeIfDynamic,
                        90000, // rtpTimestampFrequency
                         “application”, // sdpMediaTypeString,
                         “smpte336m”, // rtpPayloadFormatName,
                         1, // numChannels,
                         0, // allowMultipleFramesPerPacket
                         1 // doNormalMBitRule (see the comments in 
“liveMedia/include/SimpleRTPSink.hh”)
                        );
}


If, on the other hand, you are trying to receive metadata from some other RTP 
source, and then retransmit it with your server, then things get more 
complicated (unless the RTP source has its own RTSP server, in which case you 
should be able to use the existing “LIVE555 Proxy Server”, as is.)


Ross Finlayson
Live Networks, Inc.
http://www.live555.com/


_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to