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 parseRangeAttribute (char const *sdpLine, char *&absStartTime, char *&absEndTime)
static Boolean parseSourceFilterAttribute (char const *sdpLine, struct in_addr &sourceAddr)

Variables

static Boolean const honorSDPPortChoice = True


Function Documentation

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

Definition at line 279 of file MediaSession.cpp.

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

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

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

static Boolean parseRangeAttribute ( char const *  sdpLine,
char *&  absStartTime,
char *&  absEndTime 
) [static]

Definition at line 366 of file MediaSession.cpp.

References False, and True.

00366                                                                                                 {
00367   size_t len = strlen(sdpLine) + 1;
00368   char* as = new char[len];
00369   char* ae = new char[len];
00370   int sscanfResult = sscanf(sdpLine, "a=range: clock = %[^-\r\n]-%[^\r\n]", as, ae);
00371   if (sscanfResult == 2) {
00372     absStartTime = as;
00373     absEndTime = ae;
00374   } else if (sscanfResult == 1) {
00375     absStartTime = as;
00376     delete[] ae;
00377   } else {
00378     delete[] as; delete[] ae;
00379     return False;
00380   }
00381 
00382   return True;
00383 }

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

Definition at line 362 of file MediaSession.cpp.

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

00362                                                                                             {
00363   return sscanf(sdpLine, "a=range: npt = %lg - %lg", &startTime, &endTime) == 2;
00364 }

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

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

00408                                                                       {
00409   // Check for a "a=source-filter:incl IN IP4 <something> <source>" line.
00410   // Note: At present, we don't check that <something> really matches
00411   // one of our multicast addresses.  We also don't support more than
00412   // one <source> #####
00413   Boolean result = False; // until we succeed
00414   char* sourceName = strDupSize(sdpLine); // ensures we have enough space
00415   do {
00416     if (sscanf(sdpLine, "a=source-filter: incl IN IP4 %*s %s",
00417                sourceName) != 1) break;
00418 
00419     // Now, convert this name to an address, if we can:
00420     NetAddressList addresses(sourceName);
00421     if (addresses.numAddresses() == 0) break;
00422 
00423     netAddressBits sourceAddrBits
00424       = *(netAddressBits*)(addresses.firstAddress()->data());
00425     if (sourceAddrBits == 0) break;
00426 
00427     sourceAddr.s_addr = sourceAddrBits;
00428     result = True;
00429   } while (0);
00430 
00431   delete[] sourceName;
00432   return result;
00433 }


Variable Documentation

Boolean const honorSDPPortChoice = True [static]

Definition at line 646 of file MediaSession.cpp.

Referenced by MediaSubsession::initiate().


Generated on Mon Apr 29 13:30:13 2013 for live by  doxygen 1.5.2