Media Controller
A GStreamer implementation using the VideoXpert SDK
MediaController::Rtsp::SdpParser Class Reference

Parses the SDP packets sent from an RTSP source. More...

#include <RtspSdpParser.h>

Public Member Functions

 SdpParser ()
 Default constructor. More...
 
 ~SdpParser ()
 Default destructor. More...
 
const std::vector< MediaDescription > & GetMediaDescriptions () const
 Get all available media descriptions. More...
 
const MediaDescriptionGetFirstVideo ()
 Get the first available video media description. More...
 
const MediaDescriptionGetFirstAudio ()
 Get the first available audio media description. More...
 
void Parse (const std::string &sdp)
 Parses a raw SDP packet string. More...
 

Public Attributes

std::string sessionControlUri
 The session control URI. More...
 

Private Attributes

std::vector< MediaDescription_mediaDescriptions
 

Detailed Description

Parses the SDP packets sent from an RTSP source.

Definition at line 12 of file RtspSdpParser.h.

Constructor & Destructor Documentation

SdpParser::SdpParser ( )

Default constructor.

Definition at line 16 of file RtspSdpParser.cpp.

16 {}
SdpParser::~SdpParser ( )

Default destructor.

Definition at line 18 of file RtspSdpParser.cpp.

18 {}

Member Function Documentation

const MediaDescription & SdpParser::GetFirstAudio ( )

Get the first available audio media description.

Returns
An empty MediaDescription if no description is found, otherwise the first audio MediaDescription.

Definition at line 78 of file RtspSdpParser.cpp.

78  {
79  for (size_t i = 0; i < _mediaDescriptions.size(); i++) {
80  const MediaDescription& md = _mediaDescriptions[i];
81  if (md.type == "audio")
82  return md;
83  }
84  return EmptyMediaDescription;
85 }
std::vector< MediaDescription > _mediaDescriptions
Definition: RtspSdpParser.h:57
static const MediaDescription EmptyMediaDescription
The parsed media information from an SDP packet.
std::string type
The type of media.
const MediaDescription & SdpParser::GetFirstVideo ( )

Get the first available video media description.

Returns
An empty MediaDescription if no description is found, otherwise the first video MediaDescription.

Definition at line 69 of file RtspSdpParser.cpp.

69  {
70  for (size_t i = 0; i < _mediaDescriptions.size(); i++) {
71  const MediaDescription& md = _mediaDescriptions[i];
72  if (md.type == "video")
73  return md;
74  }
75  return EmptyMediaDescription;
76 }
std::vector< MediaDescription > _mediaDescriptions
Definition: RtspSdpParser.h:57
static const MediaDescription EmptyMediaDescription
The parsed media information from an SDP packet.
std::string type
The type of media.
const vector< MediaDescription > & SdpParser::GetMediaDescriptions ( ) const

Get all available media descriptions.

Returns
A list of MediaDescription objects.

Definition at line 20 of file RtspSdpParser.cpp.

20  {
21  return this->_mediaDescriptions;
22 }
std::vector< MediaDescription > _mediaDescriptions
Definition: RtspSdpParser.h:57
void SdpParser::Parse ( const std::string &  sdp)

Parses a raw SDP packet string.

Parameters
sdpThe SDP packet as a string.

Definition at line 24 of file RtspSdpParser.cpp.

24  {
25  this->_mediaDescriptions.clear();
26  this->sessionControlUri.clear();
27  stringstream sdpStream(sdp);
28  string line;
29  bool reachedMedia = false;
30 
31  MediaDescription media;
32  while (getline(sdpStream, line)) {
33  if (!reachedMedia && line.substr(0, 10) == "a=control:")
35 
36  // Check if the current line is the start a new media stream description.
37  if (line.substr(0, 2) == "m=") {
38  reachedMedia = true;
39  if (!media.type.empty()) {
40  this->_mediaDescriptions.push_back(media);
41  media = EmptyMediaDescription;
42  }
43  ParseMediaDescription(line, media.type, media.port, media.protocol, media.payload);
44  }
45  else if (line.substr(0, 7) == "a=type:"){
46  media.conferenceType = line.substr(7);
47  boost::trim(media.conferenceType);
48  }
49  else if (line.substr(0, 2) == "c=")
50  ParseConnectionInformation(line, media.ip, media.ttl, media.isMulticast);
51  else if (!media.type.empty()) {
52  // If the line contains the connection information, parse it.
53  if (line.substr(0, 2) == "c=")
54  ParseConnectionInformation(line, media.ip, media.ttl, media.isMulticast);
55  // If the line contains the RTP map, parse it.
56  else if (line.substr(0, 9) == "a=rtpmap:")
57  ParseRtpMap(line, media.payload, media.encoding, media.rate);
58  else if (line.substr(0, 7) == "a=fmtp:")
60  else if (line.substr(0, 10) == "a=control:")
61  ParseControlLocation(line, media.controlUri);
62  }
63  }
64 
65  if (!media.type.empty())
66  this->_mediaDescriptions.push_back(media);
67 }
std::string packetizationMode
Specifies the properties of an RTP payload type.
std::vector< MediaDescription > _mediaDescriptions
Definition: RtspSdpParser.h:57
static const MediaDescription EmptyMediaDescription
std::string protocol
The transport protocol.
unsigned short ttl
The time to live (TTL) value.
unsigned short payload
RTP payload type number.
std::string ip
The address for media.
std::string profileLevelId
Indicates the profile that the codec supports.
std::string spropParameterSets
Specifies sequence and picture parameters.
void ParseMediaDescription(const string &line, string &media, unsigned short &port, string &protocol, unsigned short &payload)
void ParseRtpMap(const string &line, const unsigned short payload, string &encoding, unsigned int &rate)
std::string controlUri
The media control URI.
The parsed media information from an SDP packet.
unsigned short port
The transport port for media.
std::string sessionControlUri
The session control URI.
Definition: RtspSdpParser.h:54
std::string conferenceType
Specifies the type of the conference.
unsigned int rate
The stream clock rate.
bool isMulticast
Specifies whether the transport type is multicast or unicast.
std::string type
The type of media.
std::string encoding
The encoding name denoting the payload format to be used.
void ParseControlLocation(const string &line, string &controlUri)
void ParseConnectionInformation(const string &line, string &ip, unsigned short &ttl, bool &isMulticast)
void ParseFormatParams(const string &line, string &packetizationMode, string &profileLevelId, string &spropParameterSets)

Member Data Documentation

std::vector<MediaDescription> MediaController::Rtsp::SdpParser::_mediaDescriptions
private

Definition at line 57 of file RtspSdpParser.h.

std::string MediaController::Rtsp::SdpParser::sessionControlUri

The session control URI.

Definition at line 54 of file RtspSdpParser.h.


The documentation for this class was generated from the following files: