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

Side by Side Diff: media/gpu/video_encode_accelerator_unittest.cc

Issue 2205623002: Use webrtc::VideoFrame timestamp in RTCVideoEncoder (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: pbos@ comments. Created 4 years, 4 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <inttypes.h> 5 #include <inttypes.h>
6 #include <stddef.h> 6 #include <stddef.h>
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 946 matching lines...) Expand 10 before | Expand all | Expand 10 after
957 unsigned int num_required_input_buffers_; 957 unsigned int num_required_input_buffers_;
958 size_t output_buffer_size_; 958 size_t output_buffer_size_;
959 959
960 // Number of frames to encode. This may differ from the number of frames in 960 // Number of frames to encode. This may differ from the number of frames in
961 // stream if we need more frames for bitrate tests. 961 // stream if we need more frames for bitrate tests.
962 unsigned int num_frames_to_encode_; 962 unsigned int num_frames_to_encode_;
963 963
964 // Number of encoded frames we've got from the encoder thus far. 964 // Number of encoded frames we've got from the encoder thus far.
965 unsigned int num_encoded_frames_; 965 unsigned int num_encoded_frames_;
966 966
967 // Number of encoded nal units.
968 unsigned int num_encoded_nalus_;
969
967 // Frames since last bitrate verification. 970 // Frames since last bitrate verification.
968 unsigned int num_frames_since_last_check_; 971 unsigned int num_frames_since_last_check_;
969 972
970 // True if received a keyframe while processing current bitstream buffer. 973 // True if received a keyframe while processing current bitstream buffer.
971 bool seen_keyframe_in_this_buffer_; 974 bool seen_keyframe_in_this_buffer_;
972 975
973 // True if we are to save the encoded stream to a file. 976 // True if we are to save the encoded stream to a file.
974 bool save_to_file_; 977 bool save_to_file_;
975 978
976 // Request a keyframe every keyframe_period_ frames. 979 // Request a keyframe every keyframe_period_ frames.
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 : state_(CS_CREATED), 1057 : state_(CS_CREATED),
1055 test_stream_(test_stream), 1058 test_stream_(test_stream),
1056 note_(note), 1059 note_(note),
1057 next_input_id_(0), 1060 next_input_id_(0),
1058 next_output_buffer_id_(0), 1061 next_output_buffer_id_(0),
1059 pos_in_input_stream_(0), 1062 pos_in_input_stream_(0),
1060 num_required_input_buffers_(0), 1063 num_required_input_buffers_(0),
1061 output_buffer_size_(0), 1064 output_buffer_size_(0),
1062 num_frames_to_encode_(0), 1065 num_frames_to_encode_(0),
1063 num_encoded_frames_(0), 1066 num_encoded_frames_(0),
1067 num_encoded_nalus_(0),
1064 num_frames_since_last_check_(0), 1068 num_frames_since_last_check_(0),
1065 seen_keyframe_in_this_buffer_(false), 1069 seen_keyframe_in_this_buffer_(false),
1066 save_to_file_(save_to_file), 1070 save_to_file_(save_to_file),
1067 keyframe_period_(keyframe_period), 1071 keyframe_period_(keyframe_period),
1068 num_keyframes_requested_(0), 1072 num_keyframes_requested_(0),
1069 next_keyframe_at_(0), 1073 next_keyframe_at_(0),
1070 force_bitrate_(force_bitrate), 1074 force_bitrate_(force_bitrate),
1071 current_requested_bitrate_(0), 1075 current_requested_bitrate_(0),
1072 current_framerate_(0), 1076 current_framerate_(0),
1073 encoded_stream_size_since_last_check_(0), 1077 encoded_stream_size_since_last_check_(0),
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
1526 1530
1527 last_frame_ready_time_ = base::TimeTicks::Now(); 1531 last_frame_ready_time_ = base::TimeTicks::Now();
1528 1532
1529 if (g_env->needs_encode_latency()) { 1533 if (g_env->needs_encode_latency()) {
1530 LOG_ASSERT(num_encoded_frames_ < encode_start_time_.size()); 1534 LOG_ASSERT(num_encoded_frames_ < encode_start_time_.size());
1531 base::TimeTicks start_time = encode_start_time_[num_encoded_frames_]; 1535 base::TimeTicks start_time = encode_start_time_[num_encoded_frames_];
1532 LOG_ASSERT(!start_time.is_null()); 1536 LOG_ASSERT(!start_time.is_null());
1533 encode_latencies_.push_back(last_frame_ready_time_ - start_time); 1537 encode_latencies_.push_back(last_frame_ready_time_ - start_time);
1534 } 1538 }
1535 1539
1536 ++num_encoded_frames_; 1540 // H264 encoder sends multiple NAL units, 2 per frame.
1541 if (test_stream_->requested_profile == H264PROFILE_BASELINE) {
1542 ++num_encoded_nalus_;
1543 num_encoded_frames_ = num_encoded_nalus_ / 2;
wuchengli 2016/08/03 14:03:57 Hmm. Maybe we should increase num_encoded_frames_
wuchengli 2016/08/05 02:10:28 I discussed with Pawel. Normally we get one slice
1544 } else {
1545 ++num_encoded_frames_;
1546 }
1537 ++num_frames_since_last_check_; 1547 ++num_frames_since_last_check_;
1538 1548
1539 // Because the keyframe behavior requirements are loose, we give 1549 // Because the keyframe behavior requirements are loose, we give
1540 // the encoder more freedom here. It could either deliver a keyframe 1550 // the encoder more freedom here. It could either deliver a keyframe
1541 // immediately after we requested it, which could be for a frame number 1551 // immediately after we requested it, which could be for a frame number
1542 // before the one we requested it for (if the keyframe request 1552 // before the one we requested it for (if the keyframe request
1543 // is asynchronous, i.e. not bound to any concrete frame, and because 1553 // is asynchronous, i.e. not bound to any concrete frame, and because
1544 // the pipeline can be deeper than one frame), at that frame, or after. 1554 // the pipeline can be deeper than one frame), at that frame, or after.
1545 // So the only constraints we put here is that we get a keyframe not 1555 // So the only constraints we put here is that we get a keyframe not
1546 // earlier than we requested one (in time), and not later than 1556 // earlier than we requested one (in time), and not later than
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
1829 VideoEncodeAcceleratorTest, 1839 VideoEncodeAcceleratorTest,
1830 ::testing::Values(std::make_tuple(3, 1840 ::testing::Values(std::make_tuple(3,
1831 false, 1841 false,
1832 0, 1842 0,
1833 false, 1843 false,
1834 false, 1844 false,
1835 false, 1845 false,
1836 false, 1846 false,
1837 false, 1847 false,
1838 false))); 1848 false)));
1849
1850 #if defined(OS_MACOSX)
1851 INSTANTIATE_TEST_CASE_P(
1852 VerifyTimestamp,
1853 VideoEncodeAcceleratorTest,
1854 ::testing::Values(
1855 std::make_tuple(1, false, 0, false, false, false, false, false, true)));
1856 #endif // defined(OS_MACOSX)
1857
1839 #if defined(OS_WIN) 1858 #if defined(OS_WIN)
1840 INSTANTIATE_TEST_CASE_P( 1859 INSTANTIATE_TEST_CASE_P(
1841 ForceBitrate, 1860 ForceBitrate,
1842 VideoEncodeAcceleratorTest, 1861 VideoEncodeAcceleratorTest,
1843 ::testing::Values( 1862 ::testing::Values(
1844 std::make_tuple(1, false, 0, true, false, false, false, false, false))); 1863 std::make_tuple(1, false, 0, true, false, false, false, false, false)));
1845 #endif // defined(OS_WIN) 1864 #endif // defined(OS_WIN)
1846 1865
1847 #endif // defined(OS_CHROMEOS) 1866 #endif // defined(OS_CHROMEOS)
1848 1867
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1934 1953
1935 media::g_env = 1954 media::g_env =
1936 reinterpret_cast<media::VideoEncodeAcceleratorTestEnvironment*>( 1955 reinterpret_cast<media::VideoEncodeAcceleratorTestEnvironment*>(
1937 testing::AddGlobalTestEnvironment( 1956 testing::AddGlobalTestEnvironment(
1938 new media::VideoEncodeAcceleratorTestEnvironment( 1957 new media::VideoEncodeAcceleratorTestEnvironment(
1939 std::move(test_stream_data), log_path, run_at_fps, 1958 std::move(test_stream_data), log_path, run_at_fps,
1940 needs_encode_latency, verify_all_output))); 1959 needs_encode_latency, verify_all_output)));
1941 1960
1942 return RUN_ALL_TESTS(); 1961 return RUN_ALL_TESTS();
1943 } 1962 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698