| Index: webrtc/video/video_send_stream.cc
|
| diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc
|
| index 2c3a5c495c4398927b7ef7c99a327a2251f5b3f9..d55ad017ff6191280936c09876f35972483ba00a 100644
|
| --- a/webrtc/video/video_send_stream.cc
|
| +++ b/webrtc/video/video_send_stream.cc
|
| @@ -333,7 +333,7 @@ namespace internal {
|
| class VideoSendStreamImpl : public webrtc::BitrateAllocatorObserver,
|
| public webrtc::OverheadObserver,
|
| public webrtc::VCMProtectionCallback,
|
| - public ViEEncoder::EncoderSink,
|
| + public VideoStreamEncoder::EncoderSink,
|
| public VideoBitrateAllocationObserver {
|
| public:
|
| VideoSendStreamImpl(SendStatisticsProxy* stats_proxy,
|
| @@ -342,7 +342,7 @@ class VideoSendStreamImpl : public webrtc::BitrateAllocatorObserver,
|
| RtpTransportControllerSendInterface* transport,
|
| BitrateAllocator* bitrate_allocator,
|
| SendDelayStats* send_delay_stats,
|
| - ViEEncoder* vie_encoder,
|
| + VideoStreamEncoder* video_stream_encoder,
|
| RtcEventLog* event_log,
|
| const VideoSendStream::Config* config,
|
| int initial_encoder_max_bitrate,
|
| @@ -440,7 +440,7 @@ class VideoSendStreamImpl : public webrtc::BitrateAllocatorObserver,
|
| uint32_t encoder_max_bitrate_bps_;
|
| uint32_t encoder_target_rate_bps_;
|
|
|
| - ViEEncoder* const vie_encoder_;
|
| + VideoStreamEncoder* const video_stream_encoder_;
|
| EncoderRtcpFeedback encoder_feedback_;
|
| ProtectionBitrateCalculator protection_bitrate_calculator_;
|
|
|
| @@ -469,7 +469,7 @@ class VideoSendStream::ConstructionTask : public rtc::QueuedTask {
|
| ConstructionTask(std::unique_ptr<VideoSendStreamImpl>* send_stream,
|
| rtc::Event* done_event,
|
| SendStatisticsProxy* stats_proxy,
|
| - ViEEncoder* vie_encoder,
|
| + VideoStreamEncoder* video_stream_encoder,
|
| ProcessThread* module_process_thread,
|
| CallStats* call_stats,
|
| RtpTransportControllerSendInterface* transport,
|
| @@ -484,7 +484,7 @@ class VideoSendStream::ConstructionTask : public rtc::QueuedTask {
|
| : send_stream_(send_stream),
|
| done_event_(done_event),
|
| stats_proxy_(stats_proxy),
|
| - vie_encoder_(vie_encoder),
|
| + video_stream_encoder_(video_stream_encoder),
|
| call_stats_(call_stats),
|
| transport_(transport),
|
| bitrate_allocator_(bitrate_allocator),
|
| @@ -502,16 +502,16 @@ class VideoSendStream::ConstructionTask : public rtc::QueuedTask {
|
| bool Run() override {
|
| send_stream_->reset(new VideoSendStreamImpl(
|
| stats_proxy_, rtc::TaskQueue::Current(), call_stats_, transport_,
|
| - bitrate_allocator_, send_delay_stats_, vie_encoder_, event_log_,
|
| - config_, initial_encoder_max_bitrate_, std::move(suspended_ssrcs_),
|
| - content_type_, keepalive_config_));
|
| + bitrate_allocator_, send_delay_stats_, video_stream_encoder_,
|
| + event_log_, config_, initial_encoder_max_bitrate_,
|
| + std::move(suspended_ssrcs_), content_type_, keepalive_config_));
|
| return true;
|
| }
|
|
|
| std::unique_ptr<VideoSendStreamImpl>* const send_stream_;
|
| rtc::Event* const done_event_;
|
| SendStatisticsProxy* const stats_proxy_;
|
| - ViEEncoder* const vie_encoder_;
|
| + VideoStreamEncoder* const video_stream_encoder_;
|
| CallStats* const call_stats_;
|
| RtpTransportControllerSendInterface* const transport_;
|
| BitrateAllocator* const bitrate_allocator_;
|
| @@ -643,15 +643,18 @@ VideoSendStream::VideoSendStream(
|
| encoder_config.content_type),
|
| config_(std::move(config)),
|
| content_type_(encoder_config.content_type) {
|
| - vie_encoder_.reset(
|
| - new ViEEncoder(num_cpu_cores, &stats_proxy_, config_.encoder_settings,
|
| - config_.pre_encode_callback, config_.post_encode_callback,
|
| - std::unique_ptr<OveruseFrameDetector>()));
|
| + video_stream_encoder_.reset(
|
| + new VideoStreamEncoder(num_cpu_cores, &stats_proxy_,
|
| + config_.encoder_settings,
|
| + config_.pre_encode_callback,
|
| + config_.post_encode_callback,
|
| + std::unique_ptr<OveruseFrameDetector>()));
|
| worker_queue_->PostTask(std::unique_ptr<rtc::QueuedTask>(new ConstructionTask(
|
| - &send_stream_, &thread_sync_event_, &stats_proxy_, vie_encoder_.get(),
|
| - module_process_thread, call_stats, transport, bitrate_allocator,
|
| - send_delay_stats, event_log, &config_, encoder_config.max_bitrate_bps,
|
| - suspended_ssrcs, encoder_config.content_type, keepalive_config)));
|
| + &send_stream_, &thread_sync_event_, &stats_proxy_,
|
| + video_stream_encoder_.get(), module_process_thread, call_stats, transport,
|
| + bitrate_allocator, send_delay_stats, event_log, &config_,
|
| + encoder_config.max_bitrate_bps, suspended_ssrcs,
|
| + encoder_config.content_type, keepalive_config)));
|
|
|
| // Wait for ConstructionTask to complete so that |send_stream_| can be used.
|
| // |module_process_thread| must be registered and deregistered on the thread
|
| @@ -661,9 +664,9 @@ VideoSendStream::VideoSendStream(
|
| // TODO(sprang): Enable this also for regular video calls if it works well.
|
| if (encoder_config.content_type == VideoEncoderConfig::ContentType::kScreen) {
|
| // Only signal target bitrate for screenshare streams, for now.
|
| - vie_encoder_->SetBitrateObserver(send_stream_.get());
|
| + video_stream_encoder_->SetBitrateObserver(send_stream_.get());
|
| }
|
| - vie_encoder_->RegisterProcessThread(module_process_thread);
|
| + video_stream_encoder_->RegisterProcessThread(module_process_thread);
|
|
|
| ReconfigureVideoEncoder(std::move(encoder_config));
|
| }
|
| @@ -683,8 +686,8 @@ void VideoSendStream::Start() {
|
| });
|
|
|
| // It is expected that after VideoSendStream::Start has been called, incoming
|
| - // frames are not dropped in ViEEncoder. To ensure this, Start has to be
|
| - // synchronized.
|
| + // frames are not dropped in VideoStreamEncoder. To ensure this, Start has to
|
| + // be synchronized.
|
| thread_sync_event_.Wait(rtc::Event::kForever);
|
| }
|
|
|
| @@ -699,7 +702,7 @@ void VideoSendStream::SetSource(
|
| rtc::VideoSourceInterface<webrtc::VideoFrame>* source,
|
| const DegradationPreference& degradation_preference) {
|
| RTC_DCHECK_RUN_ON(&thread_checker_);
|
| - vie_encoder_->SetSource(source, degradation_preference);
|
| + video_stream_encoder_->SetSource(source, degradation_preference);
|
| }
|
|
|
| void VideoSendStream::ReconfigureVideoEncoder(VideoEncoderConfig config) {
|
| @@ -707,8 +710,9 @@ void VideoSendStream::ReconfigureVideoEncoder(VideoEncoderConfig config) {
|
| // ReconfigureVideoEncoder from the network thread.
|
| // RTC_DCHECK_RUN_ON(&thread_checker_);
|
| RTC_DCHECK(content_type_ == config.content_type);
|
| - vie_encoder_->ConfigureEncoder(std::move(config), config_.rtp.max_packet_size,
|
| - config_.rtp.nack.rtp_history_ms > 0);
|
| + video_stream_encoder_->ConfigureEncoder(std::move(config),
|
| + config_.rtp.max_packet_size,
|
| + config_.rtp.nack.rtp_history_ms > 0);
|
| }
|
|
|
| VideoSendStream::Stats VideoSendStream::GetStats() {
|
| @@ -727,8 +731,8 @@ void VideoSendStream::SignalNetworkState(NetworkState state) {
|
|
|
| VideoSendStream::RtpStateMap VideoSendStream::StopPermanentlyAndGetRtpStates() {
|
| RTC_DCHECK_RUN_ON(&thread_checker_);
|
| - vie_encoder_->Stop();
|
| - vie_encoder_->DeRegisterProcessThread();
|
| + video_stream_encoder_->Stop();
|
| + video_stream_encoder_->DeRegisterProcessThread();
|
| VideoSendStream::RtpStateMap state_map;
|
| send_stream_->DeRegisterProcessThread();
|
| worker_queue_->PostTask(
|
| @@ -765,7 +769,7 @@ VideoSendStreamImpl::VideoSendStreamImpl(
|
| RtpTransportControllerSendInterface* transport,
|
| BitrateAllocator* bitrate_allocator,
|
| SendDelayStats* send_delay_stats,
|
| - ViEEncoder* vie_encoder,
|
| + VideoStreamEncoder* video_stream_encoder,
|
| RtcEventLog* event_log,
|
| const VideoSendStream::Config* config,
|
| int initial_encoder_max_bitrate,
|
| @@ -788,10 +792,10 @@ VideoSendStreamImpl::VideoSendStreamImpl(
|
| encoder_min_bitrate_bps_(0),
|
| encoder_max_bitrate_bps_(initial_encoder_max_bitrate),
|
| encoder_target_rate_bps_(0),
|
| - vie_encoder_(vie_encoder),
|
| + video_stream_encoder_(video_stream_encoder),
|
| encoder_feedback_(Clock::GetRealTimeClock(),
|
| config_->rtp.ssrcs,
|
| - vie_encoder),
|
| + video_stream_encoder),
|
| protection_bitrate_calculator_(Clock::GetRealTimeClock(), this),
|
| bandwidth_observer_(transport->send_side_cc()
|
| ->GetBitrateController()
|
| @@ -887,7 +891,8 @@ VideoSendStreamImpl::VideoSendStreamImpl(
|
| RTC_DCHECK_GE(config_->encoder_settings.payload_type, 0);
|
| RTC_DCHECK_LE(config_->encoder_settings.payload_type, 127);
|
|
|
| - vie_encoder_->SetStartBitrate(bitrate_allocator_->GetStartBitrate(this));
|
| + video_stream_encoder_->SetStartBitrate(
|
| + bitrate_allocator_->GetStartBitrate(this));
|
|
|
| // Only request rotation at the source when we positively know that the remote
|
| // side doesn't support the rotation extension. This allows us to prepare the
|
| @@ -900,7 +905,7 @@ VideoSendStreamImpl::VideoSendStreamImpl(
|
| return extension.uri == RtpExtension::kVideoRotationUri;
|
| }) == config_->rtp.extensions.end();
|
|
|
| - vie_encoder_->SetSink(this, rotation_applied);
|
| + video_stream_encoder_->SetSink(this, rotation_applied);
|
| }
|
|
|
| void VideoSendStreamImpl::RegisterProcessThread(
|
| @@ -961,7 +966,7 @@ void VideoSendStreamImpl::Start() {
|
| CheckEncoderActivityTask::kEncoderTimeOutMs);
|
| }
|
|
|
| - vie_encoder_->SendKeyFrame();
|
| + video_stream_encoder_->SendKeyFrame();
|
| }
|
|
|
| void VideoSendStreamImpl::Stop() {
|
| @@ -977,7 +982,7 @@ void VideoSendStreamImpl::Stop() {
|
| check_encoder_activity_task_->Stop();
|
| check_encoder_activity_task_ = nullptr;
|
| }
|
| - vie_encoder_->OnBitrateUpdated(0, 0, 0);
|
| + video_stream_encoder_->OnBitrateUpdated(0, 0, 0);
|
| stats_proxy_->OnSetEncoderTargetRate(0);
|
| }
|
|
|
| @@ -1298,7 +1303,8 @@ uint32_t VideoSendStreamImpl::OnBitrateUpdated(uint32_t bitrate_bps,
|
|
|
| encoder_target_rate_bps_ =
|
| std::min(encoder_max_bitrate_bps_, encoder_target_rate_bps_);
|
| - vie_encoder_->OnBitrateUpdated(encoder_target_rate_bps_, fraction_loss, rtt);
|
| + video_stream_encoder_->OnBitrateUpdated(encoder_target_rate_bps_,
|
| + fraction_loss, rtt);
|
| stats_proxy_->OnSetEncoderTargetRate(encoder_target_rate_bps_);
|
| return protection_bitrate;
|
| }
|
| @@ -1320,7 +1326,7 @@ void VideoSendStreamImpl::EnableEncodedFrameRecording(
|
| if (!files.empty()) {
|
| // Make a keyframe appear as early as possible in the logs, to give actually
|
| // decodable output.
|
| - vie_encoder_->SendKeyFrame();
|
| + video_stream_encoder_->SendKeyFrame();
|
| }
|
| }
|
|
|
|
|