Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(104)

Unified Diff: webrtc/media/engine/webrtcvideoengine.cc

Issue 3002213002: Refactor some loops and remove double iteration. (Closed)
Patch Set: rebase Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/media/engine/webrtcvideoengine.cc
diff --git a/webrtc/media/engine/webrtcvideoengine.cc b/webrtc/media/engine/webrtcvideoengine.cc
index 030544461a982c48b5b693d14fd1e07e6f41fe3f..020878ad6c5779a6af1cee8dc539c9ce391daae5 100644
--- a/webrtc/media/engine/webrtcvideoengine.cc
+++ b/webrtc/media/engine/webrtcvideoengine.cc
@@ -2155,13 +2155,13 @@ WebRtcVideoChannel::WebRtcVideoReceiveStream::CreateOrReuseVideoDecoder(
const VideoCodec& codec) {
webrtc::VideoCodecType type = webrtc::PayloadStringToCodecType(codec.name);
- for (size_t i = 0; i < old_decoders->size(); ++i) {
- if ((*old_decoders)[i].type == type) {
- AllocatedDecoder decoder = (*old_decoders)[i];
- (*old_decoders)[i] = old_decoders->back();
- old_decoders->pop_back();
- return decoder;
- }
+ const auto& found = std::find_if(
+ old_decoders->begin(), old_decoders->end(),
+ [type](const AllocatedDecoder decoder) { return decoder.type == type; });
+ if (found != old_decoders->end()) {
+ AllocatedDecoder decoder = *found;
+ old_decoders->erase(found);
+ return decoder;
}
if (external_decoder_factory_ != NULL) {
@@ -2185,21 +2185,18 @@ void WebRtcVideoChannel::WebRtcVideoReceiveStream::ConfigureCodecs(
*old_decoders = allocated_decoders_;
allocated_decoders_.clear();
config_.decoders.clear();
- for (size_t i = 0; i < recv_codecs.size(); ++i) {
+ config_.rtp.rtx_associated_payload_types.clear();
+ for (const auto& recv_codec : recv_codecs) {
AllocatedDecoder allocated_decoder =
- CreateOrReuseVideoDecoder(old_decoders, recv_codecs[i].codec);
+ CreateOrReuseVideoDecoder(old_decoders, recv_codec.codec);
allocated_decoders_.push_back(allocated_decoder);
webrtc::VideoReceiveStream::Decoder decoder;
decoder.decoder = allocated_decoder.decoder;
- decoder.payload_type = recv_codecs[i].codec.id;
- decoder.payload_name = recv_codecs[i].codec.name;
- decoder.codec_params = recv_codecs[i].codec.params;
+ decoder.payload_type = recv_codec.codec.id;
+ decoder.payload_name = recv_codec.codec.name;
+ decoder.codec_params = recv_codec.codec.params;
config_.decoders.push_back(decoder);
- }
-
- config_.rtp.rtx_associated_payload_types.clear();
- for (const VideoCodecSettings& recv_codec : recv_codecs) {
config_.rtp.rtx_associated_payload_types[recv_codec.rtx_payload_type] =
recv_codec.codec.id;
}
@@ -2344,12 +2341,10 @@ void WebRtcVideoChannel::WebRtcVideoReceiveStream::
void WebRtcVideoChannel::WebRtcVideoReceiveStream::ClearDecoders(
std::vector<AllocatedDecoder>* allocated_decoders) {
- for (size_t i = 0; i < allocated_decoders->size(); ++i) {
- if ((*allocated_decoders)[i].external) {
- external_decoder_factory_->DestroyVideoDecoder(
- (*allocated_decoders)[i].external_decoder);
- }
- delete (*allocated_decoders)[i].decoder;
+ for (auto& dec : *allocated_decoders) {
+ if (dec.external)
+ external_decoder_factory_->DestroyVideoDecoder(dec.external_decoder);
+ delete dec.decoder;
}
allocated_decoders->clear();
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698