> I have implemented a multicast out component using SimpleRTPSink and > RTCPInstance, and a multicast in component using SimpleRTPSource and > RTCPInstance. When the multicast in component is receiving from a multicast > out component on the same device, I have them share Groupsocks for RTP and > RTCP. > > The issue I'm having is when I go to shutdown one component, it seems to stop > the other component. The code tracks how many components own the Groupsock, > so I know the Groupsock isn't being deleted. > > Say for example I'm shutting down the multicast out component like so: > > rtp_sink->stopPlaying(); > Medium::close(framed_source); > Medium::close(rtcp_instance); > Medium::close(rtp_sink); > > This will cause the multicast in component to stop working and stop receiving > any more streams
The reason for this is that a “RTCPInstance” - even when used only in concert with a “RTPSink” - both sends *and receives* packets. Therefore, closing the “RTCPInstance” object caused the LIVE555 library to turn off background read handling on the ‘groupsock’. However, I have just released a new version (2015.08.06) of the “LIVE555 Streaming Media” code that will prevent the “RTCPInstance” destructor from turning off background read handling on the ‘groupsock’ if it is being shared with a “RTPSource” - i.e., if RTP and RTCP are being multiplexed, with all packets being initially received by the “RTPSource”. This new version should allow you to close the “RTCPInstance”, while allowing incoming RTP packets to still get handled by the “RTPSource”. Note, however, that this will work *only if* you have a *single* “RTCPInstance” object for both your input and output components, rather than separate “RTCPInstance” objects for each. I.e., you will need to create your “RTPSource” and “RTPSink” objects (in either order), and then create a (single) “RTCPInstance” that takes both your “RTPSource” and “RTPSink” objects as parameter (to “RTCPInstance::createNew()”). Then, when closing the “RTCPInstance”, you must do so before closing *either of* the “RTPSource” or “RTPSink” instances. (And, of course, you must close the “RTCPInstance” only once.) This should let you do what you’re trying to do (though I’m not sure why you’re trying to do it…). 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