Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 1397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1408 int max_bitrate_bps, | 1408 int max_bitrate_bps, |
| 1409 const rtc::Optional<VideoCodecSettings>& codec_settings) | 1409 const rtc::Optional<VideoCodecSettings>& codec_settings) |
| 1410 : config(std::move(config)), | 1410 : config(std::move(config)), |
| 1411 options(options), | 1411 options(options), |
| 1412 max_bitrate_bps(max_bitrate_bps), | 1412 max_bitrate_bps(max_bitrate_bps), |
| 1413 conference_mode(false), | 1413 conference_mode(false), |
| 1414 codec_settings(codec_settings) {} | 1414 codec_settings(codec_settings) {} |
| 1415 | 1415 |
| 1416 WebRtcVideoChannel::WebRtcVideoSendStream::AllocatedEncoder::AllocatedEncoder( | 1416 WebRtcVideoChannel::WebRtcVideoSendStream::AllocatedEncoder::AllocatedEncoder( |
| 1417 std::unique_ptr<webrtc::VideoEncoder> encoder, | 1417 std::unique_ptr<webrtc::VideoEncoder> encoder, |
| 1418 std::unique_ptr<webrtc::VideoEncoder> external_encoder, | 1418 bool is_external, |
| 1419 const cricket::VideoCodec& codec, | 1419 const cricket::VideoCodec& codec, |
| 1420 bool has_internal_source) | 1420 bool has_internal_source) |
| 1421 : encoder_(std::move(encoder)), | 1421 : encoder_(std::move(encoder)), |
| 1422 external_encoder_(std::move(external_encoder)), | 1422 is_external_(is_external), |
| 1423 codec_(codec), | 1423 codec_(codec), |
| 1424 has_internal_source_(has_internal_source) {} | 1424 has_internal_source_(has_internal_source) {} |
| 1425 | 1425 |
| 1426 void WebRtcVideoChannel::WebRtcVideoSendStream::AllocatedEncoder::Reset() { | 1426 void WebRtcVideoChannel::WebRtcVideoSendStream::AllocatedEncoder::Reset() { |
| 1427 external_encoder_.reset(); | |
| 1428 encoder_.reset(); | 1427 encoder_.reset(); |
| 1429 codec_ = cricket::VideoCodec(); | 1428 codec_ = cricket::VideoCodec(); |
| 1430 } | 1429 } |
| 1431 | 1430 |
| 1432 WebRtcVideoChannel::WebRtcVideoSendStream::WebRtcVideoSendStream( | 1431 WebRtcVideoChannel::WebRtcVideoSendStream::WebRtcVideoSendStream( |
| 1433 webrtc::Call* call, | 1432 webrtc::Call* call, |
| 1434 const StreamParams& sp, | 1433 const StreamParams& sp, |
| 1435 webrtc::VideoSendStream::Config config, | 1434 webrtc::VideoSendStream::Config config, |
| 1436 const VideoOptions& options, | 1435 const VideoOptions& options, |
| 1437 WebRtcVideoEncoderFactory* external_encoder_factory, | 1436 WebRtcVideoEncoderFactory* external_encoder_factory, |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1595 // If it's a codec type we can simulcast, create a wrapped encoder. | 1594 // If it's a codec type we can simulcast, create a wrapped encoder. |
| 1596 external_encoder = std::unique_ptr<webrtc::VideoEncoder>( | 1595 external_encoder = std::unique_ptr<webrtc::VideoEncoder>( |
| 1597 new webrtc::SimulcastEncoderAdapter(external_encoder_factory_)); | 1596 new webrtc::SimulcastEncoderAdapter(external_encoder_factory_)); |
| 1598 } else { | 1597 } else { |
| 1599 external_encoder = | 1598 external_encoder = |
| 1600 CreateScopedVideoEncoder(external_encoder_factory_, codec); | 1599 CreateScopedVideoEncoder(external_encoder_factory_, codec); |
| 1601 } | 1600 } |
| 1602 if (external_encoder) { | 1601 if (external_encoder) { |
| 1603 std::unique_ptr<webrtc::VideoEncoder> internal_encoder( | 1602 std::unique_ptr<webrtc::VideoEncoder> internal_encoder( |
| 1604 new webrtc::VideoEncoderSoftwareFallbackWrapper( | 1603 new webrtc::VideoEncoderSoftwareFallbackWrapper( |
| 1605 codec, external_encoder.get())); | 1604 codec, std::move(external_encoder))); |
|
andersc
2017/08/29 07:27:33
Is it normal to call std::move both here and in th
magjed_webrtc
2017/08/29 07:56:48
Yes, it won't compile otherwise. Every time you cr
| |
| 1606 const webrtc::VideoCodecType codec_type = | 1605 const webrtc::VideoCodecType codec_type = |
| 1607 webrtc::PayloadStringToCodecType(codec.name); | 1606 webrtc::PayloadStringToCodecType(codec.name); |
| 1608 const bool has_internal_source = | 1607 const bool has_internal_source = |
| 1609 external_encoder_factory_->EncoderTypeHasInternalSource(codec_type); | 1608 external_encoder_factory_->EncoderTypeHasInternalSource(codec_type); |
| 1610 return AllocatedEncoder(std::move(internal_encoder), | 1609 return AllocatedEncoder(std::move(internal_encoder), |
| 1611 std::move(external_encoder), codec, | 1610 true /* is_external */, codec, |
| 1612 has_internal_source); | 1611 has_internal_source); |
| 1613 } | 1612 } |
| 1614 } | 1613 } |
| 1615 | 1614 |
| 1616 // Try creating internal encoder. | 1615 // Try creating internal encoder. |
| 1617 std::unique_ptr<webrtc::VideoEncoder> internal_encoder; | 1616 std::unique_ptr<webrtc::VideoEncoder> internal_encoder; |
| 1618 if (FindMatchingCodec(internal_encoder_factory_->supported_codecs(), codec)) { | 1617 if (FindMatchingCodec(internal_encoder_factory_->supported_codecs(), codec)) { |
| 1619 if (CodecNamesEq(codec.name.c_str(), kVp8CodecName) && | 1618 if (CodecNamesEq(codec.name.c_str(), kVp8CodecName) && |
| 1620 parameters_.encoder_config.content_type == | 1619 parameters_.encoder_config.content_type == |
| 1621 webrtc::VideoEncoderConfig::ContentType::kScreen && | 1620 webrtc::VideoEncoderConfig::ContentType::kScreen && |
| 1622 parameters_.conference_mode && UseSimulcastScreenshare()) { | 1621 parameters_.conference_mode && UseSimulcastScreenshare()) { |
| 1623 // TODO(sprang): Remove this adapter once libvpx supports simulcast with | 1622 // TODO(sprang): Remove this adapter once libvpx supports simulcast with |
| 1624 // same-resolution substreams. | 1623 // same-resolution substreams. |
| 1625 internal_encoder = std::unique_ptr<webrtc::VideoEncoder>( | 1624 internal_encoder = std::unique_ptr<webrtc::VideoEncoder>( |
| 1626 new webrtc::SimulcastEncoderAdapter(internal_encoder_factory_.get())); | 1625 new webrtc::SimulcastEncoderAdapter(internal_encoder_factory_.get())); |
| 1627 } else { | 1626 } else { |
| 1628 internal_encoder = std::unique_ptr<webrtc::VideoEncoder>( | 1627 internal_encoder = std::unique_ptr<webrtc::VideoEncoder>( |
| 1629 internal_encoder_factory_->CreateVideoEncoder(codec)); | 1628 internal_encoder_factory_->CreateVideoEncoder(codec)); |
| 1630 } | 1629 } |
| 1631 return AllocatedEncoder(std::move(internal_encoder), | 1630 return AllocatedEncoder(std::move(internal_encoder), |
| 1632 nullptr /* external_encoder */, codec, | 1631 false /* is_external */, codec, |
| 1633 false /* has_internal_source */); | 1632 false /* has_internal_source */); |
| 1634 } | 1633 } |
| 1635 | 1634 |
| 1636 // This shouldn't happen, we should not be trying to create something we don't | 1635 // This shouldn't happen, we should not be trying to create something we don't |
| 1637 // support. | 1636 // support. |
| 1638 RTC_NOTREACHED(); | 1637 RTC_NOTREACHED(); |
| 1639 return AllocatedEncoder(); | 1638 return AllocatedEncoder(); |
| 1640 } | 1639 } |
| 1641 | 1640 |
| 1642 void WebRtcVideoChannel::WebRtcVideoSendStream::SetCodec( | 1641 void WebRtcVideoChannel::WebRtcVideoSendStream::SetCodec( |
| (...skipping 930 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2573 stream.temporal_layer_thresholds_bps.resize(GetDefaultVp9TemporalLayers() - | 2572 stream.temporal_layer_thresholds_bps.resize(GetDefaultVp9TemporalLayers() - |
| 2574 1); | 2573 1); |
| 2575 } | 2574 } |
| 2576 | 2575 |
| 2577 std::vector<webrtc::VideoStream> streams; | 2576 std::vector<webrtc::VideoStream> streams; |
| 2578 streams.push_back(stream); | 2577 streams.push_back(stream); |
| 2579 return streams; | 2578 return streams; |
| 2580 } | 2579 } |
| 2581 | 2580 |
| 2582 } // namespace cricket | 2581 } // namespace cricket |
| OLD | NEW |