Make ContentInfo/ContentDescription slightly more ergonomic
This makes the following changes:
- Replaces ContentDescription with its only subclass,
MediaContentDescription
- Adds helpers to cast a MediaContentDescription to its
audio, video, and data subclasses.
- Changes ContentInfo.type to a new enum, MediaProtocolType.
Bug: webrtc:8620
Change-Id: I5eb0811cb16a51b0b9d73ecc4fe8edc7037f1aed
Reviewed-on: https://webrtc-review.googlesource.com/35100
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21401}
diff --git a/p2p/base/p2pconstants.cc b/p2p/base/p2pconstants.cc
index a793c47..dc6db63 100644
--- a/p2p/base/p2pconstants.cc
+++ b/p2p/base/p2pconstants.cc
@@ -37,9 +37,6 @@
const int ICE_CANDIDATE_COMPONENT_RTCP = 2;
const int ICE_CANDIDATE_COMPONENT_DEFAULT = 1;
-const char NS_JINGLE_RTP[] = "urn:xmpp:jingle:apps:rtp:1";
-const char NS_JINGLE_DRAFT_SCTP[] = "google:jingle:sctp";
-
// From RFC 4145, SDP setup attribute values.
const char CONNECTIONROLE_ACTIVE_STR[] = "active";
const char CONNECTIONROLE_PASSIVE_STR[] = "passive";
diff --git a/p2p/base/p2pconstants.h b/p2p/base/p2pconstants.h
index b72d025..584eac2 100644
--- a/p2p/base/p2pconstants.h
+++ b/p2p/base/p2pconstants.h
@@ -39,9 +39,6 @@
extern const int ICE_CANDIDATE_COMPONENT_RTCP;
extern const int ICE_CANDIDATE_COMPONENT_DEFAULT;
-extern const char NS_JINGLE_RTP[];
-extern const char NS_JINGLE_DRAFT_SCTP[];
-
// RFC 4145, SDP setup attribute values.
extern const char CONNECTIONROLE_ACTIVE_STR[];
extern const char CONNECTIONROLE_PASSIVE_STR[];
diff --git a/pc/jsepsessiondescription_unittest.cc b/pc/jsepsessiondescription_unittest.cc
index 1835f29..0cddd61 100644
--- a/pc/jsepsessiondescription_unittest.cc
+++ b/pc/jsepsessiondescription_unittest.cc
@@ -23,6 +23,7 @@
#include "rtc_base/ptr_util.h"
#include "rtc_base/stringencode.h"
+using cricket::MediaProtocolType;
using ::testing::Values;
using webrtc::IceCandidateCollection;
using webrtc::IceCandidateInterface;
@@ -54,12 +55,10 @@
new cricket::VideoContentDescription());
audio->AddCodec(cricket::AudioCodec(103, "ISAC", 16000, 0, 0));
- desc->AddContent(cricket::CN_AUDIO, cricket::NS_JINGLE_RTP,
- audio.release());
+ desc->AddContent(cricket::CN_AUDIO, MediaProtocolType::kRtp, audio.release());
video->AddCodec(cricket::VideoCodec(120, "VP8"));
- desc->AddContent(cricket::CN_VIDEO, cricket::NS_JINGLE_RTP,
- video.release());
+ desc->AddContent(cricket::CN_VIDEO, MediaProtocolType::kRtp, video.release());
EXPECT_TRUE(desc->AddTransportInfo(cricket::TransportInfo(
cricket::CN_AUDIO,
diff --git a/pc/mediasession.cc b/pc/mediasession.cc
index e1d3e3c..e1e4fed 100644
--- a/pc/mediasession.cc
+++ b/pc/mediasession.cc
@@ -1870,7 +1870,7 @@
audio->set_direction(media_description_options.direction);
- desc->AddContent(media_description_options.mid, NS_JINGLE_RTP,
+ desc->AddContent(media_description_options.mid, MediaProtocolType::kRtp,
media_description_options.stopped, audio.release());
if (!AddTransportOffer(media_description_options.mid,
media_description_options.transport_options,
@@ -1940,7 +1940,7 @@
video->set_direction(media_description_options.direction);
- desc->AddContent(media_description_options.mid, NS_JINGLE_RTP,
+ desc->AddContent(media_description_options.mid, MediaProtocolType::kRtp,
media_description_options.stopped, video.release());
if (!AddTransportOffer(media_description_options.mid,
media_description_options.transport_options,
@@ -2002,12 +2002,12 @@
}
if (is_sctp) {
- desc->AddContent(media_description_options.mid, NS_JINGLE_DRAFT_SCTP,
+ desc->AddContent(media_description_options.mid, MediaProtocolType::kSctp,
data.release());
} else {
data->set_bandwidth(kDataMaxBandwidth);
SetMediaProtocol(secure_transport, data.get());
- desc->AddContent(media_description_options.mid, NS_JINGLE_RTP,
+ desc->AddContent(media_description_options.mid, MediaProtocolType::kRtp,
media_description_options.stopped, data.release());
}
if (!AddTransportOffer(media_description_options.mid,
@@ -2301,9 +2301,8 @@
}
bool IsMediaContent(const ContentInfo* content) {
- return (content &&
- (content->type == NS_JINGLE_RTP ||
- content->type == NS_JINGLE_DRAFT_SCTP));
+ return (content && (content->type == MediaProtocolType::kRtp ||
+ content->type == MediaProtocolType::kSctp));
}
bool IsAudioContent(const ContentInfo* content) {
diff --git a/pc/mediasession_unittest.cc b/pc/mediasession_unittest.cc
index b623730..d83d87d 100644
--- a/pc/mediasession_unittest.cc
+++ b/pc/mediasession_unittest.cc
@@ -37,6 +37,7 @@
using cricket::MediaDescriptionOptions;
using cricket::MediaSessionOptions;
using cricket::MediaType;
+using cricket::MediaProtocolType;
using cricket::SessionDescription;
using cricket::SsrcGroup;
using cricket::StreamParams;
@@ -59,7 +60,6 @@
using cricket::AudioCodec;
using cricket::VideoCodec;
using cricket::DataCodec;
-using cricket::NS_JINGLE_RTP;
using cricket::MEDIA_TYPE_AUDIO;
using cricket::MEDIA_TYPE_VIDEO;
using cricket::MEDIA_TYPE_DATA;
@@ -630,8 +630,8 @@
const ContentInfo* vc = answer->GetContentByName("video");
ASSERT_TRUE(ac != NULL);
ASSERT_TRUE(vc != NULL);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), vc->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, vc->type);
const AudioContentDescription* acd =
static_cast<const AudioContentDescription*>(ac->description);
const VideoContentDescription* vcd =
@@ -675,7 +675,7 @@
const ContentInfo* vc = offer->GetContentByName("video");
ASSERT_TRUE(ac != NULL);
ASSERT_TRUE(vc == NULL);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
const AudioContentDescription* acd =
static_cast<const AudioContentDescription*>(ac->description);
EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type());
@@ -698,8 +698,8 @@
const ContentInfo* vc = offer->GetContentByName("video");
ASSERT_TRUE(ac != NULL);
ASSERT_TRUE(vc != NULL);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), vc->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, vc->type);
const AudioContentDescription* acd =
static_cast<const AudioContentDescription*>(ac->description);
const VideoContentDescription* vcd =
@@ -807,8 +807,8 @@
const ContentInfo* dc = offer->GetContentByName("data");
ASSERT_TRUE(ac != NULL);
ASSERT_TRUE(dc != NULL);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), dc->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, dc->type);
const AudioContentDescription* acd =
static_cast<const AudioContentDescription*>(ac->description);
const DataContentDescription* dcd =
@@ -952,7 +952,7 @@
const ContentInfo* vc = answer->GetContentByName("video");
ASSERT_TRUE(ac != NULL);
ASSERT_TRUE(vc == NULL);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
const AudioContentDescription* acd =
static_cast<const AudioContentDescription*>(ac->description);
EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type());
@@ -979,7 +979,7 @@
const ContentInfo* vc = answer->GetContentByName("video");
ASSERT_TRUE(ac != NULL);
ASSERT_TRUE(vc == NULL);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
const AudioContentDescription* acd =
static_cast<const AudioContentDescription*>(ac->description);
EXPECT_EQ(MEDIA_TYPE_AUDIO, acd->type());
@@ -1005,8 +1005,8 @@
const ContentInfo* vc = answer->GetContentByName("video");
ASSERT_TRUE(ac != NULL);
ASSERT_TRUE(vc != NULL);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), vc->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, vc->type);
const AudioContentDescription* acd =
static_cast<const AudioContentDescription*>(ac->description);
const VideoContentDescription* vcd =
@@ -1056,8 +1056,8 @@
const ContentInfo* dc = answer->GetContentByName("data");
ASSERT_TRUE(ac != NULL);
ASSERT_TRUE(dc != NULL);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), dc->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, dc->type);
const AudioContentDescription* acd =
static_cast<const AudioContentDescription*>(ac->description);
const DataContentDescription* dcd =
@@ -1090,8 +1090,8 @@
const ContentInfo* dc = answer->GetContentByName("data");
ASSERT_TRUE(ac != NULL);
ASSERT_TRUE(dc != NULL);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), dc->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, dc->type);
const AudioContentDescription* acd =
static_cast<const AudioContentDescription*>(ac->description);
const DataContentDescription* dcd =
@@ -2614,11 +2614,11 @@
AudioContentDescription* acd(new AudioContentDescription());
acd->set_codecs(MAKE_VECTOR(kAudioCodecs1));
acd->AddLegacyStream(1);
- source.AddContent(cricket::CN_AUDIO, cricket::NS_JINGLE_RTP, acd);
+ source.AddContent(cricket::CN_AUDIO, MediaProtocolType::kRtp, acd);
VideoContentDescription* vcd(new VideoContentDescription());
vcd->set_codecs(MAKE_VECTOR(kVideoCodecs1));
vcd->AddLegacyStream(2);
- source.AddContent(cricket::CN_VIDEO, cricket::NS_JINGLE_RTP, vcd);
+ source.AddContent(cricket::CN_VIDEO, MediaProtocolType::kRtp, vcd);
std::unique_ptr<SessionDescription> copy(source.Copy());
ASSERT_TRUE(copy.get() != NULL);
@@ -2627,13 +2627,13 @@
const ContentInfo* vc = copy->GetContentByName("video");
ASSERT_TRUE(ac != NULL);
ASSERT_TRUE(vc != NULL);
- EXPECT_EQ(std::string(NS_JINGLE_RTP), ac->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
const AudioContentDescription* acd_copy =
static_cast<const AudioContentDescription*>(ac->description);
EXPECT_EQ(acd->codecs(), acd_copy->codecs());
EXPECT_EQ(1u, acd->first_ssrc());
- EXPECT_EQ(std::string(NS_JINGLE_RTP), vc->type);
+ EXPECT_EQ(MediaProtocolType::kRtp, vc->type);
const VideoContentDescription* vcd_copy =
static_cast<const VideoContentDescription*>(vc->description);
EXPECT_EQ(vcd->codecs(), vcd_copy->codecs());
diff --git a/pc/peerconnection.cc b/pc/peerconnection.cc
index a1793fb..c9e2590 100644
--- a/pc/peerconnection.cc
+++ b/pc/peerconnection.cc
@@ -54,6 +54,7 @@
using cricket::ContentInfos;
using cricket::MediaContentDescription;
using cricket::SessionDescription;
+using cricket::MediaProtocolType;
using cricket::TransportInfo;
using cricket::LOCAL_PORT_TYPE;
@@ -4668,7 +4669,7 @@
const cricket::ContentInfo* content = (&*citer);
RTC_DCHECK(content != NULL);
if (bundle_group->HasContentName(content->name) && !content->rejected &&
- content->type == cricket::NS_JINGLE_RTP) {
+ content->type == MediaProtocolType::kRtp) {
if (!HasRtcpMuxEnabled(content))
return false;
}
diff --git a/pc/peerconnection_media_unittest.cc b/pc/peerconnection_media_unittest.cc
index a5a0b42..e647fb2 100644
--- a/pc/peerconnection_media_unittest.cc
+++ b/pc/peerconnection_media_unittest.cc
@@ -632,7 +632,7 @@
void ChangeMediaTypeAudioToVideo(cricket::SessionDescription* desc) {
desc->RemoveContentByName(cricket::CN_AUDIO);
auto* video_content = desc->GetContentByName(cricket::CN_VIDEO);
- desc->AddContent(cricket::CN_AUDIO, cricket::NS_JINGLE_RTP,
+ desc->AddContent(cricket::CN_AUDIO, video_content->type,
video_content->description->Copy());
}
diff --git a/pc/sessiondescription.cc b/pc/sessiondescription.cc
index 6e90ac8..355d643 100644
--- a/pc/sessiondescription.cc
+++ b/pc/sessiondescription.cc
@@ -10,6 +10,8 @@
#include "pc/sessiondescription.h"
+#include <utility>
+
namespace cricket {
namespace {
@@ -38,14 +40,13 @@
}
const ContentInfo* FindContentInfoByType(const ContentInfos& contents,
- const std::string& type) {
- for (ContentInfos::const_iterator content = contents.begin();
- content != contents.end(); ++content) {
- if (content->type == type) {
- return &(*content);
+ MediaProtocolType type) {
+ for (const auto& content : contents) {
+ if (content.type == type) {
+ return &content;
}
}
- return NULL;
+ return nullptr;
}
ContentGroup::ContentGroup(const std::string& semantics)
@@ -147,7 +148,7 @@
}
const ContentInfo* SessionDescription::FirstContentByType(
- const std::string& type) const {
+ MediaProtocolType type) const {
return FindContentInfoByType(contents_, type);
}
@@ -156,25 +157,36 @@
}
void SessionDescription::AddContent(const std::string& name,
- const std::string& type,
+ MediaProtocolType type,
ContentDescription* description) {
- contents_.push_back(ContentInfo(name, type, description));
+ ContentInfo content(type);
+ content.name = name;
+ content.description = description;
+ contents_.push_back(std::move(content));
}
void SessionDescription::AddContent(const std::string& name,
- const std::string& type,
+ MediaProtocolType type,
bool rejected,
ContentDescription* description) {
- contents_.push_back(ContentInfo(name, type, rejected, description));
+ ContentInfo content(type);
+ content.name = name;
+ content.rejected = rejected;
+ content.description = description;
+ contents_.push_back(std::move(content));
}
void SessionDescription::AddContent(const std::string& name,
- const std::string& type,
+ MediaProtocolType type,
bool rejected,
bool bundle_only,
ContentDescription* description) {
- contents_.push_back(
- ContentInfo(name, type, rejected, bundle_only, description));
+ ContentInfo content(type);
+ content.name = name;
+ content.rejected = rejected;
+ content.bundle_only = bundle_only;
+ content.description = description;
+ contents_.push_back(std::move(content));
}
bool SessionDescription::RemoveContentByName(const std::string& name) {
diff --git a/pc/sessiondescription.h b/pc/sessiondescription.h
index 648b27d..b45a807 100644
--- a/pc/sessiondescription.h
+++ b/pc/sessiondescription.h
@@ -48,23 +48,38 @@
// Options to control how session descriptions are generated.
const int kAutoBandwidth = -1;
-// Describes a session content. Individual content types inherit from
-// this class. Analagous to a <jingle><content><description> or
-// <session><description>.
-class ContentDescription {
- public:
- virtual ~ContentDescription() {}
- virtual ContentDescription* Copy() const = 0;
-};
+class AudioContentDescription;
+class VideoContentDescription;
+class DataContentDescription;
-// "content" (as used in XEP-0166) descriptions for voice and video.
-class MediaContentDescription : public ContentDescription {
+// Describes a session description media section. There are subclasses for each
+// media type (audio, video, data) that will have additional information.
+class MediaContentDescription {
public:
- MediaContentDescription() {}
+ MediaContentDescription() = default;
+ virtual ~MediaContentDescription() = default;
virtual MediaType type() const = 0;
+
+ // Try to cast this media description to an AudioContentDescription. Returns
+ // nullptr if the cast fails.
+ virtual AudioContentDescription* as_audio() { return nullptr; }
+ virtual const AudioContentDescription* as_audio() const { return nullptr; }
+
+ // Try to cast this media description to a VideoContentDescription. Returns
+ // nullptr if the cast fails.
+ virtual VideoContentDescription* as_video() { return nullptr; }
+ virtual const VideoContentDescription* as_video() const { return nullptr; }
+
+ // Try to cast this media description to a DataContentDescription. Returns
+ // nullptr if the cast fails.
+ virtual DataContentDescription* as_data() { return nullptr; }
+ virtual const DataContentDescription* as_data() const { return nullptr; }
+
virtual bool has_codecs() const = 0;
+ virtual MediaContentDescription* Copy() const = 0;
+
// |protocol| is the expected media transport protocol, such as RTP/AVPF,
// RTP/SAVPF or SCTP/DTLS.
std::string protocol() const { return protocol_; }
@@ -183,6 +198,10 @@
rtc::SocketAddress connection_address_;
};
+// TODO(bugs.webrtc.org/8620): Remove this alias once downstream projects have
+// updated.
+using ContentDescription = MediaContentDescription;
+
template <class C>
class MediaContentDescriptionImpl : public MediaContentDescription {
public:
@@ -233,6 +252,8 @@
return new AudioContentDescription(*this);
}
virtual MediaType type() const { return MEDIA_TYPE_AUDIO; }
+ virtual AudioContentDescription* as_audio() { return this; }
+ virtual const AudioContentDescription* as_audio() const { return this; }
};
class VideoContentDescription : public MediaContentDescriptionImpl<VideoCodec> {
@@ -241,6 +262,8 @@
return new VideoContentDescription(*this);
}
virtual MediaType type() const { return MEDIA_TYPE_VIDEO; }
+ virtual VideoContentDescription* as_video() { return this; }
+ virtual const VideoContentDescription* as_video() const { return this; }
};
class DataContentDescription : public MediaContentDescriptionImpl<DataCodec> {
@@ -251,6 +274,8 @@
return new DataContentDescription(*this);
}
virtual MediaType type() const { return MEDIA_TYPE_DATA; }
+ virtual DataContentDescription* as_data() { return this; }
+ virtual const DataContentDescription* as_data() const { return this; }
bool use_sctpmap() const { return use_sctpmap_; }
void set_use_sctpmap(bool enable) { use_sctpmap_ = enable; }
@@ -259,32 +284,40 @@
bool use_sctpmap_ = true;
};
-// Analagous to a <jingle><content> or <session><description>.
-// name = name of <content name="...">
-// type = xmlns of <content>
+// Protocol used for encoding media. This is the "top level" protocol that may
+// be wrapped by zero or many transport protocols (UDP, ICE, etc.).
+enum class MediaProtocolType {
+ kRtp, // Section will use the RTP protocol (e.g., for audio or video).
+ // https://tools.ietf.org/html/rfc3550
+ kSctp // Section will use the SCTP protocol (e.g., for a data channel).
+ // https://tools.ietf.org/html/rfc4960
+};
+
+// TODO(bugs.webrtc.org/8620): Remove once downstream projects have updated.
+constexpr MediaProtocolType NS_JINGLE_RTP = MediaProtocolType::kRtp;
+constexpr MediaProtocolType NS_JINGLE_DRAFT_SCTP = MediaProtocolType::kSctp;
+
+// Represents a session description section. Most information about the section
+// is stored in the description, which is a subclass of MediaContentDescription.
struct ContentInfo {
- ContentInfo() {}
- ContentInfo(const std::string& name,
- const std::string& type,
- ContentDescription* description)
- : name(name), type(type), description(description) {}
- ContentInfo(const std::string& name,
- const std::string& type,
- bool rejected,
- ContentDescription* description)
- : name(name), type(type), rejected(rejected), description(description) {}
- ContentInfo(const std::string& name,
- const std::string& type,
- bool rejected,
- bool bundle_only,
- ContentDescription* description)
- : name(name),
- type(type),
- rejected(rejected),
- bundle_only(bundle_only),
- description(description) {}
+ explicit ContentInfo(MediaProtocolType type) : type(type) {}
+
+ // Alias for |name|.
+ std::string mid() const { return name; }
+ void set_mid(const std::string& mid) { this->name = mid; }
+
+ // Alias for |description|.
+ MediaContentDescription* media_description() { return description; }
+ const MediaContentDescription* media_description() const {
+ return description;
+ }
+ void set_media_description(MediaContentDescription* description) {
+ this->description = description;
+ }
+
+ // TODO(bugs.webrtc.org/8520): Rename this to mid.
std::string name;
- std::string type;
+ MediaProtocolType type;
bool rejected = false;
bool bundle_only = false;
ContentDescription* description = nullptr;
@@ -349,20 +382,20 @@
const ContentDescription* GetContentDescriptionByName(
const std::string& name) const;
ContentDescription* GetContentDescriptionByName(const std::string& name);
- const ContentInfo* FirstContentByType(const std::string& type) const;
+ const ContentInfo* FirstContentByType(MediaProtocolType type) const;
const ContentInfo* FirstContent() const;
// Content mutators.
// Adds a content to this description. Takes ownership of ContentDescription*.
void AddContent(const std::string& name,
- const std::string& type,
+ MediaProtocolType type,
ContentDescription* description);
void AddContent(const std::string& name,
- const std::string& type,
+ MediaProtocolType type,
bool rejected,
ContentDescription* description);
void AddContent(const std::string& name,
- const std::string& type,
+ MediaProtocolType type,
bool rejected,
bool bundle_only,
ContentDescription* description);
diff --git a/pc/webrtcsdp.cc b/pc/webrtcsdp.cc
index 63265cd..633e228 100644
--- a/pc/webrtcsdp.cc
+++ b/pc/webrtcsdp.cc
@@ -69,6 +69,7 @@
using cricket::MediaContentDescription;
using cricket::MediaType;
using cricket::RtpHeaderExtensions;
+using cricket::MediaProtocolType;
using cricket::SsrcGroup;
using cricket::StreamParams;
using cricket::StreamParamsVec;
@@ -2500,8 +2501,8 @@
content->set_connection_address(address);
desc->AddContent(content_name,
- IsDtlsSctp(protocol) ? cricket::NS_JINGLE_DRAFT_SCTP
- : cricket::NS_JINGLE_RTP,
+ IsDtlsSctp(protocol) ? MediaProtocolType::kSctp
+ : MediaProtocolType::kRtp,
content_rejected, bundle_only, content.release());
// Create TransportInfo with the media level "ice-pwd" and "ice-ufrag".
TransportInfo transport_info(content_name, transport);
diff --git a/pc/webrtcsdp_unittest.cc b/pc/webrtcsdp_unittest.cc
index a454c60..83ec478 100644
--- a/pc/webrtcsdp_unittest.cc
+++ b/pc/webrtcsdp_unittest.cc
@@ -42,10 +42,9 @@
using cricket::ICE_CANDIDATE_COMPONENT_RTP;
using cricket::kFecSsrcGroupSemantics;
using cricket::LOCAL_PORT_TYPE;
-using cricket::NS_JINGLE_DRAFT_SCTP;
-using cricket::NS_JINGLE_RTP;
using cricket::RELAY_PORT_TYPE;
using cricket::SessionDescription;
+using cricket::MediaProtocolType;
using cricket::StreamParams;
using cricket::STUN_PORT_TYPE;
using cricket::TransportDescription;
@@ -880,7 +879,7 @@
audio_desc_->AddStream(audio_stream);
rtc::SocketAddress audio_addr("74.125.127.126", 2345);
audio_desc_->set_connection_address(audio_addr);
- desc_.AddContent(kAudioContentName, NS_JINGLE_RTP, audio_desc_);
+ desc_.AddContent(kAudioContentName, MediaProtocolType::kRtp, audio_desc_);
// VideoContentDescription
video_desc_ = CreateVideoContentDescription();
@@ -895,7 +894,7 @@
video_desc_->AddStream(video_stream);
rtc::SocketAddress video_addr("74.125.224.39", 3457);
video_desc_->set_connection_address(video_addr);
- desc_.AddContent(kVideoContentName, NS_JINGLE_RTP, video_desc_);
+ desc_.AddContent(kVideoContentName, MediaProtocolType::kRtp, video_desc_);
// TransportInfo
EXPECT_TRUE(desc_.AddTransportInfo(TransportInfo(
@@ -1076,8 +1075,8 @@
desc_.RemoveContentByName(kAudioContentName);
desc_.RemoveContentByName(kVideoContentName);
- desc_.AddContent(kAudioContentName, NS_JINGLE_RTP, audio_desc_);
- desc_.AddContent(kVideoContentName, NS_JINGLE_RTP, video_desc_);
+ desc_.AddContent(kAudioContentName, MediaProtocolType::kRtp, audio_desc_);
+ desc_.AddContent(kVideoContentName, MediaProtocolType::kRtp, video_desc_);
ASSERT_TRUE(jdesc_.Initialize(desc_.Copy(), jdesc_.session_id(),
jdesc_.session_version()));
@@ -1094,7 +1093,7 @@
audio_track_2.sync_label = kStreamLabel2;
audio_track_2.ssrcs.push_back(kAudioTrack2Ssrc);
audio_desc_2->AddStream(audio_track_2);
- desc_.AddContent(kAudioContentName2, NS_JINGLE_RTP, audio_desc_2);
+ desc_.AddContent(kAudioContentName2, MediaProtocolType::kRtp, audio_desc_2);
EXPECT_TRUE(desc_.AddTransportInfo(TransportInfo(
kAudioContentName2, TransportDescription(kUfragVoice2, kPwdVoice2))));
// Video track 2, in stream 2.
@@ -1105,7 +1104,7 @@
video_track_2.sync_label = kStreamLabel2;
video_track_2.ssrcs.push_back(kVideoTrack2Ssrc);
video_desc_2->AddStream(video_track_2);
- desc_.AddContent(kVideoContentName2, NS_JINGLE_RTP, video_desc_2);
+ desc_.AddContent(kVideoContentName2, MediaProtocolType::kRtp, video_desc_2);
EXPECT_TRUE(desc_.AddTransportInfo(TransportInfo(
kVideoContentName2, TransportDescription(kUfragVideo2, kPwdVideo2))));
@@ -1117,7 +1116,7 @@
video_track_3.sync_label = kStreamLabel2;
video_track_3.ssrcs.push_back(kVideoTrack3Ssrc);
video_desc_3->AddStream(video_track_3);
- desc_.AddContent(kVideoContentName3, NS_JINGLE_RTP, video_desc_3);
+ desc_.AddContent(kVideoContentName3, MediaProtocolType::kRtp, video_desc_3);
EXPECT_TRUE(desc_.AddTransportInfo(TransportInfo(
kVideoContentName3, TransportDescription(kUfragVideo3, kPwdVideo3))));
@@ -1449,8 +1448,8 @@
RtpExtension(kExtmapUri, kExtmapId, encrypted));
desc_.RemoveContentByName(kAudioContentName);
desc_.RemoveContentByName(kVideoContentName);
- desc_.AddContent(kAudioContentName, NS_JINGLE_RTP, audio_desc_);
- desc_.AddContent(kVideoContentName, NS_JINGLE_RTP, video_desc_);
+ desc_.AddContent(kAudioContentName, MediaProtocolType::kRtp, audio_desc_);
+ desc_.AddContent(kVideoContentName, MediaProtocolType::kRtp, video_desc_);
}
void RemoveCryptos() {
@@ -1482,9 +1481,9 @@
desc_.RemoveContentByName(kAudioContentName);
desc_.RemoveContentByName(kVideoContentName);
- desc_.AddContent(kAudioContentName, NS_JINGLE_RTP, audio_rejected,
+ desc_.AddContent(kAudioContentName, MediaProtocolType::kRtp, audio_rejected,
audio_desc_);
- desc_.AddContent(kVideoContentName, NS_JINGLE_RTP, video_rejected,
+ desc_.AddContent(kVideoContentName, MediaProtocolType::kRtp, video_rejected,
video_desc_);
SetIceUfragPwd(kAudioContentName, audio_rejected ? "" : kUfragVoice,
audio_rejected ? "" : kPwdVoice);
@@ -1510,7 +1509,8 @@
cricket::kGoogleSctpDataCodecName);
codec.SetParam(cricket::kCodecParamPort, kDefaultSctpPort);
data_desc_->AddCodec(codec);
- desc_.AddContent(kDataContentName, NS_JINGLE_DRAFT_SCTP, data.release());
+ desc_.AddContent(kDataContentName, MediaProtocolType::kSctp,
+ data.release());
EXPECT_TRUE(desc_.AddTransportInfo(TransportInfo(
kDataContentName, TransportDescription(kUfragData, kPwdData))));
}
@@ -1530,7 +1530,7 @@
1, "AES_CM_128_HMAC_SHA1_80",
"inline:FvLcvU2P3ZWmQxgPAgcDu7Zl9vftYElFOjEzhWs5", ""));
data_desc_->set_protocol(cricket::kMediaProtocolSavpf);
- desc_.AddContent(kDataContentName, NS_JINGLE_RTP, data.release());
+ desc_.AddContent(kDataContentName, MediaProtocolType::kRtp, data.release());
EXPECT_TRUE(desc_.AddTransportInfo(TransportInfo(
kDataContentName, TransportDescription(kUfragData, kPwdData))));
}
@@ -1565,9 +1565,9 @@
video_desc_->Copy());
desc_.RemoveContentByName(kAudioContentName);
desc_.RemoveContentByName(kVideoContentName);
- desc_.AddContent(kAudioContentName, NS_JINGLE_RTP, audio_rejected,
+ desc_.AddContent(kAudioContentName, MediaProtocolType::kRtp, audio_rejected,
audio_desc_);
- desc_.AddContent(kVideoContentName, NS_JINGLE_RTP, video_rejected,
+ desc_.AddContent(kVideoContentName, MediaProtocolType::kRtp, video_rejected,
video_desc_);
SetIceUfragPwd(kAudioContentName, audio_rejected ? "" : kUfragVoice,
audio_rejected ? "" : kPwdVoice);