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, double &startTime, double &endTime)
static Boolean parseSourceFilterAttribute (char const *sdpLine, struct in_addr &sourceAddr)


Function Documentation

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

Definition at line 277 of file MediaSession.cpp.

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

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

00277                                              {
00278   char* resultStr = NULL;
00279   char* buffer = strDupSize(sdpLine); // ensures we have enough space
00280   if (sscanf(sdpLine, "c=IN IP4 %[^/\r\n]", buffer) == 1) {
00281     // Later, handle the optional /<ttl> and /<numAddresses> #####
00282     resultStr = strDup(buffer);
00283   }
00284   delete[] buffer;
00285 
00286   return resultStr;
00287 }

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

Definition at line 346 of file MediaSession.cpp.

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

00346                                                                                             {
00347   return sscanf(sdpLine, "a=range: npt = %lg - %lg", &startTime, &endTime) == 2;
00348 }

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

Definition at line 384 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().

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


Generated on Thu Feb 2 23:53:39 2012 for live by  doxygen 1.5.2