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

Unified Diff: content/common/gpu/media/video_encode_accelerator_unittest.cc

Issue 1056133009: Fix the validation of the keyframe requests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/gpu/media/video_encode_accelerator_unittest.cc
diff --git a/content/common/gpu/media/video_encode_accelerator_unittest.cc b/content/common/gpu/media/video_encode_accelerator_unittest.cc
index 73e319afb47afa7875fd62a7416e127e45f98118..c0f450881b7fee13eaeffd688f8b3c81c0ca4a8a 100644
--- a/content/common/gpu/media/video_encode_accelerator_unittest.cc
+++ b/content/common/gpu/media/video_encode_accelerator_unittest.cc
@@ -52,9 +52,6 @@ const unsigned int kNumExtraInputFrames = 4;
// Maximum delay between requesting a keyframe and receiving one, in frames.
// Arbitrarily chosen as a reasonable requirement.
const unsigned int kMaxKeyframeDelay = 4;
-// Value to use as max frame number for keyframe detection.
-const unsigned int kMaxFrameNum =
- std::numeric_limits<unsigned int>::max() - kMaxKeyframeDelay;
// Default initial bitrate.
const uint32 kDefaultBitrate = 2000000;
// Default ratio of requested_subsequent_bitrate to initial_bitrate
@@ -301,7 +298,6 @@ static void CreateAlignedInputStreamFile(const gfx::Size& coded_size,
0U)
<< "Stream byte size is not a product of calculated frame byte size";
CHECK_GT(test_stream->num_frames, 0UL);
- CHECK_LE(test_stream->num_frames, kMaxFrameNum);
}
// Parse |data| into its constituent parts, set the various output fields
@@ -709,7 +705,7 @@ VEAClient::VEAClient(TestStream* test_stream,
save_to_file_(save_to_file),
keyframe_period_(keyframe_period),
num_keyframes_requested_(0),
- next_keyframe_at_(kMaxFrameNum),
+ next_keyframe_at_(0),
force_bitrate_(force_bitrate),
current_requested_bitrate_(0),
current_framerate_(0),
@@ -1101,15 +1097,18 @@ bool VEAClient::HandleEncodedFrame(bool keyframe) {
// earlier than we requested one (in time), and not later than
// kMaxKeyframeDelay frames after the frame, for which we requested
// it, comes back encoded.
- EXPECT_LE(num_encoded_frames_, next_keyframe_at_ + kMaxKeyframeDelay);
-
if (keyframe) {
- if (num_keyframes_requested_ > 0)
+ if (num_keyframes_requested_ > 0 &&
+ num_encoded_frames_ > next_keyframe_at_) {
--num_keyframes_requested_;
- next_keyframe_at_ += keyframe_period_;
+ next_keyframe_at_ += keyframe_period_;
+ }
seen_keyframe_in_this_buffer_ = true;
}
+ if (num_keyframes_requested_ > 0)
+ EXPECT_LE(num_encoded_frames_, next_keyframe_at_ + kMaxKeyframeDelay);
+
if (num_encoded_frames_ == num_frames_to_encode_ / 2) {
VerifyStreamProperties();
if (requested_subsequent_bitrate_ != current_requested_bitrate_ ||
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698