| OLD | NEW |
| 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 |
| 11 #include "webrtc/modules/video_processing/test/video_processing_unittest.h" | 11 #include "webrtc/modules/video_processing/test/video_processing_unittest.h" |
| 12 | 12 |
| 13 #include <gflags/gflags.h> | 13 #include <gflags/gflags.h> |
| 14 | 14 |
| 15 #include <memory> | 15 #include <memory> |
| 16 #include <string> | 16 #include <string> |
| 17 | 17 |
| 18 #include "webrtc/base/timeutils.h" |
| 18 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" | 19 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" |
| 19 #include "webrtc/system_wrappers/include/tick_util.h" | |
| 20 #include "webrtc/test/testsupport/fileutils.h" | 20 #include "webrtc/test/testsupport/fileutils.h" |
| 21 | 21 |
| 22 namespace webrtc { | 22 namespace webrtc { |
| 23 | 23 |
| 24 namespace { | 24 namespace { |
| 25 | 25 |
| 26 // Define command line flag 'gen_files' (default value: false). | 26 // Define command line flag 'gen_files' (default value: false). |
| 27 DEFINE_bool(gen_files, false, "Output files for visual inspection."); | 27 DEFINE_bool(gen_files, false, "Output files for visual inspection."); |
| 28 | 28 |
| 29 } // namespace | 29 } // namespace |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 fread(video_buffer.get(), 1, frame_length_, source_file_)); | 241 fread(video_buffer.get(), 1, frame_length_, source_file_)); |
| 242 // Using ConvertToI420 to add stride to the image. | 242 // Using ConvertToI420 to add stride to the image. |
| 243 EXPECT_EQ(0, ConvertToI420(kI420, video_buffer.get(), 0, 0, width_, height_, | 243 EXPECT_EQ(0, ConvertToI420(kI420, video_buffer.get(), 0, 0, width_, height_, |
| 244 0, kVideoRotation_0, &video_frame_)); | 244 0, kVideoRotation_0, &video_frame_)); |
| 245 // Cropped source frame that will contain the expected visible region. | 245 // Cropped source frame that will contain the expected visible region. |
| 246 VideoFrame cropped_source_frame; | 246 VideoFrame cropped_source_frame; |
| 247 cropped_source_frame.CopyFrame(video_frame_); | 247 cropped_source_frame.CopyFrame(video_frame_); |
| 248 | 248 |
| 249 for (uint32_t run_idx = 0; run_idx < NumRuns; run_idx++) { | 249 for (uint32_t run_idx = 0; run_idx < NumRuns; run_idx++) { |
| 250 // Initiate test timer. | 250 // Initiate test timer. |
| 251 const TickTime time_start = TickTime::Now(); | 251 const int64_t time_start = rtc::TimeNanos(); |
| 252 | 252 |
| 253 // Init the sourceFrame with a timestamp. | 253 // Init the sourceFrame with a timestamp. |
| 254 video_frame_.set_render_time_ms(time_start.MillisecondTimestamp()); | 254 int64_t time_start_ms = time_start / rtc::kNumNanosecsPerMillisec; |
| 255 video_frame_.set_timestamp(time_start.MillisecondTimestamp() * 90); | 255 video_frame_.set_render_time_ms(time_start_ms); |
| 256 video_frame_.set_timestamp(time_start_ms * 90); |
| 256 | 257 |
| 257 // Test scaling to different sizes: source is of |width|/|height| = 352/288. | 258 // Test scaling to different sizes: source is of |width|/|height| = 352/288. |
| 258 // Pure scaling: | 259 // Pure scaling: |
| 259 TestSize(video_frame_, video_frame_, width_ / 4, height_ / 4, 25.2, vp_); | 260 TestSize(video_frame_, video_frame_, width_ / 4, height_ / 4, 25.2, vp_); |
| 260 TestSize(video_frame_, video_frame_, width_ / 2, height_ / 2, 28.1, vp_); | 261 TestSize(video_frame_, video_frame_, width_ / 2, height_ / 2, 28.1, vp_); |
| 261 // No resampling: | 262 // No resampling: |
| 262 TestSize(video_frame_, video_frame_, width_, height_, -1, vp_); | 263 TestSize(video_frame_, video_frame_, width_, height_, -1, vp_); |
| 263 TestSize(video_frame_, video_frame_, 2 * width_, 2 * height_, 32.2, vp_); | 264 TestSize(video_frame_, video_frame_, 2 * width_, 2 * height_, 32.2, vp_); |
| 264 | 265 |
| 265 // Scaling and cropping. The cropped source frame is the largest center | 266 // Scaling and cropping. The cropped source frame is the largest center |
| (...skipping 22 matching lines...) Expand all Loading... |
| 288 // Upsampling to odd size. | 289 // Upsampling to odd size. |
| 289 CropFrame(video_buffer.get(), width_, height_, 0, 26, 352, 233, | 290 CropFrame(video_buffer.get(), width_, height_, 0, 26, 352, 233, |
| 290 &cropped_source_frame); | 291 &cropped_source_frame); |
| 291 TestSize(video_frame_, cropped_source_frame, 501, 333, 32.05, vp_); | 292 TestSize(video_frame_, cropped_source_frame, 501, 333, 32.05, vp_); |
| 292 // Downsample to odd size. | 293 // Downsample to odd size. |
| 293 CropFrame(video_buffer.get(), width_, height_, 0, 34, 352, 219, | 294 CropFrame(video_buffer.get(), width_, height_, 0, 34, 352, 219, |
| 294 &cropped_source_frame); | 295 &cropped_source_frame); |
| 295 TestSize(video_frame_, cropped_source_frame, 281, 175, 29.3, vp_); | 296 TestSize(video_frame_, cropped_source_frame, 281, 175, 29.3, vp_); |
| 296 | 297 |
| 297 // Stop timer. | 298 // Stop timer. |
| 298 const int64_t runtime = (TickTime::Now() - time_start).Microseconds(); | 299 const int64_t runtime = |
| 300 (rtc::TimeNanos() - time_start) / rtc::kNumNanosecsPerMicrosec; |
| 299 if (runtime < min_runtime || run_idx == 0) { | 301 if (runtime < min_runtime || run_idx == 0) { |
| 300 min_runtime = runtime; | 302 min_runtime = runtime; |
| 301 } | 303 } |
| 302 total_runtime += runtime; | 304 total_runtime += runtime; |
| 303 } | 305 } |
| 304 | 306 |
| 305 printf("\nAverage run time = %d us / frame\n", | 307 printf("\nAverage run time = %d us / frame\n", |
| 306 static_cast<int>(total_runtime)); | 308 static_cast<int>(total_runtime)); |
| 307 printf("Min run time = %d us / frame\n\n", static_cast<int>(min_runtime)); | 309 printf("Min run time = %d us / frame\n\n", static_cast<int>(min_runtime)); |
| 308 } | 310 } |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 std::cout << "Watch " << filename.str() << " and verify that it is okay." | 409 std::cout << "Watch " << filename.str() << " and verify that it is okay." |
| 408 << std::endl; | 410 << std::endl; |
| 409 FILE* stand_alone_file = fopen(filename.str().c_str(), "wb"); | 411 FILE* stand_alone_file = fopen(filename.str().c_str(), "wb"); |
| 410 if (PrintVideoFrame(processed, stand_alone_file) < 0) | 412 if (PrintVideoFrame(processed, stand_alone_file) < 0) |
| 411 std::cerr << "Failed to write: " << filename.str() << std::endl; | 413 std::cerr << "Failed to write: " << filename.str() << std::endl; |
| 412 if (stand_alone_file) | 414 if (stand_alone_file) |
| 413 fclose(stand_alone_file); | 415 fclose(stand_alone_file); |
| 414 } | 416 } |
| 415 | 417 |
| 416 } // namespace webrtc | 418 } // namespace webrtc |
| OLD | NEW |