Use the SDP ContentInfo helpers to avoid downcasting
This changes all internal code to use the media_description() helper
for ContentInfo along with the as_audio, as_video, and as_data casting
methods introduced in a previous CL. Reduces the total number of
pointer static_casts in pc/ from 351 to 122.
Bug: webrtc:8620
Change-Id: I996f49b55f1501c758a9e5223e30539a9f8d4eac
Reviewed-on: https://webrtc-review.googlesource.com/35921
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21419}
diff --git a/pc/webrtcsdp.cc b/pc/webrtcsdp.cc
index 633e228..56f4c99 100644
--- a/pc/webrtcsdp.cc
+++ b/pc/webrtcsdp.cc
@@ -44,7 +44,6 @@
using cricket::AudioContentDescription;
using cricket::Candidate;
using cricket::Candidates;
-using cricket::ContentDescription;
using cricket::ContentInfo;
using cricket::CryptoParams;
using cricket::DataContentDescription;
@@ -640,13 +639,9 @@
void GetMediaStreamLabels(const ContentInfo* content,
std::set<std::string>* labels) {
- const MediaContentDescription* media_desc =
- static_cast<const MediaContentDescription*>(
- content->description);
- const cricket::StreamParamsVec& streams = media_desc->streams();
- for (cricket::StreamParamsVec::const_iterator it = streams.begin();
- it != streams.end(); ++it) {
- labels->insert(it->sync_label);
+ for (const StreamParams& stream_params :
+ content->media_description()->streams()) {
+ labels->insert(stream_params.sync_label);
}
}
@@ -830,8 +825,7 @@
int mline_index = -1;
for (cricket::ContentInfos::const_iterator it = desc->contents().begin();
it != desc->contents().end(); ++it) {
- const MediaContentDescription* mdesc =
- static_cast<const MediaContentDescription*>(it->description);
+ const MediaContentDescription* mdesc = it->media_description();
std::vector<Candidate> candidates;
GetCandidatesByMindex(jdesc, ++mline_index, &candidates);
BuildMediaDescription(&*it, desc->GetTransportInfoByName(it->name),
@@ -1216,10 +1210,8 @@
// http://google-styleguide.googlecode.com/svn/
// trunk/cppguide.xml?showone=Streams#Streams
std::ostringstream os;
- const MediaContentDescription* media_desc =
- static_cast<const MediaContentDescription*>(
- content_info->description);
- RTC_DCHECK(media_desc != NULL);
+ const MediaContentDescription* media_desc = content_info->media_description();
+ RTC_DCHECK(media_desc);
int sctp_port = cricket::kSctpDefaultPort;
@@ -1238,8 +1230,7 @@
std::string fmt;
if (media_type == cricket::MEDIA_TYPE_VIDEO) {
- const VideoContentDescription* video_desc =
- static_cast<const VideoContentDescription*>(media_desc);
+ const VideoContentDescription* video_desc = media_desc->as_video();
for (std::vector<cricket::VideoCodec>::const_iterator it =
video_desc->codecs().begin();
it != video_desc->codecs().end(); ++it) {
@@ -1247,8 +1238,7 @@
fmt.append(rtc::ToString<int>(it->id));
}
} else if (media_type == cricket::MEDIA_TYPE_AUDIO) {
- const AudioContentDescription* audio_desc =
- static_cast<const AudioContentDescription*>(media_desc);
+ const AudioContentDescription* audio_desc = media_desc->as_audio();
for (std::vector<cricket::AudioCodec>::const_iterator it =
audio_desc->codecs().begin();
it != audio_desc->codecs().end(); ++it) {
@@ -1256,8 +1246,7 @@
fmt.append(rtc::ToString<int>(it->id));
}
} else if (media_type == cricket::MEDIA_TYPE_DATA) {
- const DataContentDescription* data_desc =
- static_cast<const DataContentDescription*>(media_desc);
+ const DataContentDescription* data_desc = media_desc->as_data();
if (IsDtlsSctp(media_desc->protocol())) {
fmt.append(" ");
@@ -1412,8 +1401,7 @@
AddLine(os.str(), message);
if (IsDtlsSctp(media_desc->protocol())) {
- const DataContentDescription* data_desc =
- static_cast<const DataContentDescription*>(media_desc);
+ const DataContentDescription* data_desc = media_desc->as_data();
bool use_sctpmap = data_desc->use_sctpmap();
BuildSctpContentAttributes(message, sctp_port, use_sctpmap);
} else if (IsRtp(media_desc->protocol())) {
@@ -1735,8 +1723,7 @@
RTC_DCHECK(media_desc != NULL);
std::ostringstream os;
if (media_type == cricket::MEDIA_TYPE_VIDEO) {
- const VideoContentDescription* video_desc =
- static_cast<const VideoContentDescription*>(media_desc);
+ const VideoContentDescription* video_desc = media_desc->as_video();
for (std::vector<cricket::VideoCodec>::const_iterator it =
video_desc->codecs().begin();
it != video_desc->codecs().end(); ++it) {
@@ -1753,8 +1740,7 @@
AddFmtpLine(*it, message);
}
} else if (media_type == cricket::MEDIA_TYPE_AUDIO) {
- const AudioContentDescription* audio_desc =
- static_cast<const AudioContentDescription*>(media_desc);
+ const AudioContentDescription* audio_desc = media_desc->as_audio();
std::vector<int> ptimes;
std::vector<int> maxptimes;
int max_minptime = 0;
@@ -1803,8 +1789,7 @@
AddAttributeLine(kCodecParamPTime, ptime, message);
}
} else if (media_type == cricket::MEDIA_TYPE_DATA) {
- const DataContentDescription* data_desc =
- static_cast<const DataContentDescription*>(media_desc);
+ const DataContentDescription* data_desc = media_desc->as_data();
for (std::vector<cricket::DataCodec>::const_iterator it =
data_desc->codecs().begin();
it != data_desc->codecs().end(); ++it) {
@@ -2689,8 +2674,7 @@
RTC_DCHECK(transport != NULL);
if (media_type == cricket::MEDIA_TYPE_AUDIO) {
- MaybeCreateStaticPayloadAudioCodecs(
- payload_types, static_cast<AudioContentDescription*>(media_desc));
+ MaybeCreateStaticPayloadAudioCodecs(payload_types, media_desc->as_audio());
}
// The media level "ice-ufrag" and "ice-pwd".
@@ -2839,8 +2823,7 @@
if (!ParseSctpPort(line, &sctp_port, error)) {
return false;
}
- if (!AddSctpDataCodec(static_cast<DataContentDescription*>(media_desc),
- sctp_port)) {
+ if (!AddSctpDataCodec(media_desc->as_data(), sctp_port)) {
return false;
}
} else if (IsRtp(protocol)) {
@@ -2943,8 +2926,7 @@
}
if (media_type == cricket::MEDIA_TYPE_AUDIO) {
- AudioContentDescription* audio_desc =
- static_cast<AudioContentDescription*>(media_desc);
+ AudioContentDescription* audio_desc = media_desc->as_audio();
UpdateFromWildcardCodecs(audio_desc);
// Verify audio codec ensures that no audio codec has been populated with
@@ -2957,8 +2939,7 @@
}
if (media_type == cricket::MEDIA_TYPE_VIDEO) {
- VideoContentDescription* video_desc =
- static_cast<VideoContentDescription*>(media_desc);
+ VideoContentDescription* video_desc = media_desc->as_video();
UpdateFromWildcardCodecs(video_desc);
// Verify video codec ensures that no video codec has been populated with
// only rtcp-fb.
@@ -3201,8 +3182,7 @@
return false;
}
if (media_type == cricket::MEDIA_TYPE_VIDEO) {
- VideoContentDescription* video_desc =
- static_cast<VideoContentDescription*>(media_desc);
+ VideoContentDescription* video_desc = media_desc->as_video();
UpdateCodec(payload_type, encoding_name,
video_desc);
} else if (media_type == cricket::MEDIA_TYPE_AUDIO) {
@@ -3217,13 +3197,11 @@
return false;
}
}
- AudioContentDescription* audio_desc =
- static_cast<AudioContentDescription*>(media_desc);
+ AudioContentDescription* audio_desc = media_desc->as_audio();
UpdateCodec(payload_type, encoding_name, clock_rate, 0, channels,
audio_desc);
} else if (media_type == cricket::MEDIA_TYPE_DATA) {
- DataContentDescription* data_desc =
- static_cast<DataContentDescription*>(media_desc);
+ DataContentDescription* data_desc = media_desc->as_data();
data_desc->AddCodec(cricket::DataCodec(payload_type, encoding_name));
}
return true;