diff --git a/media/base/stream_params.cc b/media/base/stream_params.cc index 2e96798043..0466a64ab8 100644 --- a/media/base/stream_params.cc +++ b/media/base/stream_params.cc @@ -20,32 +20,46 @@ namespace cricket { namespace { -std::string SsrcsToString(const std::vector& ssrcs) { - char buf[1024]; - rtc::SimpleStringBuilder sb(buf); - sb << "ssrcs:["; - for (std::vector::const_iterator it = ssrcs.begin(); - it != ssrcs.end(); ++it) { - if (it != ssrcs.begin()) { - sb << ","; - } - sb << *it; - } - sb << "]"; - return sb.str(); -} - -std::string RidsToString(const std::vector& rids) { - char buf[1024]; - rtc::SimpleStringBuilder sb(buf); - sb << "rids:["; +void AppendSsrcs(rtc::ArrayView ssrcs, + rtc::SimpleStringBuilder* sb) { + *sb << "ssrcs:["; const char* delimiter = ""; - for (const RidDescription& rid : rids) { - sb << delimiter << rid.rid; + for (uint32_t ssrc : ssrcs) { + *sb << delimiter << ssrc; delimiter = ","; } - sb << "]"; - return sb.str(); + *sb << "]"; +} + +void AppendSsrcGroups(rtc::ArrayView ssrc_groups, + rtc::SimpleStringBuilder* sb) { + *sb << "ssrc_groups:"; + const char* delimiter = ""; + for (const SsrcGroup& ssrc_group : ssrc_groups) { + *sb << delimiter << ssrc_group.ToString(); + delimiter = ","; + } +} + +void AppendStreamIds(rtc::ArrayView stream_ids, + rtc::SimpleStringBuilder* sb) { + *sb << "stream_ids:"; + const char* delimiter = ""; + for (const std::string& stream_id : stream_ids) { + *sb << delimiter << stream_id; + delimiter = ","; + } +} + +void AppendRids(rtc::ArrayView rids, + rtc::SimpleStringBuilder* sb) { + *sb << "rids:["; + const char* delimiter = ""; + for (const RidDescription& rid : rids) { + *sb << delimiter << rid.rid; + delimiter = ","; + } + *sb << "]"; } } // namespace @@ -83,7 +97,7 @@ std::string SsrcGroup::ToString() const { rtc::SimpleStringBuilder sb(buf); sb << "{"; sb << "semantics:" << semantics << ";"; - sb << SsrcsToString(ssrcs); + AppendSsrcs(ssrcs, &sb); sb << "}"; return sb.str(); } @@ -113,30 +127,18 @@ std::string StreamParams::ToString() const { if (!id.empty()) { sb << "id:" << id << ";"; } - sb << SsrcsToString(ssrcs) << ";"; - sb << "ssrc_groups:"; - for (std::vector::const_iterator it = ssrc_groups.begin(); - it != ssrc_groups.end(); ++it) { - if (it != ssrc_groups.begin()) { - sb << ","; - } - sb << it->ToString(); - } + AppendSsrcs(ssrcs, &sb); + sb << ";"; + AppendSsrcGroups(ssrc_groups, &sb); sb << ";"; if (!cname.empty()) { sb << "cname:" << cname << ";"; } - sb << "stream_ids:"; - for (std::vector::const_iterator it = stream_ids_.begin(); - it != stream_ids_.end(); ++it) { - if (it != stream_ids_.begin()) { - sb << ","; - } - sb << *it; - } + AppendStreamIds(stream_ids_, &sb); sb << ";"; if (!rids_.empty()) { - sb << RidsToString(rids_) << ";"; + AppendRids(rids_, &sb); + sb << ";"; } sb << "}"; return sb.str(); @@ -178,17 +180,16 @@ void StreamParams::GetPrimarySsrcs(std::vector* ssrcs) const { if (sim_group == NULL) { ssrcs->push_back(first_ssrc()); } else { - for (size_t i = 0; i < sim_group->ssrcs.size(); ++i) { - ssrcs->push_back(sim_group->ssrcs[i]); - } + ssrcs->insert(ssrcs->end(), sim_group->ssrcs.begin(), + sim_group->ssrcs.end()); } } void StreamParams::GetFidSsrcs(const std::vector& primary_ssrcs, std::vector* fid_ssrcs) const { - for (size_t i = 0; i < primary_ssrcs.size(); ++i) { + for (uint32_t primary_ssrc : primary_ssrcs) { uint32_t fid_ssrc; - if (GetFidSsrc(primary_ssrcs[i], &fid_ssrc)) { + if (GetFidSsrc(primary_ssrc, &fid_ssrc)) { fid_ssrcs->push_back(fid_ssrc); } } @@ -202,22 +203,17 @@ bool StreamParams::AddSecondarySsrc(const std::string& semantics, } ssrcs.push_back(secondary_ssrc); - std::vector ssrc_vector; - ssrc_vector.push_back(primary_ssrc); - ssrc_vector.push_back(secondary_ssrc); - SsrcGroup ssrc_group = SsrcGroup(semantics, ssrc_vector); - ssrc_groups.push_back(ssrc_group); + ssrc_groups.push_back(SsrcGroup(semantics, {primary_ssrc, secondary_ssrc})); return true; } bool StreamParams::GetSecondarySsrc(const std::string& semantics, uint32_t primary_ssrc, uint32_t* secondary_ssrc) const { - for (std::vector::const_iterator it = ssrc_groups.begin(); - it != ssrc_groups.end(); ++it) { - if (it->has_semantics(semantics) && it->ssrcs.size() >= 2 && - it->ssrcs[0] == primary_ssrc) { - *secondary_ssrc = it->ssrcs[1]; + for (const SsrcGroup& ssrc_group : ssrc_groups) { + if (ssrc_group.has_semantics(semantics) && ssrc_group.ssrcs.size() >= 2 && + ssrc_group.ssrcs[0] == primary_ssrc) { + *secondary_ssrc = ssrc_group.ssrcs[1]; return true; } } diff --git a/media/base/stream_params.h b/media/base/stream_params.h index 42f191275d..80a3a396c1 100644 --- a/media/base/stream_params.h +++ b/media/base/stream_params.h @@ -122,10 +122,9 @@ struct StreamParams { return (get_ssrc_group(semantics) != NULL); } const SsrcGroup* get_ssrc_group(const std::string& semantics) const { - for (std::vector::const_iterator it = ssrc_groups.begin(); - it != ssrc_groups.end(); ++it) { - if (it->has_semantics(semantics)) { - return &(*it); + for (const SsrcGroup& ssrc_group : ssrc_groups) { + if (ssrc_group.has_semantics(semantics)) { + return &ssrc_group; } } return NULL;