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 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 wants.max_pixel_count_step_up); | 213 wants.max_pixel_count_step_up); |
214 } | 214 } |
215 } | 215 } |
216 | 216 |
217 void VideoCapturer::OnFrameCaptured(VideoCapturer*, | 217 void VideoCapturer::OnFrameCaptured(VideoCapturer*, |
218 const CapturedFrame* captured_frame) { | 218 const CapturedFrame* captured_frame) { |
219 if (!broadcaster_.frame_wanted()) { | 219 if (!broadcaster_.frame_wanted()) { |
220 return; | 220 return; |
221 } | 221 } |
222 | 222 |
223 int adapted_width = captured_frame->width; | 223 int cropped_width = captured_frame->width; |
224 int adapted_height = captured_frame->height; | 224 int cropped_height = captured_frame->height; |
| 225 int out_width = captured_frame->width; |
| 226 int out_height = captured_frame->height; |
225 if (enable_video_adapter_ && !IsScreencast()) { | 227 if (enable_video_adapter_ && !IsScreencast()) { |
226 const VideoFormat adapted_format = | 228 video_adapter_.AdaptFrameResolution( |
227 video_adapter_.AdaptFrameResolution(adapted_width, adapted_height); | 229 captured_frame->width, captured_frame->height, |
228 if (adapted_format.IsSize0x0()) { | 230 &cropped_width, &cropped_height, |
| 231 &out_width, &out_height); |
| 232 if (out_width == 0 || out_height == 0) { |
229 // VideoAdapter dropped the frame. | 233 // VideoAdapter dropped the frame. |
230 return; | 234 return; |
231 } | 235 } |
232 adapted_width = adapted_format.width; | |
233 adapted_height = adapted_format.height; | |
234 } | 236 } |
235 | 237 |
236 if (!frame_factory_) { | 238 if (!frame_factory_) { |
237 LOG(LS_ERROR) << "No video frame factory."; | 239 LOG(LS_ERROR) << "No video frame factory."; |
238 return; | 240 return; |
239 } | 241 } |
240 | 242 |
241 // TODO(nisse): Reorganize frame factory methods, deleting crop | 243 // TODO(nisse): Reorganize frame factory methods. |
242 // support there too. | |
243 std::unique_ptr<VideoFrame> adapted_frame(frame_factory_->CreateAliasedFrame( | 244 std::unique_ptr<VideoFrame> adapted_frame(frame_factory_->CreateAliasedFrame( |
244 captured_frame, captured_frame->width, captured_frame->height, | 245 captured_frame, cropped_width, cropped_height, out_width, out_height)); |
245 adapted_width, adapted_height)); | |
246 | 246 |
247 if (!adapted_frame) { | 247 if (!adapted_frame) { |
248 // TODO(fbarchard): LOG more information about captured frame attributes. | 248 // TODO(fbarchard): LOG more information about captured frame attributes. |
249 LOG(LS_ERROR) << "Couldn't convert to I420! " | 249 LOG(LS_ERROR) << "Couldn't convert to I420! " |
250 << "From " << ToString(captured_frame) << " To " | 250 << "From " << ToString(captured_frame) << " To " |
251 << adapted_width << " x " << adapted_height; | 251 << out_width << " x " << out_height; |
252 return; | 252 return; |
253 } | 253 } |
254 | 254 |
255 OnFrame(this, adapted_frame.get()); | 255 OnFrame(this, adapted_frame.get()); |
256 UpdateInputSize(captured_frame); | 256 UpdateInputSize(captured_frame); |
257 } | 257 } |
258 | 258 |
259 void VideoCapturer::OnFrame(VideoCapturer* capturer, const VideoFrame* frame) { | 259 void VideoCapturer::OnFrame(VideoCapturer* capturer, const VideoFrame* frame) { |
260 broadcaster_.OnFrame(*frame); | 260 broadcaster_.OnFrame(*frame); |
261 } | 261 } |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 void VideoCapturer::UpdateInputSize(const CapturedFrame* captured_frame) { | 401 void VideoCapturer::UpdateInputSize(const CapturedFrame* captured_frame) { |
402 // Update stats protected from fetches from different thread. | 402 // Update stats protected from fetches from different thread. |
403 rtc::CritScope cs(&frame_stats_crit_); | 403 rtc::CritScope cs(&frame_stats_crit_); |
404 | 404 |
405 input_size_valid_ = true; | 405 input_size_valid_ = true; |
406 input_width_ = captured_frame->width; | 406 input_width_ = captured_frame->width; |
407 input_height_ = captured_frame->height; | 407 input_height_ = captured_frame->height; |
408 } | 408 } |
409 | 409 |
410 } // namespace cricket | 410 } // namespace cricket |
OLD | NEW |