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

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

Issue 2052233002: Enable passing receive stream ID to the decoder factory. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Formatting Created 4 years, 6 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
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 2234 matching lines...) Expand 10 before | Expand all | Expand 10 after
2245 ClearDecoders(&allocated_decoders_); 2245 ClearDecoders(&allocated_decoders_);
2246 } 2246 }
2247 2247
2248 const std::vector<uint32_t>& 2248 const std::vector<uint32_t>&
2249 WebRtcVideoChannel2::WebRtcVideoReceiveStream::GetSsrcs() const { 2249 WebRtcVideoChannel2::WebRtcVideoReceiveStream::GetSsrcs() const {
2250 return ssrcs_; 2250 return ssrcs_;
2251 } 2251 }
2252 2252
2253 WebRtcVideoChannel2::WebRtcVideoReceiveStream::AllocatedDecoder 2253 WebRtcVideoChannel2::WebRtcVideoReceiveStream::AllocatedDecoder
2254 WebRtcVideoChannel2::WebRtcVideoReceiveStream::CreateOrReuseVideoDecoder( 2254 WebRtcVideoChannel2::WebRtcVideoReceiveStream::CreateOrReuseVideoDecoder(
2255 uint32_t ssrc,
2255 std::vector<AllocatedDecoder>* old_decoders, 2256 std::vector<AllocatedDecoder>* old_decoders,
2256 const VideoCodec& codec) { 2257 const VideoCodec& codec) {
2257 webrtc::VideoCodecType type = CodecTypeFromName(codec.name); 2258 webrtc::VideoCodecType type = CodecTypeFromName(codec.name);
2258 2259
2259 for (size_t i = 0; i < old_decoders->size(); ++i) { 2260 for (size_t i = 0; i < old_decoders->size(); ++i) {
2260 if ((*old_decoders)[i].type == type) { 2261 if ((*old_decoders)[i].type == type) {
2261 AllocatedDecoder decoder = (*old_decoders)[i]; 2262 AllocatedDecoder decoder = (*old_decoders)[i];
2262 (*old_decoders)[i] = old_decoders->back(); 2263 (*old_decoders)[i] = old_decoders->back();
2263 old_decoders->pop_back(); 2264 old_decoders->pop_back();
2264 return decoder; 2265 return decoder;
2265 } 2266 }
2266 } 2267 }
2267 2268
2268 if (external_decoder_factory_ != NULL) { 2269 if (external_decoder_factory_ != NULL) {
2269 webrtc::VideoDecoder* decoder = 2270 webrtc::VideoDecoder* decoder =
2270 external_decoder_factory_->CreateVideoDecoder(type); 2271 external_decoder_factory_->CreateVideoDecoderForSsrc(ssrc, type);
2271 if (decoder != NULL) { 2272 if (decoder != NULL) {
2272 return AllocatedDecoder(decoder, type, true); 2273 return AllocatedDecoder(decoder, type, true);
2273 } 2274 }
2274 } 2275 }
2275 2276
2276 if (type == webrtc::kVideoCodecVP8) { 2277 if (type == webrtc::kVideoCodecVP8) {
2277 return AllocatedDecoder( 2278 return AllocatedDecoder(
2278 webrtc::VideoDecoder::Create(webrtc::VideoDecoder::kVp8), type, false); 2279 webrtc::VideoDecoder::Create(webrtc::VideoDecoder::kVp8), type, false);
2279 } 2280 }
2280 2281
(...skipping 12 matching lines...) Expand all
2293 webrtc::kVideoCodecUnknown, false); 2294 webrtc::kVideoCodecUnknown, false);
2294 } 2295 }
2295 2296
2296 void WebRtcVideoChannel2::WebRtcVideoReceiveStream::ConfigureCodecs( 2297 void WebRtcVideoChannel2::WebRtcVideoReceiveStream::ConfigureCodecs(
2297 const std::vector<VideoCodecSettings>& recv_codecs, 2298 const std::vector<VideoCodecSettings>& recv_codecs,
2298 std::vector<AllocatedDecoder>* old_decoders) { 2299 std::vector<AllocatedDecoder>* old_decoders) {
2299 *old_decoders = allocated_decoders_; 2300 *old_decoders = allocated_decoders_;
2300 allocated_decoders_.clear(); 2301 allocated_decoders_.clear();
2301 config_.decoders.clear(); 2302 config_.decoders.clear();
2302 for (size_t i = 0; i < recv_codecs.size(); ++i) { 2303 for (size_t i = 0; i < recv_codecs.size(); ++i) {
2304 uint32_t ssrc = ssrcs_.empty() ? 0 : ssrcs_[0];
2303 AllocatedDecoder allocated_decoder = 2305 AllocatedDecoder allocated_decoder =
2304 CreateOrReuseVideoDecoder(old_decoders, recv_codecs[i].codec); 2306 CreateOrReuseVideoDecoder(ssrc, old_decoders, recv_codecs[i].codec);
2305 allocated_decoders_.push_back(allocated_decoder); 2307 allocated_decoders_.push_back(allocated_decoder);
2306 2308
2307 webrtc::VideoReceiveStream::Decoder decoder; 2309 webrtc::VideoReceiveStream::Decoder decoder;
2308 decoder.decoder = allocated_decoder.decoder; 2310 decoder.decoder = allocated_decoder.decoder;
2309 decoder.payload_type = recv_codecs[i].codec.id; 2311 decoder.payload_type = recv_codecs[i].codec.id;
2310 decoder.payload_name = recv_codecs[i].codec.name; 2312 decoder.payload_name = recv_codecs[i].codec.name;
2311 config_.decoders.push_back(decoder); 2313 config_.decoders.push_back(decoder);
2312 } 2314 }
2313 2315
2314 // TODO(pbos): Reconfigure RTX based on incoming recv_codecs. 2316 // TODO(pbos): Reconfigure RTX based on incoming recv_codecs.
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
2613 rtx_mapping[video_codecs[i].codec.id] != 2615 rtx_mapping[video_codecs[i].codec.id] !=
2614 fec_settings.red_payload_type) { 2616 fec_settings.red_payload_type) {
2615 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; 2617 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id];
2616 } 2618 }
2617 } 2619 }
2618 2620
2619 return video_codecs; 2621 return video_codecs;
2620 } 2622 }
2621 2623
2622 } // namespace cricket 2624 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698