liveMedia/MediaSession.cpp File Reference

#include "liveMedia.hh"
#include "Locale.hh"
#include "GroupsockHelper.hh"
#include <ctype.h>

Include dependency graph for MediaSession.cpp:

Go to the source code of this file.

Functions

static char * parseCLine (char const *sdpLine)
static Boolean parseRangeAttribute (char const *sdpLine, float &startTime, float &endTime)
static Boolean parseSourceFilterAttribute (char const *sdpLine, struct in_addr &sourceAddr)


Function Documentation

static char* parseCLine ( char const *  sdpLine  )  [static]

Definition at line 286 of file MediaSession.cpp.

References NULL, strDup(), and strDupSize().

Referenced by MediaSubsession::parseSDPLine_c(), and MediaSession::parseSDPLine_c().

00286                                              {
00287   char* resultStr = NULL;
00288   char* buffer = strDupSize(sdpLine); // ensures we have enough space
00289   if (sscanf(sdpLine, "c=IN IP4 %[^/ ]", buffer) == 1) {
00290     // Later, handle the optional /<ttl> and /<numAddresses> #####
00291     resultStr = strDup(buffer);
00292   }
00293   delete[] buffer;
00294 
00295   return resultStr;
00296 }

static Boolean parseRangeAttribute ( char const *  sdpLine,
float &  startTime,
float &  endTime 
) [static]

Definition at line 355 of file MediaSession.cpp.

Referenced by MediaSubsession::parseSDPAttribute_range(), and MediaSession::parseSDPAttribute_range().

00355                                                                                           {
00356   return sscanf(sdpLine, "a=range: npt = %g - %g", &startTime, &endTime) == 2;
00357 }

static Boolean parseSourceFilterAttribute ( char const *  sdpLine,
struct in_addr &  sourceAddr 
) [static]

Definition at line 393 of file MediaSession.cpp.

References NetAddress::data(), False, NetAddressList::firstAddress(), NetAddressList::numAddresses(), strDupSize(), and True.

Referenced by MediaSubsession::parseSDPAttribute_source_filter(), and MediaSession::parseSDPAttribute_source_filter().

00394                                                                       {
00395   // Check for a "a=source-filter:incl IN IP4 <something> <source>" line.
00396   // Note: At present, we don't check that <something> really matches
00397   // one of our multicast addresses.  We also don't support more than
00398   // one <source> #####
00399   Boolean result = False; // until we succeed
00400   char* sourceName = strDupSize(sdpLine); // ensures we have enough space
00401   do {
00402     if (sscanf(sdpLine, "a=source-filter: incl IN IP4 %*s %s",
00403                sourceName) != 1) break;
00404 
00405     // Now, convert this name to an address, if we can:
00406     NetAddressList addresses(sourceName);
00407     if (addresses.numAddresses() == 0) break;
00408 
00409     netAddressBits sourceAddrBits
00410       = *(netAddressBits*)(addresses.firstAddress()->data());
00411     if (sourceAddrBits == 0) break;
00412 
00413     sourceAddr.s_addr = sourceAddrBits;
00414     result = True;
00415   } while (0);
00416 
00417   delete[] sourceName;
00418   return result;
00419 }


Generated on Tue Oct 7 15:39:04 2008 for live by  doxygen 1.5.2