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

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

Issue 2523773003: Keep all codec parameters in VideoReceiveStream::Decoder (Closed)
Patch Set: Created 4 years 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 2255 matching lines...) Expand 10 before | Expand all | Expand 10 after
2266 if (type == webrtc::kVideoCodecH264) { 2266 if (type == webrtc::kVideoCodecH264) {
2267 return AllocatedDecoder( 2267 return AllocatedDecoder(
2268 webrtc::VideoDecoder::Create(webrtc::VideoDecoder::kH264), type, false); 2268 webrtc::VideoDecoder::Create(webrtc::VideoDecoder::kH264), type, false);
2269 } 2269 }
2270 2270
2271 return AllocatedDecoder( 2271 return AllocatedDecoder(
2272 webrtc::VideoDecoder::Create(webrtc::VideoDecoder::kUnsupportedCodec), 2272 webrtc::VideoDecoder::Create(webrtc::VideoDecoder::kUnsupportedCodec),
2273 webrtc::kVideoCodecUnknown, false); 2273 webrtc::kVideoCodecUnknown, false);
2274 } 2274 }
2275 2275
2276 void ConfigureDecoderSpecifics(webrtc::VideoReceiveStream::Decoder* decoder,
2277 const cricket::VideoCodec& recv_video_codec) {
2278 if (recv_video_codec.name.compare("H264") == 0) {
2279 auto it = recv_video_codec.params.find("sprop-parameter-sets");
2280 if (it != recv_video_codec.params.end()) {
2281 decoder->decoder_specific.h264_extra_settings =
2282 rtc::Optional<webrtc::VideoDecoderH264Settings>(
2283 webrtc::VideoDecoderH264Settings());
2284 decoder->decoder_specific.h264_extra_settings->sprop_parameter_sets =
2285 it->second;
2286 }
2287 }
2288 }
2289
2290 void WebRtcVideoChannel2::WebRtcVideoReceiveStream::ConfigureCodecs( 2276 void WebRtcVideoChannel2::WebRtcVideoReceiveStream::ConfigureCodecs(
2291 const std::vector<VideoCodecSettings>& recv_codecs, 2277 const std::vector<VideoCodecSettings>& recv_codecs,
2292 std::vector<AllocatedDecoder>* old_decoders) { 2278 std::vector<AllocatedDecoder>* old_decoders) {
2293 *old_decoders = allocated_decoders_; 2279 *old_decoders = allocated_decoders_;
2294 allocated_decoders_.clear(); 2280 allocated_decoders_.clear();
2295 config_.decoders.clear(); 2281 config_.decoders.clear();
2296 for (size_t i = 0; i < recv_codecs.size(); ++i) { 2282 for (size_t i = 0; i < recv_codecs.size(); ++i) {
2297 AllocatedDecoder allocated_decoder = 2283 AllocatedDecoder allocated_decoder =
2298 CreateOrReuseVideoDecoder(old_decoders, recv_codecs[i].codec); 2284 CreateOrReuseVideoDecoder(old_decoders, recv_codecs[i].codec);
2299 allocated_decoders_.push_back(allocated_decoder); 2285 allocated_decoders_.push_back(allocated_decoder);
2300 2286
2301 webrtc::VideoReceiveStream::Decoder decoder; 2287 webrtc::VideoReceiveStream::Decoder decoder;
2302 decoder.decoder = allocated_decoder.decoder; 2288 decoder.decoder = allocated_decoder.decoder;
2303 decoder.payload_type = recv_codecs[i].codec.id; 2289 decoder.payload_type = recv_codecs[i].codec.id;
2304 decoder.payload_name = recv_codecs[i].codec.name; 2290 decoder.payload_name = recv_codecs[i].codec.name;
2305 ConfigureDecoderSpecifics(&decoder, recv_codecs[i].codec); 2291 decoder.codec_params = recv_codecs[i].codec.params;
2306 config_.decoders.push_back(decoder); 2292 config_.decoders.push_back(decoder);
2307 } 2293 }
2308 2294
2309 // TODO(pbos): Reconfigure RTX based on incoming recv_codecs. 2295 // TODO(pbos): Reconfigure RTX based on incoming recv_codecs.
2310 config_.rtp.ulpfec = recv_codecs.front().ulpfec; 2296 config_.rtp.ulpfec = recv_codecs.front().ulpfec;
2311 flexfec_config_.flexfec_payload_type = 2297 flexfec_config_.flexfec_payload_type =
2312 recv_codecs.front().flexfec.flexfec_payload_type; 2298 recv_codecs.front().flexfec.flexfec_payload_type;
2313 config_.rtp.nack.rtp_history_ms = 2299 config_.rtp.nack.rtp_history_ms =
2314 HasNack(recv_codecs.begin()->codec) ? kNackHistoryMs : 0; 2300 HasNack(recv_codecs.begin()->codec) ? kNackHistoryMs : 0;
2315 } 2301 }
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
2615 rtx_mapping[video_codecs[i].codec.id] != 2601 rtx_mapping[video_codecs[i].codec.id] !=
2616 ulpfec_config.red_payload_type) { 2602 ulpfec_config.red_payload_type) {
2617 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; 2603 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id];
2618 } 2604 }
2619 } 2605 }
2620 2606
2621 return video_codecs; 2607 return video_codecs;
2622 } 2608 }
2623 2609
2624 } // namespace cricket 2610 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698