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 MediaDescription & GetFirstVideo ()
 Get the first available video media description. More...
 
const MediaDescription & GetFirstAudio ()
 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: