> Would I access the RTPTransmissionStatsDB in function
> RTSPServer::RTSPClientSession:noteLiveness() in RTSPServer.cpp?
No; that function is used only by the RTCP implementation (when it receives an
incoming "RR" packet). It's not a function that you would call (or modify)
yourself.
> Alternatively, is there another (cleaner) way to do this without modifying
> core library code i.e. RTSPServer.cpp?
Yes. Note that each "RTPTransmissionStatsDB" object (a 'database of RTP
transmission stats') is for a particular "RTPSink" object (and accessed using
"RTPSink::transmissionStatsDB()"); therefore, you access these stats by first
accessing a "RTPSink" object.
Note that a "RTPSink" object is used for a particular server->client
(sub)session - i.e., for a particular media substream (audio or video) of a
particular server->client stream. Therefore, you access a "RTPSink" object via
a "RTSPServer::RTSPClientSession" object. So, you need to do the following:
1/ Subclass "RTSPServer::RTSPClientSession".
2/ Subclass "RTSPServer" (only to redefine the "createNewClientSession()"
virtual function to create objects of your new "RTSPServer::RTSPClientSession"
subclass, rather than just the "RTSPServer::RTSPClientSession" base class (the
default behavior)).
3/ In your "RTSPServer::RTSPClientSession" subclass - whenever you wish to
access the transmission stats (e.g., you might choose to do this periodically,
using a timer) - you would do so using code like the following:
for (unsigned i = 0; i < fNumStreamStates; ++i) {
(StreamState*)streamState = (StreamState*)fStreamStates[i].streamToken;
// we can do this cast because we know that we are using
"OnDemandServerMediaSubsession"s
RTPTransmissionStatsDB& transmissionStatesDB =
streamState->rtpSink()->transmissionStatsDB();
}
Ross Finlayson
Live Networks, Inc.
http://www.live555.com/
_______________________________________________
live-devel mailing list
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel