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

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

Issue 2541863002: Delete VideoFrame default constructor, and IsZeroSize method. (Closed)
Patch Set: Initialize pixel data in VideoBroadcasterTest.OnFrame test. Created 4 years 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 | « webrtc/test/frame_generator.cc ('k') | webrtc/video/vie_encoder.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) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 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 #include "webrtc/video/video_quality_test.h" 10 #include "webrtc/video/video_quality_test.h"
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 } 364 }
365 EncodedFrameObserver* encode_timing_proxy() { return &encode_timing_proxy_; } 365 EncodedFrameObserver* encode_timing_proxy() { return &encode_timing_proxy_; }
366 366
367 test::LayerFilteringTransport* const transport_; 367 test::LayerFilteringTransport* const transport_;
368 PacketReceiver* receiver_; 368 PacketReceiver* receiver_;
369 369
370 private: 370 private:
371 struct FrameComparison { 371 struct FrameComparison {
372 FrameComparison() 372 FrameComparison()
373 : dropped(false), 373 : dropped(false),
374 input_time_ms(0),
374 send_time_ms(0), 375 send_time_ms(0),
375 recv_time_ms(0), 376 recv_time_ms(0),
376 render_time_ms(0), 377 render_time_ms(0),
377 encoded_frame_size(0) {} 378 encoded_frame_size(0) {}
378 379
379 FrameComparison(const VideoFrame& reference, 380 FrameComparison(const VideoFrame& reference,
380 const VideoFrame& render, 381 const VideoFrame& render,
381 bool dropped, 382 bool dropped,
383 int64_t input_time_ms,
382 int64_t send_time_ms, 384 int64_t send_time_ms,
383 int64_t recv_time_ms, 385 int64_t recv_time_ms,
384 int64_t render_time_ms, 386 int64_t render_time_ms,
385 size_t encoded_frame_size) 387 size_t encoded_frame_size)
386 : reference(reference), 388 : reference(reference),
387 render(render), 389 render(render),
388 dropped(dropped), 390 dropped(dropped),
391 input_time_ms(input_time_ms),
389 send_time_ms(send_time_ms), 392 send_time_ms(send_time_ms),
390 recv_time_ms(recv_time_ms), 393 recv_time_ms(recv_time_ms),
391 render_time_ms(render_time_ms), 394 render_time_ms(render_time_ms),
392 encoded_frame_size(encoded_frame_size) {} 395 encoded_frame_size(encoded_frame_size) {}
393 396
394 VideoFrame reference; 397 FrameComparison(bool dropped,
395 VideoFrame render; 398 int64_t input_time_ms,
399 int64_t send_time_ms,
400 int64_t recv_time_ms,
401 int64_t render_time_ms,
402 size_t encoded_frame_size)
403 : dropped(dropped),
404 input_time_ms(input_time_ms),
405 send_time_ms(send_time_ms),
406 recv_time_ms(recv_time_ms),
407 render_time_ms(render_time_ms),
408 encoded_frame_size(encoded_frame_size) {}
409
410 rtc::Optional<VideoFrame> reference;
411 rtc::Optional<VideoFrame> render;
396 bool dropped; 412 bool dropped;
413 int64_t input_time_ms;
397 int64_t send_time_ms; 414 int64_t send_time_ms;
398 int64_t recv_time_ms; 415 int64_t recv_time_ms;
399 int64_t render_time_ms; 416 int64_t render_time_ms;
400 size_t encoded_frame_size; 417 size_t encoded_frame_size;
401 }; 418 };
402 419
403 struct Sample { 420 struct Sample {
404 Sample(int dropped, 421 Sample(int dropped,
405 int64_t input_time_ms, 422 int64_t input_time_ms,
406 int64_t send_time_ms, 423 int64_t send_time_ms,
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 recv_times_.erase(reference_timestamp); 486 recv_times_.erase(reference_timestamp);
470 487
471 // TODO(ivica): Make this work for > 2 streams. 488 // TODO(ivica): Make this work for > 2 streams.
472 auto it = encoded_frame_sizes_.find(reference_timestamp); 489 auto it = encoded_frame_sizes_.find(reference_timestamp);
473 if (it == encoded_frame_sizes_.end()) 490 if (it == encoded_frame_sizes_.end())
474 it = encoded_frame_sizes_.find(reference_timestamp - 1); 491 it = encoded_frame_sizes_.find(reference_timestamp - 1);
475 size_t encoded_size = it == encoded_frame_sizes_.end() ? 0 : it->second; 492 size_t encoded_size = it == encoded_frame_sizes_.end() ? 0 : it->second;
476 if (it != encoded_frame_sizes_.end()) 493 if (it != encoded_frame_sizes_.end())
477 encoded_frame_sizes_.erase(it); 494 encoded_frame_sizes_.erase(it);
478 495
479 VideoFrame reference_copy;
480 VideoFrame render_copy;
481
482 rtc::CritScope crit(&comparison_lock_); 496 rtc::CritScope crit(&comparison_lock_);
483 if (comparisons_.size() < kMaxComparisons) { 497 if (comparisons_.size() < kMaxComparisons) {
484 reference_copy = reference; 498 comparisons_.push_back(FrameComparison(reference, render, dropped,
485 render_copy = render; 499 reference.ntp_time_ms(),
500 send_time_ms, recv_time_ms,
501 render_time_ms, encoded_size));
486 } else { 502 } else {
487 // Copy the time to ensure that delay calculations can still be made. 503 comparisons_.push_back(FrameComparison(dropped,
488 reference_copy.set_ntp_time_ms(reference.ntp_time_ms()); 504 reference.ntp_time_ms(),
489 render_copy.set_ntp_time_ms(render.ntp_time_ms()); 505 send_time_ms, recv_time_ms,
506 render_time_ms, encoded_size));
490 } 507 }
491 comparisons_.push_back(FrameComparison(reference_copy, render_copy, dropped,
492 send_time_ms, recv_time_ms,
493 render_time_ms, encoded_size));
494 comparison_available_event_.Set(); 508 comparison_available_event_.Set();
495 } 509 }
496 510
497 static bool PollStatsThread(void* obj) { 511 static bool PollStatsThread(void* obj) {
498 return static_cast<VideoAnalyzer*>(obj)->PollStats(); 512 return static_cast<VideoAnalyzer*>(obj)->PollStats();
499 } 513 }
500 514
501 bool PollStats() { 515 bool PollStats() {
502 if (done_.Wait(kSendStatsPollingIntervalMs)) 516 if (done_.Wait(kSendStatsPollingIntervalMs))
503 return false; 517 return false;
(...skipping 16 matching lines...) Expand all
520 } 534 }
521 535
522 static bool FrameComparisonThread(void* obj) { 536 static bool FrameComparisonThread(void* obj) {
523 return static_cast<VideoAnalyzer*>(obj)->CompareFrames(); 537 return static_cast<VideoAnalyzer*>(obj)->CompareFrames();
524 } 538 }
525 539
526 bool CompareFrames() { 540 bool CompareFrames() {
527 if (AllFramesRecorded()) 541 if (AllFramesRecorded())
528 return false; 542 return false;
529 543
530 VideoFrame reference;
531 VideoFrame render;
532 FrameComparison comparison; 544 FrameComparison comparison;
533 545
534 if (!PopComparison(&comparison)) { 546 if (!PopComparison(&comparison)) {
535 // Wait until new comparison task is available, or test is done. 547 // Wait until new comparison task is available, or test is done.
536 // If done, wake up remaining threads waiting. 548 // If done, wake up remaining threads waiting.
537 comparison_available_event_.Wait(1000); 549 comparison_available_event_.Wait(1000);
538 if (AllFramesRecorded()) { 550 if (AllFramesRecorded()) {
539 comparison_available_event_.Set(); 551 comparison_available_event_.Set();
540 return false; 552 return false;
541 } 553 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 test_label_.c_str(), dropped_frames_before_rendering_); 629 test_label_.c_str(), dropped_frames_before_rendering_);
618 630
619 EXPECT_GT(psnr_.Mean(), avg_psnr_threshold_); 631 EXPECT_GT(psnr_.Mean(), avg_psnr_threshold_);
620 EXPECT_GT(ssim_.Mean(), avg_ssim_threshold_); 632 EXPECT_GT(ssim_.Mean(), avg_ssim_threshold_);
621 } 633 }
622 634
623 void PerformFrameComparison(const FrameComparison& comparison) { 635 void PerformFrameComparison(const FrameComparison& comparison) {
624 // Perform expensive psnr and ssim calculations while not holding lock. 636 // Perform expensive psnr and ssim calculations while not holding lock.
625 double psnr = -1.0; 637 double psnr = -1.0;
626 double ssim = -1.0; 638 double ssim = -1.0;
627 if (!comparison.reference.IsZeroSize()) { 639 if (comparison.reference) {
628 psnr = I420PSNR(&comparison.reference, &comparison.render); 640 psnr = I420PSNR(&*comparison.reference, &*comparison.render);
629 ssim = I420SSIM(&comparison.reference, &comparison.render); 641 ssim = I420SSIM(&*comparison.reference, &*comparison.render);
630 } 642 }
631 643
632 int64_t input_time_ms = comparison.reference.ntp_time_ms(); 644 int64_t input_time_ms = comparison.reference->ntp_time_ms();
633 645
634 rtc::CritScope crit(&comparison_lock_); 646 rtc::CritScope crit(&comparison_lock_);
635 if (graph_data_output_file_) { 647 if (graph_data_output_file_) {
636 samples_.push_back( 648 samples_.push_back(
637 Sample(comparison.dropped, input_time_ms, comparison.send_time_ms, 649 Sample(comparison.dropped, input_time_ms, comparison.send_time_ms,
638 comparison.recv_time_ms, comparison.render_time_ms, 650 comparison.recv_time_ms, comparison.render_time_ms,
639 comparison.encoded_frame_size, psnr, ssim)); 651 comparison.encoded_frame_size, psnr, ssim));
640 } 652 }
641 if (psnr >= 0.0) 653 if (psnr >= 0.0)
642 psnr_.AddSample(psnr); 654 psnr_.AddSample(psnr);
(...skipping 842 matching lines...) Expand 10 before | Expand all | Expand 10 after
1485 std::ostringstream str; 1497 std::ostringstream str;
1486 str << receive_logs_++; 1498 str << receive_logs_++;
1487 std::string path = 1499 std::string path =
1488 params_.video.encoded_frame_base_path + "." + str.str() + ".recv.ivf"; 1500 params_.video.encoded_frame_base_path + "." + str.str() + ".recv.ivf";
1489 stream->EnableEncodedFrameRecording(rtc::CreatePlatformFile(path), 1501 stream->EnableEncodedFrameRecording(rtc::CreatePlatformFile(path),
1490 10000000); 1502 10000000);
1491 } 1503 }
1492 } 1504 }
1493 1505
1494 } // namespace webrtc 1506 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/test/frame_generator.cc ('k') | webrtc/video/vie_encoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698