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

Side by Side Diff: webrtc/media/engine/webrtcvideoengine.cc

Issue 3002213002: Refactor some loops and remove double iteration. (Closed)
Patch Set: rebase Created 3 years, 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 2137 matching lines...) Expand 10 before | Expand all | Expand 10 after
2148 return rtc::Optional<uint32_t>(primary_ssrcs[0]); 2148 return rtc::Optional<uint32_t>(primary_ssrcs[0]);
2149 } 2149 }
2150 } 2150 }
2151 2151
2152 WebRtcVideoChannel::WebRtcVideoReceiveStream::AllocatedDecoder 2152 WebRtcVideoChannel::WebRtcVideoReceiveStream::AllocatedDecoder
2153 WebRtcVideoChannel::WebRtcVideoReceiveStream::CreateOrReuseVideoDecoder( 2153 WebRtcVideoChannel::WebRtcVideoReceiveStream::CreateOrReuseVideoDecoder(
2154 std::vector<AllocatedDecoder>* old_decoders, 2154 std::vector<AllocatedDecoder>* old_decoders,
2155 const VideoCodec& codec) { 2155 const VideoCodec& codec) {
2156 webrtc::VideoCodecType type = webrtc::PayloadStringToCodecType(codec.name); 2156 webrtc::VideoCodecType type = webrtc::PayloadStringToCodecType(codec.name);
2157 2157
2158 for (size_t i = 0; i < old_decoders->size(); ++i) { 2158 const auto& found = std::find_if(
2159 if ((*old_decoders)[i].type == type) { 2159 old_decoders->begin(), old_decoders->end(),
2160 AllocatedDecoder decoder = (*old_decoders)[i]; 2160 [type](const AllocatedDecoder decoder) { return decoder.type == type; });
2161 (*old_decoders)[i] = old_decoders->back(); 2161 if (found != old_decoders->end()) {
2162 old_decoders->pop_back(); 2162 AllocatedDecoder decoder = *found;
2163 return decoder; 2163 old_decoders->erase(found);
2164 } 2164 return decoder;
2165 } 2165 }
2166 2166
2167 if (external_decoder_factory_ != NULL) { 2167 if (external_decoder_factory_ != NULL) {
2168 webrtc::VideoDecoder* decoder = 2168 webrtc::VideoDecoder* decoder =
2169 external_decoder_factory_->CreateVideoDecoderWithParams( 2169 external_decoder_factory_->CreateVideoDecoderWithParams(
2170 type, {stream_params_.id}); 2170 type, {stream_params_.id});
2171 if (decoder != NULL) { 2171 if (decoder != NULL) {
2172 return AllocatedDecoder(decoder, type, true /* is_external */); 2172 return AllocatedDecoder(decoder, type, true /* is_external */);
2173 } 2173 }
2174 } 2174 }
2175 2175
2176 InternalDecoderFactory internal_decoder_factory; 2176 InternalDecoderFactory internal_decoder_factory;
2177 return AllocatedDecoder(internal_decoder_factory.CreateVideoDecoderWithParams( 2177 return AllocatedDecoder(internal_decoder_factory.CreateVideoDecoderWithParams(
2178 type, {stream_params_.id}), 2178 type, {stream_params_.id}),
2179 type, false /* is_external */); 2179 type, false /* is_external */);
2180 } 2180 }
2181 2181
2182 void WebRtcVideoChannel::WebRtcVideoReceiveStream::ConfigureCodecs( 2182 void WebRtcVideoChannel::WebRtcVideoReceiveStream::ConfigureCodecs(
2183 const std::vector<VideoCodecSettings>& recv_codecs, 2183 const std::vector<VideoCodecSettings>& recv_codecs,
2184 std::vector<AllocatedDecoder>* old_decoders) { 2184 std::vector<AllocatedDecoder>* old_decoders) {
2185 *old_decoders = allocated_decoders_; 2185 *old_decoders = allocated_decoders_;
2186 allocated_decoders_.clear(); 2186 allocated_decoders_.clear();
2187 config_.decoders.clear(); 2187 config_.decoders.clear();
2188 for (size_t i = 0; i < recv_codecs.size(); ++i) { 2188 config_.rtp.rtx_associated_payload_types.clear();
2189 for (const auto& recv_codec : recv_codecs) {
2189 AllocatedDecoder allocated_decoder = 2190 AllocatedDecoder allocated_decoder =
2190 CreateOrReuseVideoDecoder(old_decoders, recv_codecs[i].codec); 2191 CreateOrReuseVideoDecoder(old_decoders, recv_codec.codec);
2191 allocated_decoders_.push_back(allocated_decoder); 2192 allocated_decoders_.push_back(allocated_decoder);
2192 2193
2193 webrtc::VideoReceiveStream::Decoder decoder; 2194 webrtc::VideoReceiveStream::Decoder decoder;
2194 decoder.decoder = allocated_decoder.decoder; 2195 decoder.decoder = allocated_decoder.decoder;
2195 decoder.payload_type = recv_codecs[i].codec.id; 2196 decoder.payload_type = recv_codec.codec.id;
2196 decoder.payload_name = recv_codecs[i].codec.name; 2197 decoder.payload_name = recv_codec.codec.name;
2197 decoder.codec_params = recv_codecs[i].codec.params; 2198 decoder.codec_params = recv_codec.codec.params;
2198 config_.decoders.push_back(decoder); 2199 config_.decoders.push_back(decoder);
2199 }
2200
2201 config_.rtp.rtx_associated_payload_types.clear();
2202 for (const VideoCodecSettings& recv_codec : recv_codecs) {
2203 config_.rtp.rtx_associated_payload_types[recv_codec.rtx_payload_type] = 2200 config_.rtp.rtx_associated_payload_types[recv_codec.rtx_payload_type] =
2204 recv_codec.codec.id; 2201 recv_codec.codec.id;
2205 } 2202 }
2206 2203
2207 config_.rtp.ulpfec = recv_codecs.front().ulpfec; 2204 config_.rtp.ulpfec = recv_codecs.front().ulpfec;
2208 2205
2209 config_.rtp.nack.rtp_history_ms = 2206 config_.rtp.nack.rtp_history_ms =
2210 HasNack(recv_codecs.begin()->codec) ? kNackHistoryMs : 0; 2207 HasNack(recv_codecs.begin()->codec) ? kNackHistoryMs : 0;
2211 } 2208 }
2212 2209
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
2337 2334
2338 void WebRtcVideoChannel::WebRtcVideoReceiveStream:: 2335 void WebRtcVideoChannel::WebRtcVideoReceiveStream::
2339 MaybeDissociateFlexfecFromVideo() { 2336 MaybeDissociateFlexfecFromVideo() {
2340 if (stream_ && flexfec_stream_) { 2337 if (stream_ && flexfec_stream_) {
2341 stream_->RemoveSecondarySink(flexfec_stream_); 2338 stream_->RemoveSecondarySink(flexfec_stream_);
2342 } 2339 }
2343 } 2340 }
2344 2341
2345 void WebRtcVideoChannel::WebRtcVideoReceiveStream::ClearDecoders( 2342 void WebRtcVideoChannel::WebRtcVideoReceiveStream::ClearDecoders(
2346 std::vector<AllocatedDecoder>* allocated_decoders) { 2343 std::vector<AllocatedDecoder>* allocated_decoders) {
2347 for (size_t i = 0; i < allocated_decoders->size(); ++i) { 2344 for (auto& dec : *allocated_decoders) {
2348 if ((*allocated_decoders)[i].external) { 2345 if (dec.external)
2349 external_decoder_factory_->DestroyVideoDecoder( 2346 external_decoder_factory_->DestroyVideoDecoder(dec.external_decoder);
2350 (*allocated_decoders)[i].external_decoder); 2347 delete dec.decoder;
2351 }
2352 delete (*allocated_decoders)[i].decoder;
2353 } 2348 }
2354 allocated_decoders->clear(); 2349 allocated_decoders->clear();
2355 } 2350 }
2356 2351
2357 void WebRtcVideoChannel::WebRtcVideoReceiveStream::OnFrame( 2352 void WebRtcVideoChannel::WebRtcVideoReceiveStream::OnFrame(
2358 const webrtc::VideoFrame& frame) { 2353 const webrtc::VideoFrame& frame) {
2359 rtc::CritScope crit(&sink_lock_); 2354 rtc::CritScope crit(&sink_lock_);
2360 2355
2361 if (first_frame_timestamp_ < 0) 2356 if (first_frame_timestamp_ < 0)
2362 first_frame_timestamp_ = frame.timestamp(); 2357 first_frame_timestamp_ = frame.timestamp();
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
2628 stream.temporal_layer_thresholds_bps.resize(GetDefaultVp9TemporalLayers() - 2623 stream.temporal_layer_thresholds_bps.resize(GetDefaultVp9TemporalLayers() -
2629 1); 2624 1);
2630 } 2625 }
2631 2626
2632 std::vector<webrtc::VideoStream> streams; 2627 std::vector<webrtc::VideoStream> streams;
2633 streams.push_back(stream); 2628 streams.push_back(stream);
2634 return streams; 2629 return streams;
2635 } 2630 }
2636 2631
2637 } // namespace cricket 2632 } // namespace cricket
OLDNEW
« 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