Hi Ross,

Thanks again for your support.

We didn't understood deeply what brings the RTCP sender report flooding, but we 
has such a behavior using multicast stream that share the same multicast port.
Wireshark analysis show that an RTCP sender report is forwarded between 2 RTSP 
servers without ends.

We tried to understand the comment in RTCP.cpp that decide to resend a packet 
when SSM flag is set and packet comes from another host.
It could be again a consequence of the multicast problem in linux using ASM.

However we notice that RTCPInstance constructor has an argument to say to use 
SSM, but the RTCPInstance have a reference to the GroupSock that know if it was 
created for SSM.
Setting this flag according to how groupsock was created seems to solve the 
problem.

For instance in testH264VideoStreamer.cpp seems to make a confusion.

00057   
Groupsock<http://www.live555.com/liveMedia/doxygen/html/classGroupsock.html> 
rtpGroupsock(*env<http://www.live555.com/liveMedia/doxygen/html/MPEG2TransportStreamIndexer_8cpp.html#dfa09dd3866fd8ba8ab69586f9437d19>,
 destinationAddress, rtpPort, ttl);

00058   
rtpGroupsock.multicastSendOnly<http://www.live555.com/liveMedia/doxygen/html/classGroupsock.html#f1d8b7124167e2a5fc12ba3a0039346a>();
 // we're a SSM source

00059   
Groupsock<http://www.live555.com/liveMedia/doxygen/html/classGroupsock.html> 
rtcpGroupsock(*env<http://www.live555.com/liveMedia/doxygen/html/MPEG2TransportStreamIndexer_8cpp.html#dfa09dd3866fd8ba8ab69586f9437d19>,
 destinationAddress, rtcpPort, ttl);

00060   
rtcpGroupsock.multicastSendOnly<http://www.live555.com/liveMedia/doxygen/html/classGroupsock.html#f1d8b7124167e2a5fc12ba3a0039346a>();
 // we're a SSM source

00061

00062   // Create a 'H264 Video RTP' sink from the RTP 'groupsock':

00063   
OutPacketBuffer::maxSize<http://www.live555.com/liveMedia/doxygen/html/classOutPacketBuffer.html#27f745b288df55bbfb39a7564fe40596>
 = 100000;

00064   
videoSink<http://www.live555.com/liveMedia/doxygen/html/testDVVideoStreamer_8cpp.html#d0d95ae4c5a49da3e034e3bb23adea20>
 = 
H264VideoRTPSink::createNew<http://www.live555.com/liveMedia/doxygen/html/classH264VideoRTPSink.html#25c497ea6eccc5de3a22677acbcee140>(*env<http://www.live555.com/liveMedia/doxygen/html/MPEG2TransportStreamIndexer_8cpp.html#dfa09dd3866fd8ba8ab69586f9437d19>,
 &rtpGroupsock, 96);

00065

00066   // Create (and start) a 'RTCP instance' for this RTP sink:

00067   const unsigned estimatedSessionBandwidth = 500; // in kbps; for RTCP 
b/w share

00068   const unsigned maxCNAMElen = 100;

00069   unsigned char CNAME[maxCNAMElen+1];

00070   gethostname((char*)CNAME, maxCNAMElen);

00071   CNAME[maxCNAMElen] = '\0'; // just in case

00072   
RTCPInstance<http://www.live555.com/liveMedia/doxygen/html/classRTCPInstance.html>*
 rtcp

00073   = 
RTCPInstance::createNew<http://www.live555.com/liveMedia/doxygen/html/classRTCPInstance.html#baf83bbbca227116e81dac5a9bf0ce3c>(*env<http://www.live555.com/liveMedia/doxygen/html/MPEG2TransportStreamIndexer_8cpp.html#dfa09dd3866fd8ba8ab69586f9437d19>,
 &rtcpGroupsock,

00074                             estimatedSessionBandwidth, CNAME,

00075                             
videoSink<http://www.live555.com/liveMedia/doxygen/html/testDVVideoStreamer_8cpp.html#d0d95ae4c5a49da3e034e3bb23adea20>,
 
NULL<http://www.live555.com/liveMedia/doxygen/html/UsageEnvironment_8hh.html#070d2ce7b6bb7e5c05602aa8c308d0c4>
 /* we're a server */,

00076                             
True<http://www.live555.com/liveMedia/doxygen/html/Boolean_8hh.html#4ef9178d6bd8f7ce58133fa8c3805842>
 /* we're a SSM source */);
The RTCPIntance is create with SSM flag set but it use the ASM GroupSock, isn't 
it ?

Don't you think it could be more robust to remove the SSM argument in 
RTCPInstance constructor and get it from RTCPgs->isSSM() ?

Thanks & Regards,

            Michel.

[@@ THALES GROUP INTERNAL @@]

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

Reply via email to