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

Side by Side Diff: webrtc/video/vie_encoder.cc

Issue 2690023002: Fix nits in vie_encoder (Closed)
Patch Set: 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
« no previous file with comments | « no previous file | webrtc/video/vie_encoder_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 } 210 }
211 211
212 void RequestHigherResolutionThan(int pixel_count) { 212 void RequestHigherResolutionThan(int pixel_count) {
213 rtc::CritScope lock(&crit_); 213 rtc::CritScope lock(&crit_);
214 if (!IsResolutionScalingEnabledLocked()) { 214 if (!IsResolutionScalingEnabledLocked()) {
215 // This can happen since |degradation_preference_| is set on 215 // This can happen since |degradation_preference_| is set on
216 // libjingle's worker thread but the adaptation is done on the encoder 216 // libjingle's worker thread but the adaptation is done on the encoder
217 // task queue. 217 // task queue.
218 return; 218 return;
219 } 219 }
220 // The input video frame size will have a resolution with "one step up" 220 // On step down we request at most 3/5 the pixel count of the previous
221 // pixels than |max_pixel_count_step_up| where "one step up" depends on 221 // resolution, so in order to take "one step up" we request a resolution as
222 // how the source can scale the input frame size. We still cap the step up 222 // close as possible to 5/3 of the current resolution. The actual pixel
223 // to be at most twice the number of pixels. 223 // count selected depends on the capabilities of the source. In order to not
224 // take a too large step up, we cap the requested pixel count to be at most
225 // four time the current number of pixels.
224 sink_wants_.target_pixel_count = rtc::Optional<int>((pixel_count * 5) / 3); 226 sink_wants_.target_pixel_count = rtc::Optional<int>((pixel_count * 5) / 3);
225 sink_wants_.max_pixel_count = rtc::Optional<int>(pixel_count * 4); 227 sink_wants_.max_pixel_count = rtc::Optional<int>(pixel_count * 4);
226 if (source_) 228 if (source_)
227 source_->AddOrUpdateSink(vie_encoder_, sink_wants_); 229 source_->AddOrUpdateSink(vie_encoder_, sink_wants_);
228 } 230 }
229 231
230 private: 232 private:
231 bool IsResolutionScalingEnabledLocked() const 233 bool IsResolutionScalingEnabledLocked() const
232 EXCLUSIVE_LOCKS_REQUIRED(&crit_) { 234 EXCLUSIVE_LOCKS_REQUIRED(&crit_) {
233 return degradation_preference_ != 235 return degradation_preference_ !=
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 736
735 if (stats_proxy_ && video_suspension_changed) { 737 if (stats_proxy_ && video_suspension_changed) {
736 LOG(LS_INFO) << "Video suspend state changed to: " 738 LOG(LS_INFO) << "Video suspend state changed to: "
737 << (video_is_suspended ? "suspended" : "not suspended"); 739 << (video_is_suspended ? "suspended" : "not suspended");
738 stats_proxy_->OnSuspendChange(video_is_suspended); 740 stats_proxy_->OnSuspendChange(video_is_suspended);
739 } 741 }
740 } 742 }
741 743
742 void ViEEncoder::AdaptDown(AdaptReason reason) { 744 void ViEEncoder::AdaptDown(AdaptReason reason) {
743 RTC_DCHECK_RUN_ON(&encoder_queue_); 745 RTC_DCHECK_RUN_ON(&encoder_queue_);
744 if (degradation_preference_ != DegradationPreference::kBalanced || 746 if (degradation_preference_ != DegradationPreference::kBalanced)
745 !last_frame_info_) {
746 return; 747 return;
747 } 748 RTC_DCHECK(static_cast<bool>(last_frame_info_));
748 int current_pixel_count = last_frame_info_->pixel_count(); 749 int current_pixel_count = last_frame_info_->pixel_count();
749 if (last_adaptation_request_ && 750 if (last_adaptation_request_ &&
750 last_adaptation_request_->mode_ == AdaptationRequest::Mode::kAdaptDown && 751 last_adaptation_request_->mode_ == AdaptationRequest::Mode::kAdaptDown &&
751 current_pixel_count >= last_adaptation_request_->input_pixel_count_) { 752 current_pixel_count >= last_adaptation_request_->input_pixel_count_) {
752 // Don't request lower resolution if the current resolution is not lower 753 // Don't request lower resolution if the current resolution is not lower
753 // than the last time we asked for the resolution to be lowered. 754 // than the last time we asked for the resolution to be lowered.
754 return; 755 return;
755 } 756 }
756 last_adaptation_request_.emplace(AdaptationRequest{ 757 last_adaptation_request_.emplace(AdaptationRequest{
757 current_pixel_count, AdaptationRequest::Mode::kAdaptDown}); 758 current_pixel_count, AdaptationRequest::Mode::kAdaptDown});
(...skipping 15 matching lines...) Expand all
773 LOG(LS_INFO) << "Scaling down resolution."; 774 LOG(LS_INFO) << "Scaling down resolution.";
774 for (size_t i = 0; i < kScaleReasonSize; ++i) { 775 for (size_t i = 0; i < kScaleReasonSize; ++i) {
775 LOG(LS_INFO) << "Scaled " << scale_counter_[i] 776 LOG(LS_INFO) << "Scaled " << scale_counter_[i]
776 << " times for reason: " << (i ? "cpu" : "quality"); 777 << " times for reason: " << (i ? "cpu" : "quality");
777 } 778 }
778 } 779 }
779 780
780 void ViEEncoder::AdaptUp(AdaptReason reason) { 781 void ViEEncoder::AdaptUp(AdaptReason reason) {
781 RTC_DCHECK_RUN_ON(&encoder_queue_); 782 RTC_DCHECK_RUN_ON(&encoder_queue_);
782 if (scale_counter_[reason] == 0 || 783 if (scale_counter_[reason] == 0 ||
783 degradation_preference_ != DegradationPreference::kBalanced || 784 degradation_preference_ != DegradationPreference::kBalanced) {
784 !last_frame_info_) {
785 return; 785 return;
786 } 786 }
787 // Only scale if resolution is higher than last time we requested higher 787 // Only scale if resolution is higher than last time we requested higher
788 // resolution. 788 // resolution.
789 RTC_DCHECK(static_cast<bool>(last_frame_info_));
789 int current_pixel_count = last_frame_info_->pixel_count(); 790 int current_pixel_count = last_frame_info_->pixel_count();
790 if (last_adaptation_request_ && 791 if (last_adaptation_request_ &&
791 last_adaptation_request_->mode_ == AdaptationRequest::Mode::kAdaptUp && 792 last_adaptation_request_->mode_ == AdaptationRequest::Mode::kAdaptUp &&
792 current_pixel_count <= last_adaptation_request_->input_pixel_count_) { 793 current_pixel_count <= last_adaptation_request_->input_pixel_count_) {
793 // Don't request higher resolution if the current resolution is not higher 794 // Don't request higher resolution if the current resolution is not higher
794 // than the last time we asked for the resolution to be higher. 795 // than the last time we asked for the resolution to be higher.
795 return; 796 return;
796 } 797 }
797 last_adaptation_request_.emplace(AdaptationRequest{ 798 last_adaptation_request_.emplace(AdaptationRequest{
798 current_pixel_count, AdaptationRequest::Mode::kAdaptUp}); 799 current_pixel_count, AdaptationRequest::Mode::kAdaptUp});
(...skipping 12 matching lines...) Expand all
811 --scale_counter_[reason]; 812 --scale_counter_[reason];
812 source_proxy_->RequestHigherResolutionThan(current_pixel_count); 813 source_proxy_->RequestHigherResolutionThan(current_pixel_count);
813 LOG(LS_INFO) << "Scaling up resolution."; 814 LOG(LS_INFO) << "Scaling up resolution.";
814 for (size_t i = 0; i < kScaleReasonSize; ++i) { 815 for (size_t i = 0; i < kScaleReasonSize; ++i) {
815 LOG(LS_INFO) << "Scaled " << scale_counter_[i] 816 LOG(LS_INFO) << "Scaled " << scale_counter_[i]
816 << " times for reason: " << (i ? "cpu" : "quality"); 817 << " times for reason: " << (i ? "cpu" : "quality");
817 } 818 }
818 } 819 }
819 820
820 } // namespace webrtc 821 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | webrtc/video/vie_encoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698