25#include <dhtnet/ip_utils.h>
26#include <dhtnet/ice_transport.h>
28#include <pjmedia/sdp.h>
29#include <pjmedia/sdp_neg.h>
30#include <pjsip/sip_transport.h>
33#include <pjmedia/errno.h>
54 :
std::runtime_error(
"SDP: SdpException occurred: " +
str)
68 Sdp(
const std::string&
id);
178 using MediaSlot = std::pair<MediaDescription, MediaDescription>;
249 int validateSession()
const;
257 void addSdesAttribute(
const std::vector<std::string>& crypto);
261 std::shared_ptr<SystemCodecInfo> findCodecByPayload(
const unsigned payloadType);
262 std::shared_ptr<SystemCodecInfo> findCodecBySpec(std::string_view
codecName,
288 std::vector<std::shared_ptr<SystemCodecInfo>> audio_codec_list_;
289 std::vector<std::shared_ptr<SystemCodecInfo>> video_codec_list_;
291 std::string publishedIpAddr_;
299 unsigned int telephoneEventPayload_;
302 std::string sessionName_ {};
SdpException(const std::string &str="")
void setReceivedOffer(const pjmedia_sdp_session *remote)
bool processIncomingOffer(const std::vector< MediaAttribute > &mediaList)
Build a new SDP answer using mediaList.
std::vector< MediaDescription > getActiveMediaDescription(bool remote) const
std::string_view getPublishedIP() const
void addIceCandidates(unsigned media_index, const std::vector< std::string > &cands)
bool startNegotiation()
Start the sdp negotiation.
void setLocalMediaCapabilities(MediaType type, const std::vector< std::shared_ptr< SystemCodecInfo > > &selectedCodecs)
Set the local media capabilities.
dhtnet::IpAddr getPublishedIPAddr() const
void setLocalPublishedAudioPorts(uint16_t audio_port, uint16_t control_port)
SdpDirection getSdpDirection() const
std::vector< MediaDescription > getMediaDescriptions(const pjmedia_sdp_session *session, bool remote) const
bool createOffer(const std::vector< MediaAttribute > &mediaList)
std::pair< MediaDescription, MediaDescription > MediaSlot
friend class test::SDPTest
pjmedia_sdp_session * getRemoteSdpSession()
Read accessor.
uint16_t getLocalVideoPort() const
uint16_t getLocalAudioControlPort() const
const pjmedia_sdp_session * getActiveLocalSdpSession() const
static std::vector< MediaAttribute > getMediaAttributeListFromSdp(const pjmedia_sdp_session *sdpSession, bool ignoreDisabled=false)
void setLocalPublishedVideoPorts(uint16_t video_port, uint16_t control_port)
std::vector< std::string > getIceCandidates(unsigned media_index) const
void setPublishedIP(const std::string &addr, pj_uint16_t addr_type=pj_AF_UNSPEC())
void addIceAttributes(const dhtnet::IceTransport::Attribute &&ice_attrs)
dhtnet::IceTransport::Attribute getIceAttributes() const
pjmedia_sdp_session * getLocalSdpSession()
Read accessor.
unsigned int getTelephoneEventType() const
void cleanSessionMedia()
Remove all media in the session media vector.
void setActiveLocalSdpSession(const pjmedia_sdp_session *sdp)
Set the negotiated sdp offer from the sip payload.
uint16_t getLocalAudioPort() const
static constexpr std::string_view getSdpDirectionStr(SdpDirection direction)
void setActiveRemoteSdpSession(const pjmedia_sdp_session *sdp)
Retrieve the negotiated sdp offer from the sip payload.
uint16_t getLocalVideoControlPort() const
static void printSession(const pjmedia_sdp_session *session, const char *header, SdpDirection direction)
Log the given session.
const pjmedia_sdp_session * getActiveRemoteSdpSession() const
std::vector< MediaSlot > getMediaSlots() const
direction
0: outgoing, 1: incoming
void emitSignal(Args... args)
Simple macro to hide class' copy constructor and assignment operator.
#define NON_COPYABLE(ClassName)