| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2010 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2010 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 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 } | 146 } |
| 147 | 147 |
| 148 // First timestamp received or timestamp is way outside expected range, so | 148 // First timestamp received or timestamp is way outside expected range, so |
| 149 // reset. Set first timestamp target to just half the interval to prefer | 149 // reset. Set first timestamp target to just half the interval to prefer |
| 150 // keeping frames in case of jitter. | 150 // keeping frames in case of jitter. |
| 151 next_frame_timestamp_ns_ = | 151 next_frame_timestamp_ns_ = |
| 152 rtc::Optional<int64_t>(in_timestamp_ns + requested_format_->interval / 2); | 152 rtc::Optional<int64_t>(in_timestamp_ns + requested_format_->interval / 2); |
| 153 return true; | 153 return true; |
| 154 } | 154 } |
| 155 | 155 |
| 156 void VideoAdapter::AdaptFrameResolution(int in_width, | 156 bool VideoAdapter::AdaptFrameResolution(int in_width, |
| 157 int in_height, | 157 int in_height, |
| 158 int64_t in_timestamp_ns, | 158 int64_t in_timestamp_ns, |
| 159 int* cropped_width, | 159 int* cropped_width, |
| 160 int* cropped_height, | 160 int* cropped_height, |
| 161 int* out_width, | 161 int* out_width, |
| 162 int* out_height) { | 162 int* out_height) { |
| 163 rtc::CritScope cs(&critical_section_); | 163 rtc::CritScope cs(&critical_section_); |
| 164 ++frames_in_; | 164 ++frames_in_; |
| 165 | 165 |
| 166 // The max output pixel count is the minimum of the requests from | 166 // The max output pixel count is the minimum of the requests from |
| (...skipping 15 matching lines...) Expand all Loading... |
| 182 << " / in " << frames_in_ | 182 << " / in " << frames_in_ |
| 183 << " Changes: " << adaption_changes_ | 183 << " Changes: " << adaption_changes_ |
| 184 << " Input: " << in_width | 184 << " Input: " << in_width |
| 185 << "x" << in_height | 185 << "x" << in_height |
| 186 << " timestamp: " << in_timestamp_ns | 186 << " timestamp: " << in_timestamp_ns |
| 187 << " Output: i" | 187 << " Output: i" |
| 188 << (requested_format_ ? requested_format_->interval : 0); | 188 << (requested_format_ ? requested_format_->interval : 0); |
| 189 } | 189 } |
| 190 | 190 |
| 191 // Drop frame. | 191 // Drop frame. |
| 192 *cropped_width = 0; | 192 return false; |
| 193 *cropped_height = 0; | |
| 194 *out_width = 0; | |
| 195 *out_height = 0; | |
| 196 return; | |
| 197 } | 193 } |
| 198 | 194 |
| 199 // Calculate how the input should be cropped. | 195 // Calculate how the input should be cropped. |
| 200 if (!requested_format_ || | 196 if (!requested_format_ || |
| 201 requested_format_->width == 0 || requested_format_->height == 0) { | 197 requested_format_->width == 0 || requested_format_->height == 0) { |
| 202 *cropped_width = in_width; | 198 *cropped_width = in_width; |
| 203 *cropped_height = in_height; | 199 *cropped_height = in_height; |
| 204 } else { | 200 } else { |
| 205 // Adjust |requested_format_| orientation to match input. | 201 // Adjust |requested_format_| orientation to match input. |
| 206 if ((in_width > in_height) != | 202 if ((in_width > in_height) != |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 << frames_out_ << " / in " << frames_in_ | 239 << frames_out_ << " / in " << frames_in_ |
| 244 << " Changes: " << adaption_changes_ << " Input: " << in_width | 240 << " Changes: " << adaption_changes_ << " Input: " << in_width |
| 245 << "x" << in_height | 241 << "x" << in_height |
| 246 << " Scale: " << scale.numerator << "/" << scale.denominator | 242 << " Scale: " << scale.numerator << "/" << scale.denominator |
| 247 << " Output: " << *out_width << "x" << *out_height << " i" | 243 << " Output: " << *out_width << "x" << *out_height << " i" |
| 248 << (requested_format_ ? requested_format_->interval : 0); | 244 << (requested_format_ ? requested_format_->interval : 0); |
| 249 } | 245 } |
| 250 | 246 |
| 251 previous_width_ = *out_width; | 247 previous_width_ = *out_width; |
| 252 previous_height_ = *out_height; | 248 previous_height_ = *out_height; |
| 249 |
| 250 return true; |
| 253 } | 251 } |
| 254 | 252 |
| 255 void VideoAdapter::OnOutputFormatRequest(const VideoFormat& format) { | 253 void VideoAdapter::OnOutputFormatRequest(const VideoFormat& format) { |
| 256 rtc::CritScope cs(&critical_section_); | 254 rtc::CritScope cs(&critical_section_); |
| 257 requested_format_ = rtc::Optional<VideoFormat>(format); | 255 requested_format_ = rtc::Optional<VideoFormat>(format); |
| 258 next_frame_timestamp_ns_ = rtc::Optional<int64_t>(); | 256 next_frame_timestamp_ns_ = rtc::Optional<int64_t>(); |
| 259 } | 257 } |
| 260 | 258 |
| 261 void VideoAdapter::OnResolutionRequest( | 259 void VideoAdapter::OnResolutionRequest( |
| 262 rtc::Optional<int> max_pixel_count, | 260 rtc::Optional<int> max_pixel_count, |
| 263 rtc::Optional<int> max_pixel_count_step_up) { | 261 rtc::Optional<int> max_pixel_count_step_up) { |
| 264 rtc::CritScope cs(&critical_section_); | 262 rtc::CritScope cs(&critical_section_); |
| 265 resolution_request_max_pixel_count_ = | 263 resolution_request_max_pixel_count_ = |
| 266 max_pixel_count.value_or(std::numeric_limits<int>::max()); | 264 max_pixel_count.value_or(std::numeric_limits<int>::max()); |
| 267 resolution_request_max_pixel_count_step_up_ = | 265 resolution_request_max_pixel_count_step_up_ = |
| 268 max_pixel_count_step_up.value_or(0); | 266 max_pixel_count_step_up.value_or(0); |
| 269 } | 267 } |
| 270 | 268 |
| 271 } // namespace cricket | 269 } // namespace cricket |
| OLD | NEW |