>The fourth parameter "forceMulticastOnUnspecified" of >RTSPClient::setupMediaSubsession() will guide the client agent to >setup a multicast subsession if the IP address is not specified in >SDP. The client will then join the multicast group later by calling >subsession.setDestinations(fServerAddress) which then invokes >fRTPSocket->changeDestinationParameters(destAddr, destPort, >destTTL). However, Groupsock::changeDestinationParameters() doesn't >consider if it has a source filter address specified in SDP and just >try a regular multicast address group leave and join.
I don't follow this. The "forceMulticastOnUnspecified" hack - which is used only if a multicast address was *not* specified in SDP - cannot possibly be expected to work for SSM sessions, because, for such sessions, the source filter address can only be specified within a SDP description. > >Hence, I suggest to modify as follows: > >Groupsock::changeDestinationParameters(...) { I have no plans to change the existing code at this time. >Besides, the ws2tcpip.h provided in a newly installed Visual Studio >C++ 6 doesn't define IP_ADD_SOURCE_MEMBERSHIP and >IP_DROP_SOURCE_MEMBERSHIP so the following conditional macro in >GroupHelper.cpp wiill define them as wrong values on Windows. > >#ifdef LINUX >#define IP_ADD_SOURCE_MEMBERSHIP 39 >#define IP_DROP_SOURCE_MEMBERSHIP 40 >#else >#define IP_ADD_SOURCE_MEMBERSHIP 25 // should be 15 on Windows >#define IP_DROP_SOURCE_MEMBERSHIP 26 // should be 16 on Windows >#endif > >Therefore, I suggest modify the above as the following: > >#ifdef LINUX >#define IP_ADD_SOURCE_MEMBERSHIP 39 >#define IP_DROP_SOURCE_MEMBERSHIP 40 >#elif defined(WINNT) || defined(_WINNT) >#define IP_ADD_SOURCE_MEMBERSHIP 15 /* join IP group/source */ >#define IP_DROP_SOURCE_MEMBERSHIP 16 /* leave IP group/source */ >#else >#define IP_ADD_SOURCE_MEMBERSHIP 25 >#define IP_DROP_SOURCE_MEMBERSHIP 26 >#endif Can anyone else (preferably someone who doesn't use a @gmail.com email address :-) confirm that Windows uses the values 25 and 26 for IP_ADD_SOURCE_MEMBERSHIP and IP_DROP_SOURCE_MEMBERSHIP? (But why doesn't WIndows actually define those constants??) >#define IP_BLOCK_SOURCE 17 /* block IP group/source */ >#define IP_UNBLOCK_SOURCE 18 /* unblock IP group/source */ >#define IP_PKTINFO 19 /* receive packet information for ipv4*/ >#define IP_RECEIVE_BROADCAST 22 /* allow/block broadcast reception */ No, I won't be defining those, because they're not used anywhere in our code. -- 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