Index: webrtc/video/vie_encoder.cc |
diff --git a/webrtc/video/vie_encoder.cc b/webrtc/video/vie_encoder.cc |
index c30752b6dfb048e96d40a5f2e2e25853fe4b529e..f8a906f815c75060cfd7d7e5557f47e74ae435a9 100644 |
--- a/webrtc/video/vie_encoder.cc |
+++ b/webrtc/video/vie_encoder.cc |
@@ -256,7 +256,8 @@ ViEEncoder::ViEEncoder(uint32_t number_of_cores, |
SendStatisticsProxy* stats_proxy, |
const VideoSendStream::Config::EncoderSettings& settings, |
rtc::VideoSinkInterface<VideoFrame>* pre_encode_callback, |
- EncodedFrameObserver* encoder_timing) |
+ EncodedFrameObserver* encoder_timing, |
+ VideoEncoderConfig::ContentType content_type) |
: shutdown_event_(true /* manual_reset */, false), |
number_of_cores_(number_of_cores), |
initial_rampup_(0), |
@@ -265,6 +266,7 @@ ViEEncoder::ViEEncoder(uint32_t number_of_cores, |
settings_(settings), |
codec_type_(PayloadNameToCodecType(settings.payload_name) |
.value_or(VideoCodecType::kVideoCodecUnknown)), |
+ content_type_(content_type), |
video_sender_(Clock::GetRealTimeClock(), this, this), |
overuse_detector_(GetCpuOveruseOptions(settings.full_overuse_time), |
this, |
@@ -408,8 +410,8 @@ void ViEEncoder::ConfigureEncoderOnTaskQueue(VideoEncoderConfig config, |
if (last_frame_info_) { |
ReconfigureEncoder(); |
} else if (settings_.internal_source) { |
- last_frame_info_ = rtc::Optional<VideoFrameInfo>( |
- VideoFrameInfo(176, 144, kVideoRotation_0, false)); |
+ last_frame_info_ = rtc::Optional<VideoFrameInfo>(VideoFrameInfo( |
+ 176, 144, kVideoRotation_0, kVideoContent_Default, false)); |
ReconfigureEncoder(); |
} |
} |
@@ -483,7 +485,8 @@ void ViEEncoder::ConfigureQualityScaler() { |
void ViEEncoder::OnFrame(const VideoFrame& video_frame) { |
RTC_DCHECK_RUNS_SERIALIZED(&incoming_frame_race_checker_); |
VideoFrame incoming_frame = video_frame; |
- |
+ if (content_type_ == VideoEncoderConfig::ContentType::kScreen) |
+ incoming_frame.set_content_type(kVideoContent_Screenshare); |
// Local time in webrtc time base. |
int64_t current_time_us = clock_->TimeInMicroseconds(); |
int64_t current_time_ms = current_time_us / rtc::kNumMicrosecsPerMillisec; |
@@ -567,9 +570,9 @@ void ViEEncoder::EncodeVideoFrame(const VideoFrame& video_frame, |
video_frame.rotation() != last_frame_info_->rotation || |
video_frame.is_texture() != last_frame_info_->is_texture) { |
pending_encoder_reconfiguration_ = true; |
- last_frame_info_ = rtc::Optional<VideoFrameInfo>( |
- VideoFrameInfo(video_frame.width(), video_frame.height(), |
- video_frame.rotation(), video_frame.is_texture())); |
+ last_frame_info_ = rtc::Optional<VideoFrameInfo>(VideoFrameInfo( |
+ video_frame.width(), video_frame.height(), video_frame.rotation(), |
+ video_frame.content_type(), video_frame.is_texture())); |
LOG(LS_INFO) << "Video frame parameters changed: dimensions=" |
<< last_frame_info_->width << "x" << last_frame_info_->height |
<< ", rotation=" << last_frame_info_->rotation |