One working on sub classing ProxyServerMediaSession and also sub classing ProxyRTSPClient. I have overridden the createNewProxyRTSPClient(). The problem I'm having is the createNewProxyRTSPClient() is called from the constructor of the ProxyServerMediaSession, and the method I just overrode is not being called.
According to the following post this is a know limitation with C++. http://www.codeproject.com/Tips/641610/Be-Careful-with-Virtual-Method I can modify the source directly, but thought I would ask first as I did a bunch of work to derive from the ProxyServerMediaSession and ProxyRTSPClient. In the ProxyServerMediaSession.hh protected: ProxyServerMediaSession(UsageEnvironment& env, RTSPServer* ourRTSPServer, char const* inputStreamURL, char const* streamName, char const* username, char const* password, portNumBits tunnelOverHTTPPortNum, int verbosityLevel, int socketNumToServer); // If you subclass "ProxyRTSPClient", then you should also subclass "ProxyServerMediaSession" and redefine this virtual function // in order to create new objects of your "ProxyRTSPClient" subclass: virtual ProxyRTSPClient* createNewProxyRTSPClient(char const* rtspURL, char const* username, char const* password, portNumBits tunnelOverHTTPPortNum, int verbosityLevel, int socketNumToServer); =========== In the ProxyServerMediaSession.cpp ProxyServerMediaSession::ProxyServerMediaSession(UsageEnvironment& env, RTSPServer* ourRTSPServer, char const* inputStreamURL, char const* streamName, char const* username, char const* password, portNumBits tunnelOverHTTPPortNum, int verbosityLevel, int socketNumToServer) : ServerMediaSession(env, streamName, NULL, NULL, False, NULL), describeCompletedFlag(0), fOurRTSPServer(ourRTSPServer), fClientMediaSession(NULL), fVerbosityLevel(verbosityLevel), fPresentationTimeSessionNormalizer(new PresentationTimeSessionNormalizer(envir())) { // Open a RTSP connection to the input stream, and send a "DESCRIBE" command. // We'll use the SDP description in the response to set ourselves up. fProxyRTSPClient = createNewProxyRTSPClient(inputStreamURL, username, password, tunnelOverHTTPPortNum, verbosityLevel > 0 ? verbosityLevel-1 : verbosityLevel, socketNumToServer); ProxyRTSPClient::sendDESCRIBE(fProxyRTSPClient); } If I override the createNewProxyRTSPClient, and instanciate the new sub-class the ProxySErverMediaSession version of the createNewProxyRTSPClient is called, not my overriden version. Thanks, Craig
_______________________________________________ live-devel mailing list live-devel@lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel