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

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

Issue 2685783014: Replace NULL with nullptr in all C++ files. (Closed)
Patch Set: Fixing android. Created 3 years, 10 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 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 for (const auto& codec : codecs) { 94 for (const auto& codec : codecs) {
95 if (CodecNamesEq(codec.name.c_str(), kVp8CodecName)) { 95 if (CodecNamesEq(codec.name.c_str(), kVp8CodecName)) {
96 return true; 96 return true;
97 } 97 }
98 } 98 }
99 return false; 99 return false;
100 } 100 }
101 101
102 webrtc::VideoEncoder* CreateVideoEncoder( 102 webrtc::VideoEncoder* CreateVideoEncoder(
103 const cricket::VideoCodec& codec) override { 103 const cricket::VideoCodec& codec) override {
104 RTC_DCHECK(factory_ != NULL); 104 RTC_DCHECK(factory_ != nullptr);
105 // If it's a codec type we can simulcast, create a wrapped encoder. 105 // If it's a codec type we can simulcast, create a wrapped encoder.
106 if (CodecNamesEq(codec.name.c_str(), kVp8CodecName)) { 106 if (CodecNamesEq(codec.name.c_str(), kVp8CodecName)) {
107 return new webrtc::SimulcastEncoderAdapter( 107 return new webrtc::SimulcastEncoderAdapter(
108 new EncoderFactoryAdapter(factory_)); 108 new EncoderFactoryAdapter(factory_));
109 } 109 }
110 webrtc::VideoEncoder* encoder = factory_->CreateVideoEncoder(codec); 110 webrtc::VideoEncoder* encoder = factory_->CreateVideoEncoder(codec);
111 if (encoder) { 111 if (encoder) {
112 non_simulcast_encoders_.push_back(encoder); 112 non_simulcast_encoders_.push_back(encoder);
113 } 113 }
114 return encoder; 114 return encoder;
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 // VP9 denoising is disabled by default. 416 // VP9 denoising is disabled by default.
417 vp9_settings.denoisingOn = codec_default_denoising ? false : denoising; 417 vp9_settings.denoisingOn = codec_default_denoising ? false : denoising;
418 vp9_settings.frameDroppingOn = frame_dropping; 418 vp9_settings.frameDroppingOn = frame_dropping;
419 return new rtc::RefCountedObject< 419 return new rtc::RefCountedObject<
420 webrtc::VideoEncoderConfig::Vp9EncoderSpecificSettings>(vp9_settings); 420 webrtc::VideoEncoderConfig::Vp9EncoderSpecificSettings>(vp9_settings);
421 } 421 }
422 return nullptr; 422 return nullptr;
423 } 423 }
424 424
425 DefaultUnsignalledSsrcHandler::DefaultUnsignalledSsrcHandler() 425 DefaultUnsignalledSsrcHandler::DefaultUnsignalledSsrcHandler()
426 : default_recv_ssrc_(0), default_sink_(NULL) {} 426 : default_recv_ssrc_(0), default_sink_(nullptr) {}
427 427
428 UnsignalledSsrcHandler::Action DefaultUnsignalledSsrcHandler::OnUnsignalledSsrc( 428 UnsignalledSsrcHandler::Action DefaultUnsignalledSsrcHandler::OnUnsignalledSsrc(
429 WebRtcVideoChannel2* channel, 429 WebRtcVideoChannel2* channel,
430 uint32_t ssrc) { 430 uint32_t ssrc) {
431 if (default_recv_ssrc_ != 0) { // Already one default stream. 431 if (default_recv_ssrc_ != 0) { // Already one default stream.
432 LOG(LS_WARNING) << "Unknown SSRC, but default receive stream already set."; 432 LOG(LS_WARNING) << "Unknown SSRC, but default receive stream already set.";
433 return kDropPacket; 433 return kDropPacket;
434 } 434 }
435 435
436 StreamParams sp; 436 StreamParams sp;
(...skipping 17 matching lines...) Expand all
454 VideoMediaChannel* channel, 454 VideoMediaChannel* channel,
455 rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) { 455 rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) {
456 default_sink_ = sink; 456 default_sink_ = sink;
457 if (default_recv_ssrc_ != 0) { 457 if (default_recv_ssrc_ != 0) {
458 channel->SetSink(default_recv_ssrc_, default_sink_); 458 channel->SetSink(default_recv_ssrc_, default_sink_);
459 } 459 }
460 } 460 }
461 461
462 WebRtcVideoEngine2::WebRtcVideoEngine2() 462 WebRtcVideoEngine2::WebRtcVideoEngine2()
463 : initialized_(false), 463 : initialized_(false),
464 external_decoder_factory_(NULL), 464 external_decoder_factory_(nullptr),
465 external_encoder_factory_(NULL) { 465 external_encoder_factory_(nullptr) {
466 LOG(LS_INFO) << "WebRtcVideoEngine2::WebRtcVideoEngine2()"; 466 LOG(LS_INFO) << "WebRtcVideoEngine2::WebRtcVideoEngine2()";
467 } 467 }
468 468
469 WebRtcVideoEngine2::~WebRtcVideoEngine2() { 469 WebRtcVideoEngine2::~WebRtcVideoEngine2() {
470 LOG(LS_INFO) << "WebRtcVideoEngine2::~WebRtcVideoEngine2"; 470 LOG(LS_INFO) << "WebRtcVideoEngine2::~WebRtcVideoEngine2";
471 } 471 }
472 472
473 void WebRtcVideoEngine2::Init() { 473 void WebRtcVideoEngine2::Init() {
474 LOG(LS_INFO) << "WebRtcVideoEngine2::Init"; 474 LOG(LS_INFO) << "WebRtcVideoEngine2::Init";
475 initialized_ = true; 475 initialized_ = true;
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 // been moved to VideoBroadcaster. So remove the argument from this 1010 // been moved to VideoBroadcaster. So remove the argument from this
1011 // method. 1011 // method.
1012 bool WebRtcVideoChannel2::SetVideoSend( 1012 bool WebRtcVideoChannel2::SetVideoSend(
1013 uint32_t ssrc, 1013 uint32_t ssrc,
1014 bool enable, 1014 bool enable,
1015 const VideoOptions* options, 1015 const VideoOptions* options,
1016 rtc::VideoSourceInterface<webrtc::VideoFrame>* source) { 1016 rtc::VideoSourceInterface<webrtc::VideoFrame>* source) {
1017 TRACE_EVENT0("webrtc", "SetVideoSend"); 1017 TRACE_EVENT0("webrtc", "SetVideoSend");
1018 RTC_DCHECK(ssrc != 0); 1018 RTC_DCHECK(ssrc != 0);
1019 LOG(LS_INFO) << "SetVideoSend (ssrc= " << ssrc << ", enable = " << enable 1019 LOG(LS_INFO) << "SetVideoSend (ssrc= " << ssrc << ", enable = " << enable
1020 << ", options: " << (options ? options->ToString() : "nullptr") 1020 << ", options: " << (options ? options->ToString() : "null")
1021 << ", source = " << (source ? "(source)" : "nullptr") << ")"; 1021 << ", source = " << (source ? "(source)" : "null") << ")";
1022 1022
1023 rtc::CritScope stream_lock(&stream_crit_); 1023 rtc::CritScope stream_lock(&stream_crit_);
1024 const auto& kv = send_streams_.find(ssrc); 1024 const auto& kv = send_streams_.find(ssrc);
1025 if (kv == send_streams_.end()) { 1025 if (kv == send_streams_.end()) {
1026 // Allow unknown ssrc only if source is null. 1026 // Allow unknown ssrc only if source is null.
1027 RTC_CHECK(source == nullptr); 1027 RTC_CHECK(source == nullptr);
1028 LOG(LS_ERROR) << "No sending stream on ssrc " << ssrc; 1028 LOG(LS_ERROR) << "No sending stream on ssrc " << ssrc;
1029 return false; 1029 return false;
1030 } 1030 }
1031 1031
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
1256 } 1256 }
1257 DeleteReceiveStream(stream->second); 1257 DeleteReceiveStream(stream->second);
1258 receive_streams_.erase(stream); 1258 receive_streams_.erase(stream);
1259 1259
1260 return true; 1260 return true;
1261 } 1261 }
1262 1262
1263 bool WebRtcVideoChannel2::SetSink( 1263 bool WebRtcVideoChannel2::SetSink(
1264 uint32_t ssrc, 1264 uint32_t ssrc,
1265 rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) { 1265 rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) {
1266 LOG(LS_INFO) << "SetSink: ssrc:" << ssrc << " " 1266 LOG(LS_INFO) << "SetSink: ssrc:" << ssrc << " " << (sink ? "(ptr)" : "null");
1267 << (sink ? "(ptr)" : "nullptr");
1268 if (ssrc == 0) { 1267 if (ssrc == 0) {
1269 default_unsignalled_ssrc_handler_.SetDefaultSink(this, sink); 1268 default_unsignalled_ssrc_handler_.SetDefaultSink(this, sink);
1270 return true; 1269 return true;
1271 } 1270 }
1272 1271
1273 rtc::CritScope stream_lock(&stream_crit_); 1272 rtc::CritScope stream_lock(&stream_crit_);
1274 std::map<uint32_t, WebRtcVideoReceiveStream*>::iterator it = 1273 std::map<uint32_t, WebRtcVideoReceiveStream*>::iterator it =
1275 receive_streams_.find(ssrc); 1274 receive_streams_.find(ssrc);
1276 if (it == receive_streams_.end()) { 1275 if (it == receive_streams_.end()) {
1277 return false; 1276 return false;
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
1586 } 1585 }
1587 parameters_.config.rtp.rtcp_mode = send_params.rtcp.reduced_size 1586 parameters_.config.rtp.rtcp_mode = send_params.rtcp.reduced_size
1588 ? webrtc::RtcpMode::kReducedSize 1587 ? webrtc::RtcpMode::kReducedSize
1589 : webrtc::RtcpMode::kCompound; 1588 : webrtc::RtcpMode::kCompound;
1590 if (codec_settings) { 1589 if (codec_settings) {
1591 SetCodec(*codec_settings); 1590 SetCodec(*codec_settings);
1592 } 1591 }
1593 } 1592 }
1594 1593
1595 WebRtcVideoChannel2::WebRtcVideoSendStream::~WebRtcVideoSendStream() { 1594 WebRtcVideoChannel2::WebRtcVideoSendStream::~WebRtcVideoSendStream() {
1596 if (stream_ != NULL) { 1595 if (stream_ != nullptr) {
1597 call_->DestroyVideoSendStream(stream_); 1596 call_->DestroyVideoSendStream(stream_);
1598 } 1597 }
1599 DestroyVideoEncoder(&allocated_encoder_); 1598 DestroyVideoEncoder(&allocated_encoder_);
1600 } 1599 }
1601 1600
1602 bool WebRtcVideoChannel2::WebRtcVideoSendStream::SetVideoSend( 1601 bool WebRtcVideoChannel2::WebRtcVideoSendStream::SetVideoSend(
1603 bool enable, 1602 bool enable,
1604 const VideoOptions* options, 1603 const VideoOptions* options,
1605 rtc::VideoSourceInterface<webrtc::VideoFrame>* source) { 1604 rtc::VideoSourceInterface<webrtc::VideoFrame>* source) {
1606 TRACE_EVENT0("webrtc", "WebRtcVideoSendStream::SetVideoSend"); 1605 TRACE_EVENT0("webrtc", "WebRtcVideoSendStream::SetVideoSend");
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
1675 false /* is_external */); 1674 false /* is_external */);
1676 } 1675 }
1677 return AllocatedEncoder( 1676 return AllocatedEncoder(
1678 internal_encoder_factory_->CreateVideoEncoder(codec), codec, 1677 internal_encoder_factory_->CreateVideoEncoder(codec), codec,
1679 false /* is_external */); 1678 false /* is_external */);
1680 } 1679 }
1681 1680
1682 // This shouldn't happen, we should not be trying to create something we don't 1681 // This shouldn't happen, we should not be trying to create something we don't
1683 // support. 1682 // support.
1684 RTC_NOTREACHED(); 1683 RTC_NOTREACHED();
1685 return AllocatedEncoder(NULL, cricket::VideoCodec(), false); 1684 return AllocatedEncoder(nullptr, cricket::VideoCodec(), false);
1686 } 1685 }
1687 1686
1688 void WebRtcVideoChannel2::WebRtcVideoSendStream::DestroyVideoEncoder( 1687 void WebRtcVideoChannel2::WebRtcVideoSendStream::DestroyVideoEncoder(
1689 AllocatedEncoder* encoder) { 1688 AllocatedEncoder* encoder) {
1690 RTC_DCHECK_RUN_ON(&thread_checker_); 1689 RTC_DCHECK_RUN_ON(&thread_checker_);
1691 if (encoder->external) { 1690 if (encoder->external) {
1692 external_encoder_factory_->DestroyVideoEncoder(encoder->external_encoder); 1691 external_encoder_factory_->DestroyVideoEncoder(encoder->external_encoder);
1693 } 1692 }
1694 delete encoder->encoder; 1693 delete encoder->encoder;
1695 } 1694 }
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
1897 VideoCodecSettings codec_settings = *parameters_.codec_settings; 1896 VideoCodecSettings codec_settings = *parameters_.codec_settings;
1898 1897
1899 webrtc::VideoEncoderConfig encoder_config = 1898 webrtc::VideoEncoderConfig encoder_config =
1900 CreateVideoEncoderConfig(codec_settings.codec); 1899 CreateVideoEncoderConfig(codec_settings.codec);
1901 1900
1902 encoder_config.encoder_specific_settings = ConfigureVideoEncoderSettings( 1901 encoder_config.encoder_specific_settings = ConfigureVideoEncoderSettings(
1903 codec_settings.codec); 1902 codec_settings.codec);
1904 1903
1905 stream_->ReconfigureVideoEncoder(encoder_config.Copy()); 1904 stream_->ReconfigureVideoEncoder(encoder_config.Copy());
1906 1905
1907 encoder_config.encoder_specific_settings = NULL; 1906 encoder_config.encoder_specific_settings = nullptr;
1908 1907
1909 parameters_.encoder_config = std::move(encoder_config); 1908 parameters_.encoder_config = std::move(encoder_config);
1910 } 1909 }
1911 1910
1912 void WebRtcVideoChannel2::WebRtcVideoSendStream::SetSend(bool send) { 1911 void WebRtcVideoChannel2::WebRtcVideoSendStream::SetSend(bool send) {
1913 RTC_DCHECK_RUN_ON(&thread_checker_); 1912 RTC_DCHECK_RUN_ON(&thread_checker_);
1914 sending_ = send; 1913 sending_ = send;
1915 UpdateSendState(); 1914 UpdateSendState();
1916 } 1915 }
1917 1916
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1954 RTC_DCHECK_RUN_ON(&thread_checker_); 1953 RTC_DCHECK_RUN_ON(&thread_checker_);
1955 for (uint32_t ssrc : parameters_.config.rtp.ssrcs) 1954 for (uint32_t ssrc : parameters_.config.rtp.ssrcs)
1956 info.add_ssrc(ssrc); 1955 info.add_ssrc(ssrc);
1957 1956
1958 if (parameters_.codec_settings) { 1957 if (parameters_.codec_settings) {
1959 info.codec_name = parameters_.codec_settings->codec.name; 1958 info.codec_name = parameters_.codec_settings->codec.name;
1960 info.codec_payload_type = rtc::Optional<int>( 1959 info.codec_payload_type = rtc::Optional<int>(
1961 parameters_.codec_settings->codec.id); 1960 parameters_.codec_settings->codec.id);
1962 } 1961 }
1963 1962
1964 if (stream_ == NULL) 1963 if (stream_ == nullptr)
1965 return info; 1964 return info;
1966 1965
1967 webrtc::VideoSendStream::Stats stats = stream_->GetStats(); 1966 webrtc::VideoSendStream::Stats stats = stream_->GetStats();
1968 1967
1969 if (log_stats) 1968 if (log_stats)
1970 LOG(LS_INFO) << stats.ToString(rtc::TimeMillis()); 1969 LOG(LS_INFO) << stats.ToString(rtc::TimeMillis());
1971 1970
1972 info.adapt_changes = stats.number_of_cpu_adapt_changes; 1971 info.adapt_changes = stats.number_of_cpu_adapt_changes;
1973 info.adapt_reason = 1972 info.adapt_reason =
1974 stats.cpu_limited_resolution ? ADAPTREASON_CPU : ADAPTREASON_NONE; 1973 stats.cpu_limited_resolution ? ADAPTREASON_CPU : ADAPTREASON_NONE;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2021 static_cast<float>(first_stream_stats.rtcp_stats.fraction_lost) / 2020 static_cast<float>(first_stream_stats.rtcp_stats.fraction_lost) /
2022 (1 << 8); 2021 (1 << 8);
2023 } 2022 }
2024 2023
2025 return info; 2024 return info;
2026 } 2025 }
2027 2026
2028 void WebRtcVideoChannel2::WebRtcVideoSendStream::FillBandwidthEstimationInfo( 2027 void WebRtcVideoChannel2::WebRtcVideoSendStream::FillBandwidthEstimationInfo(
2029 BandwidthEstimationInfo* bwe_info) { 2028 BandwidthEstimationInfo* bwe_info) {
2030 RTC_DCHECK_RUN_ON(&thread_checker_); 2029 RTC_DCHECK_RUN_ON(&thread_checker_);
2031 if (stream_ == NULL) { 2030 if (stream_ == nullptr) {
2032 return; 2031 return;
2033 } 2032 }
2034 webrtc::VideoSendStream::Stats stats = stream_->GetStats(); 2033 webrtc::VideoSendStream::Stats stats = stream_->GetStats();
2035 for (std::map<uint32_t, webrtc::VideoSendStream::StreamStats>::iterator it = 2034 for (std::map<uint32_t, webrtc::VideoSendStream::StreamStats>::iterator it =
2036 stats.substreams.begin(); 2035 stats.substreams.begin();
2037 it != stats.substreams.end(); ++it) { 2036 it != stats.substreams.end(); ++it) {
2038 bwe_info->transmit_bitrate += it->second.total_bitrate_bps; 2037 bwe_info->transmit_bitrate += it->second.total_bitrate_bps;
2039 bwe_info->retransmit_bitrate += it->second.retransmit_bitrate_bps; 2038 bwe_info->retransmit_bitrate += it->second.retransmit_bitrate_bps;
2040 } 2039 }
2041 bwe_info->target_enc_bitrate += stats.target_media_bitrate_bps; 2040 bwe_info->target_enc_bitrate += stats.target_media_bitrate_bps;
2042 bwe_info->actual_enc_bitrate += stats.media_bitrate_bps; 2041 bwe_info->actual_enc_bitrate += stats.media_bitrate_bps;
2043 } 2042 }
2044 2043
2045 void WebRtcVideoChannel2::WebRtcVideoSendStream::RecreateWebRtcStream() { 2044 void WebRtcVideoChannel2::WebRtcVideoSendStream::RecreateWebRtcStream() {
2046 RTC_DCHECK_RUN_ON(&thread_checker_); 2045 RTC_DCHECK_RUN_ON(&thread_checker_);
2047 if (stream_ != NULL) { 2046 if (stream_ != nullptr) {
2048 call_->DestroyVideoSendStream(stream_); 2047 call_->DestroyVideoSendStream(stream_);
2049 } 2048 }
2050 2049
2051 RTC_CHECK(parameters_.codec_settings); 2050 RTC_CHECK(parameters_.codec_settings);
2052 RTC_DCHECK_EQ((parameters_.encoder_config.content_type == 2051 RTC_DCHECK_EQ((parameters_.encoder_config.content_type ==
2053 webrtc::VideoEncoderConfig::ContentType::kScreen), 2052 webrtc::VideoEncoderConfig::ContentType::kScreen),
2054 parameters_.options.is_screencast.value_or(false)) 2053 parameters_.options.is_screencast.value_or(false))
2055 << "encoder content type inconsistent with screencast option"; 2054 << "encoder content type inconsistent with screencast option";
2056 parameters_.encoder_config.encoder_specific_settings = 2055 parameters_.encoder_config.encoder_specific_settings =
2057 ConfigureVideoEncoderSettings(parameters_.codec_settings->codec); 2056 ConfigureVideoEncoderSettings(parameters_.codec_settings->codec);
2058 2057
2059 webrtc::VideoSendStream::Config config = parameters_.config.Copy(); 2058 webrtc::VideoSendStream::Config config = parameters_.config.Copy();
2060 if (!config.rtp.rtx.ssrcs.empty() && config.rtp.rtx.payload_type == -1) { 2059 if (!config.rtp.rtx.ssrcs.empty() && config.rtp.rtx.payload_type == -1) {
2061 LOG(LS_WARNING) << "RTX SSRCs configured but there's no configured RTX " 2060 LOG(LS_WARNING) << "RTX SSRCs configured but there's no configured RTX "
2062 "payload type the set codec. Ignoring RTX."; 2061 "payload type the set codec. Ignoring RTX.";
2063 config.rtp.rtx.ssrcs.clear(); 2062 config.rtp.rtx.ssrcs.clear();
2064 } 2063 }
2065 stream_ = call_->CreateVideoSendStream(std::move(config), 2064 stream_ = call_->CreateVideoSendStream(std::move(config),
2066 parameters_.encoder_config.Copy()); 2065 parameters_.encoder_config.Copy());
2067 2066
2068 parameters_.encoder_config.encoder_specific_settings = NULL; 2067 parameters_.encoder_config.encoder_specific_settings = nullptr;
2069 2068
2070 if (source_) { 2069 if (source_) {
2071 // Do not adapt resolution for screen content as this will likely result in 2070 // Do not adapt resolution for screen content as this will likely result in
2072 // blurry and unreadable text. 2071 // blurry and unreadable text.
2073 // |this| acts like a VideoSource to make sure SinkWants are handled on the 2072 // |this| acts like a VideoSource to make sure SinkWants are handled on the
2074 // correct thread. 2073 // correct thread.
2075 stream_->SetSource( 2074 stream_->SetSource(
2076 this, enable_cpu_overuse_detection_ && 2075 this, enable_cpu_overuse_detection_ &&
2077 !parameters_.options.is_screencast.value_or(false) 2076 !parameters_.options.is_screencast.value_or(false)
2078 ? webrtc::VideoSendStream::DegradationPreference::kBalanced 2077 ? webrtc::VideoSendStream::DegradationPreference::kBalanced
2079 : webrtc::VideoSendStream::DegradationPreference:: 2078 : webrtc::VideoSendStream::DegradationPreference::
2080 kMaintainResolution); 2079 kMaintainResolution);
2081 } 2080 }
2082 2081
2083 // Call stream_->Start() if necessary conditions are met. 2082 // Call stream_->Start() if necessary conditions are met.
2084 UpdateSendState(); 2083 UpdateSendState();
2085 } 2084 }
2086 2085
2087 WebRtcVideoChannel2::WebRtcVideoReceiveStream::WebRtcVideoReceiveStream( 2086 WebRtcVideoChannel2::WebRtcVideoReceiveStream::WebRtcVideoReceiveStream(
2088 webrtc::Call* call, 2087 webrtc::Call* call,
2089 const StreamParams& sp, 2088 const StreamParams& sp,
2090 webrtc::VideoReceiveStream::Config config, 2089 webrtc::VideoReceiveStream::Config config,
2091 WebRtcVideoDecoderFactory* external_decoder_factory, 2090 WebRtcVideoDecoderFactory* external_decoder_factory,
2092 bool default_stream, 2091 bool default_stream,
2093 const std::vector<VideoCodecSettings>& recv_codecs, 2092 const std::vector<VideoCodecSettings>& recv_codecs,
2094 const webrtc::FlexfecReceiveStream::Config& flexfec_config) 2093 const webrtc::FlexfecReceiveStream::Config& flexfec_config)
2095 : call_(call), 2094 : call_(call),
2096 stream_params_(sp), 2095 stream_params_(sp),
2097 stream_(NULL), 2096 stream_(nullptr),
2098 default_stream_(default_stream), 2097 default_stream_(default_stream),
2099 config_(std::move(config)), 2098 config_(std::move(config)),
2100 flexfec_config_(flexfec_config), 2099 flexfec_config_(flexfec_config),
2101 flexfec_stream_(nullptr), 2100 flexfec_stream_(nullptr),
2102 external_decoder_factory_(external_decoder_factory), 2101 external_decoder_factory_(external_decoder_factory),
2103 sink_(NULL), 2102 sink_(nullptr),
2104 first_frame_timestamp_(-1), 2103 first_frame_timestamp_(-1),
2105 estimated_remote_start_ntp_time_ms_(0) { 2104 estimated_remote_start_ntp_time_ms_(0) {
2106 config_.renderer = this; 2105 config_.renderer = this;
2107 std::vector<AllocatedDecoder> old_decoders; 2106 std::vector<AllocatedDecoder> old_decoders;
2108 ConfigureCodecs(recv_codecs, &old_decoders); 2107 ConfigureCodecs(recv_codecs, &old_decoders);
2109 RecreateWebRtcStream(); 2108 RecreateWebRtcStream();
2110 RTC_DCHECK(old_decoders.empty()); 2109 RTC_DCHECK(old_decoders.empty());
2111 } 2110 }
2112 2111
2113 WebRtcVideoChannel2::WebRtcVideoReceiveStream::AllocatedDecoder:: 2112 WebRtcVideoChannel2::WebRtcVideoReceiveStream::AllocatedDecoder::
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2160 2159
2161 for (size_t i = 0; i < old_decoders->size(); ++i) { 2160 for (size_t i = 0; i < old_decoders->size(); ++i) {
2162 if ((*old_decoders)[i].type == type) { 2161 if ((*old_decoders)[i].type == type) {
2163 AllocatedDecoder decoder = (*old_decoders)[i]; 2162 AllocatedDecoder decoder = (*old_decoders)[i];
2164 (*old_decoders)[i] = old_decoders->back(); 2163 (*old_decoders)[i] = old_decoders->back();
2165 old_decoders->pop_back(); 2164 old_decoders->pop_back();
2166 return decoder; 2165 return decoder;
2167 } 2166 }
2168 } 2167 }
2169 2168
2170 if (external_decoder_factory_ != NULL) { 2169 if (external_decoder_factory_ != nullptr) {
2171 webrtc::VideoDecoder* decoder = 2170 webrtc::VideoDecoder* decoder =
2172 external_decoder_factory_->CreateVideoDecoderWithParams( 2171 external_decoder_factory_->CreateVideoDecoderWithParams(
2173 type, {stream_params_.id}); 2172 type, {stream_params_.id});
2174 if (decoder != NULL) { 2173 if (decoder != nullptr) {
2175 return AllocatedDecoder(decoder, type, true /* is_external */); 2174 return AllocatedDecoder(decoder, type, true /* is_external */);
2176 } 2175 }
2177 } 2176 }
2178 2177
2179 InternalDecoderFactory internal_decoder_factory; 2178 InternalDecoderFactory internal_decoder_factory;
2180 return AllocatedDecoder(internal_decoder_factory.CreateVideoDecoderWithParams( 2179 return AllocatedDecoder(internal_decoder_factory.CreateVideoDecoderWithParams(
2181 type, {stream_params_.id}), 2180 type, {stream_params_.id}),
2182 type, false /* is_external */); 2181 type, false /* is_external */);
2183 } 2182 }
2184 2183
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
2322 if (first_frame_timestamp_ < 0) 2321 if (first_frame_timestamp_ < 0)
2323 first_frame_timestamp_ = frame.timestamp(); 2322 first_frame_timestamp_ = frame.timestamp();
2324 int64_t rtp_time_elapsed_since_first_frame = 2323 int64_t rtp_time_elapsed_since_first_frame =
2325 (timestamp_wraparound_handler_.Unwrap(frame.timestamp()) - 2324 (timestamp_wraparound_handler_.Unwrap(frame.timestamp()) -
2326 first_frame_timestamp_); 2325 first_frame_timestamp_);
2327 int64_t elapsed_time_ms = rtp_time_elapsed_since_first_frame / 2326 int64_t elapsed_time_ms = rtp_time_elapsed_since_first_frame /
2328 (cricket::kVideoCodecClockrate / 1000); 2327 (cricket::kVideoCodecClockrate / 1000);
2329 if (frame.ntp_time_ms() > 0) 2328 if (frame.ntp_time_ms() > 0)
2330 estimated_remote_start_ntp_time_ms_ = frame.ntp_time_ms() - elapsed_time_ms; 2329 estimated_remote_start_ntp_time_ms_ = frame.ntp_time_ms() - elapsed_time_ms;
2331 2330
2332 if (sink_ == NULL) { 2331 if (sink_ == nullptr) {
2333 LOG(LS_WARNING) << "VideoReceiveStream not connected to a VideoSink."; 2332 LOG(LS_WARNING) << "VideoReceiveStream not connected to a VideoSink.";
2334 return; 2333 return;
2335 } 2334 }
2336 2335
2337 sink_->OnFrame(frame); 2336 sink_->OnFrame(frame);
2338 } 2337 }
2339 2338
2340 bool WebRtcVideoChannel2::WebRtcVideoReceiveStream::IsDefaultStream() const { 2339 bool WebRtcVideoChannel2::WebRtcVideoReceiveStream::IsDefaultStream() const {
2341 return default_stream_; 2340 return default_stream_;
2342 } 2341 }
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
2527 rtx_mapping[video_codecs[i].codec.id] != 2526 rtx_mapping[video_codecs[i].codec.id] !=
2528 ulpfec_config.red_payload_type) { 2527 ulpfec_config.red_payload_type) {
2529 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; 2528 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id];
2530 } 2529 }
2531 } 2530 }
2532 2531
2533 return video_codecs; 2532 return video_codecs;
2534 } 2533 }
2535 2534
2536 } // namespace cricket 2535 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698