libpromeki main
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
sdpsession.h
Go to the documentation of this file.
1
8#pragma once
9
10#include <cstdint>
12#include <promeki/core/string.h>
13#include <promeki/core/list.h>
14#include <promeki/core/map.h>
15#include <promeki/core/result.h>
17
19
39 public:
42
44 const String &mediaType() const { return _mediaType; }
45
47 void setMediaType(const String &type) { _mediaType = type; }
48
50 uint16_t port() const { return _port; }
51
53 void setPort(uint16_t port) { _port = port; }
54
56 const String &protocol() const { return _protocol; }
57
59 void setProtocol(const String &proto) { _protocol = proto; }
60
62 const List<uint8_t> &payloadTypes() const { return _payloadTypes; }
63
65 void addPayloadType(uint8_t pt) { _payloadTypes.pushToBack(pt); }
66
68 String attribute(const String &name) const {
69 auto it = _attributes.find(name);
70 if(it != _attributes.end()) return it->second;
71 return String();
72 }
73
75 void setAttribute(const String &name, const String &value) {
76 _attributes[name] = value;
77 }
78
80 const Map<String, String> &attributes() const { return _attributes; }
81
87 const String &connectionAddress() const { return _connectionAddress; }
88
90 void setConnectionAddress(const String &addr) { _connectionAddress = addr; }
91
92 private:
93 String _mediaType;
94 uint16_t _port = 0;
95 String _protocol;
96 List<uint8_t> _payloadTypes;
97 Map<String, String> _attributes;
98 String _connectionAddress;
99};
100
129 public:
132
135
138
146
148 SdpSession() = default;
149
151 const String &sessionName() const { return _sessionName; }
152
154 void setSessionName(const String &name) { _sessionName = name; }
155
157 const String &originUsername() const { return _originUsername; }
158
160 uint64_t sessionId() const { return _sessionId; }
161
163 uint64_t sessionVersion() const { return _sessionVersion; }
164
175 uint64_t sessionVersion, const String &netType = "IN",
176 const String &addrType = "IP4",
177 const String &address = "0.0.0.0");
178
180 const String &originNetType() const { return _originNetType; }
181
183 const String &originAddrType() const { return _originAddrType; }
184
186 const String &originAddress() const { return _originAddress; }
187
189 const String &connectionAddress() const { return _connectionAddress; }
190
192 void setConnectionAddress(const String &address) { _connectionAddress = address; }
193
195 const promeki::List<SdpMediaDescription> &mediaDescriptions() const { return _mediaDescriptions; }
196
198 void addMediaDescription(const SdpMediaDescription &md) { _mediaDescriptions.pushToBack(md); }
199
205
206 private:
207 String _sessionName;
208 String _originUsername = "-";
209 uint64_t _sessionId = 0;
210 uint64_t _sessionVersion = 0;
211 String _originNetType = "IN";
212 String _originAddrType = "IP4";
213 String _originAddress = "0.0.0.0";
214 String _connectionAddress;
215 promeki::List<SdpMediaDescription> _mediaDescriptions;
216};
217
Dynamic array container wrapping std::vector.
Definition list.h:40
List()=default
Default constructor. Creates an empty list.
void pushToBack(const T &value)
Pushes an item onto the back of the list.
Definition list.h:455
Iterator find(const K &key)
Finds the entry for key.
Definition map.h:189
Iterator end() noexcept
Returns a mutable iterator to one past the last entry.
Definition map.h:104
SDP media description (m= section).
Definition sdpsession.h:38
void setProtocol(const String &proto)
Sets the transport protocol.
Definition sdpsession.h:59
const String & mediaType() const
Returns the media type (e.g. "audio", "video").
Definition sdpsession.h:44
uint16_t port() const
Returns the port number.
Definition sdpsession.h:50
const String & protocol() const
Returns the transport protocol (e.g. "RTP/AVP").
Definition sdpsession.h:56
void setMediaType(const String &type)
Sets the media type.
Definition sdpsession.h:47
const String & connectionAddress() const
Returns an optional connection address for this media.
Definition sdpsession.h:87
void addPayloadType(uint8_t pt)
Adds a payload type number.
Definition sdpsession.h:65
const Map< String, String > & attributes() const
Returns all attributes as a map.
Definition sdpsession.h:80
const List< uint8_t > & payloadTypes() const
Returns the list of payload type numbers.
Definition sdpsession.h:62
void setAttribute(const String &name, const String &value)
Sets a named attribute.
Definition sdpsession.h:75
String attribute(const String &name) const
Returns the value of a named attribute, or empty string.
Definition sdpsession.h:68
void setPort(uint16_t port)
Sets the port number.
Definition sdpsession.h:53
void setConnectionAddress(const String &addr)
Sets the connection address for this media.
Definition sdpsession.h:90
SdpMediaDescription()=default
Default constructor.
SDP session description (RFC 4566).
Definition sdpsession.h:127
uint64_t sessionId() const
Returns the session ID.
Definition sdpsession.h:160
SdpSession()=default
Default constructor.
void setSessionName(const String &name)
Sets the session name.
Definition sdpsession.h:154
String toString() const
Generates the SDP text representation.
const String & sessionName() const
Returns the session name (s= line).
Definition sdpsession.h:151
const String & originNetType() const
Returns the origin network type (e.g. "IN").
Definition sdpsession.h:180
const String & originAddrType() const
Returns the origin address type (e.g. "IP4").
Definition sdpsession.h:183
static Result< SdpSession > fromString(const String &sdp)
Parses an SDP text string into an SdpSession.
const promeki::List< SdpMediaDescription > & mediaDescriptions() const
Returns the list of media descriptions.
Definition sdpsession.h:195
const String & originAddress() const
Returns the origin address.
Definition sdpsession.h:186
SharedPtr< SdpSession > Ptr
Shared pointer type.
Definition sdpsession.h:131
void addMediaDescription(const SdpMediaDescription &md)
Adds a media description.
Definition sdpsession.h:198
uint64_t sessionVersion() const
Returns the session version.
Definition sdpsession.h:163
void setConnectionAddress(const String &address)
Sets the session-level connection address.
Definition sdpsession.h:192
promeki::List< SdpSession > List
List of SdpSession values.
Definition sdpsession.h:134
const String & connectionAddress() const
Returns the session-level connection address (c= line).
Definition sdpsession.h:189
void setOrigin(const String &username, uint64_t sessionId, uint64_t sessionVersion, const String &netType="IN", const String &addrType="IP4", const String &address="0.0.0.0")
Sets the origin (o= line) fields.
promeki::List< SdpSession::Ptr > PtrList
List of shared SdpSession pointers.
Definition sdpsession.h:137
const String & originUsername() const
Returns the originator username.
Definition sdpsession.h:157
Encoding-aware string class with copy-on-write semantics.
Definition string.h:35
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19
const T & value(const Result< T > &r)
Returns the value from a Result.
Definition result.h:56
#define PROMEKI_SHARED_FINAL(TYPE)
Macro for non-polymorphic native shared objects.
Definition sharedptr.h:88