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

Side by Side Diff: media/cast/sender/video_encoder_unittest.cc

Issue 1534273002: Switch to standard integer types in media/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more Created 5 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <vector> 5 #include <vector>
6 #include <utility> 6 #include <utility>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 } 158 }
159 PopulateVideoFrame(frame.get(), 123); 159 PopulateVideoFrame(frame.get(), 123);
160 return frame; 160 return frame;
161 } 161 }
162 162
163 // Requests encoding the |video_frame| and has the resulting frame delivered 163 // Requests encoding the |video_frame| and has the resulting frame delivered
164 // via a callback that checks for expected results. Returns false if the 164 // via a callback that checks for expected results. Returns false if the
165 // encoder rejected the request. 165 // encoder rejected the request.
166 bool EncodeAndCheckDelivery( 166 bool EncodeAndCheckDelivery(
167 const scoped_refptr<media::VideoFrame>& video_frame, 167 const scoped_refptr<media::VideoFrame>& video_frame,
168 uint32 frame_id, 168 uint32_t frame_id,
169 uint32 reference_frame_id) { 169 uint32_t reference_frame_id) {
170 return video_encoder_->EncodeVideoFrame( 170 return video_encoder_->EncodeVideoFrame(
171 video_frame, 171 video_frame,
172 Now(), 172 Now(),
173 base::Bind(&VideoEncoderTest::DeliverEncodedVideoFrame, 173 base::Bind(&VideoEncoderTest::DeliverEncodedVideoFrame,
174 base::Unretained(this), 174 base::Unretained(this),
175 frame_id, 175 frame_id,
176 reference_frame_id, 176 reference_frame_id,
177 TimeDeltaToRtpDelta(video_frame->timestamp(), 177 TimeDeltaToRtpDelta(video_frame->timestamp(),
178 kVideoFrequency), 178 kVideoFrequency),
179 Now())); 179 Now()));
(...skipping 26 matching lines...) Expand all
206 operational_status_ == STATUS_INITIALIZED); 206 operational_status_ == STATUS_INITIALIZED);
207 207
208 // Create the VideoFrameFactory the first time status changes to 208 // Create the VideoFrameFactory the first time status changes to
209 // STATUS_INITIALIZED. 209 // STATUS_INITIALIZED.
210 if (operational_status_ == STATUS_INITIALIZED && !video_frame_factory_) 210 if (operational_status_ == STATUS_INITIALIZED && !video_frame_factory_)
211 video_frame_factory_ = video_encoder_->CreateVideoFrameFactory().Pass(); 211 video_frame_factory_ = video_encoder_->CreateVideoFrameFactory().Pass();
212 } 212 }
213 213
214 // Checks that |encoded_frame| matches expected values. This is the method 214 // Checks that |encoded_frame| matches expected values. This is the method
215 // bound in the callback returned from EncodeAndCheckDelivery(). 215 // bound in the callback returned from EncodeAndCheckDelivery().
216 void DeliverEncodedVideoFrame( 216 void DeliverEncodedVideoFrame(uint32_t expected_frame_id,
217 uint32 expected_frame_id, 217 uint32_t expected_last_referenced_frame_id,
218 uint32 expected_last_referenced_frame_id, 218 uint32_t expected_rtp_timestamp,
219 uint32 expected_rtp_timestamp, 219 const base::TimeTicks& expected_reference_time,
220 const base::TimeTicks& expected_reference_time, 220 scoped_ptr<SenderEncodedFrame> encoded_frame) {
221 scoped_ptr<SenderEncodedFrame> encoded_frame) {
222 EXPECT_TRUE(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 221 EXPECT_TRUE(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
223 222
224 EXPECT_EQ(expected_frame_id, encoded_frame->frame_id); 223 EXPECT_EQ(expected_frame_id, encoded_frame->frame_id);
225 EXPECT_EQ(expected_rtp_timestamp, encoded_frame->rtp_timestamp); 224 EXPECT_EQ(expected_rtp_timestamp, encoded_frame->rtp_timestamp);
226 EXPECT_EQ(expected_reference_time, encoded_frame->reference_time); 225 EXPECT_EQ(expected_reference_time, encoded_frame->reference_time);
227 226
228 // The platform encoders are "black boxes" and may choose to vend key frames 227 // The platform encoders are "black boxes" and may choose to vend key frames
229 // and/or empty data at any time. The software encoders, however, should 228 // and/or empty data at any time. The software encoders, however, should
230 // strictly adhere to expected behavior. 229 // strictly adhere to expected behavior.
231 if (is_testing_platform_encoder()) { 230 if (is_testing_platform_encoder()) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 277
279 // A simple test to encode ten frames of video, expecting to see one key frame 278 // A simple test to encode ten frames of video, expecting to see one key frame
280 // followed by nine delta frames. 279 // followed by nine delta frames.
281 TEST_P(VideoEncoderTest, GeneratesKeyFrameThenOnlyDeltaFrames) { 280 TEST_P(VideoEncoderTest, GeneratesKeyFrameThenOnlyDeltaFrames) {
282 CreateEncoder(); 281 CreateEncoder();
283 SetVEAFactoryAutoRespond(true); 282 SetVEAFactoryAutoRespond(true);
284 283
285 EXPECT_EQ(0, count_frames_delivered()); 284 EXPECT_EQ(0, count_frames_delivered());
286 ExpectVEAResponsesForExternalVideoEncoder(0, 0); 285 ExpectVEAResponsesForExternalVideoEncoder(0, 0);
287 286
288 uint32 frame_id = 0; 287 uint32_t frame_id = 0;
289 uint32 reference_frame_id = 0; 288 uint32_t reference_frame_id = 0;
290 const gfx::Size frame_size(1280, 720); 289 const gfx::Size frame_size(1280, 720);
291 290
292 // Some encoders drop one or more frames initially while the encoder 291 // Some encoders drop one or more frames initially while the encoder
293 // initializes. Then, for all encoders, expect one key frame is delivered. 292 // initializes. Then, for all encoders, expect one key frame is delivered.
294 bool accepted_first_frame = false; 293 bool accepted_first_frame = false;
295 do { 294 do {
296 accepted_first_frame = EncodeAndCheckDelivery( 295 accepted_first_frame = EncodeAndCheckDelivery(
297 CreateTestVideoFrame(frame_size), frame_id, reference_frame_id); 296 CreateTestVideoFrame(frame_size), frame_id, reference_frame_id);
298 if (!encoder_has_resize_delay()) 297 if (!encoder_has_resize_delay())
299 EXPECT_TRUE(accepted_first_frame); 298 EXPECT_TRUE(accepted_first_frame);
(...skipping 30 matching lines...) Expand all
330 frame_sizes.push_back(gfx::Size(300, 200)); // Shrink both dimensions again. 329 frame_sizes.push_back(gfx::Size(300, 200)); // Shrink both dimensions again.
331 frame_sizes.push_back(gfx::Size(200, 300)); // Same area. 330 frame_sizes.push_back(gfx::Size(200, 300)); // Same area.
332 frame_sizes.push_back(gfx::Size(600, 400)); // Grow both dimensions. 331 frame_sizes.push_back(gfx::Size(600, 400)); // Grow both dimensions.
333 frame_sizes.push_back(gfx::Size(638, 400)); // Shrink only one dimension. 332 frame_sizes.push_back(gfx::Size(638, 400)); // Shrink only one dimension.
334 frame_sizes.push_back(gfx::Size(638, 398)); // Shrink the other dimension. 333 frame_sizes.push_back(gfx::Size(638, 398)); // Shrink the other dimension.
335 frame_sizes.push_back(gfx::Size(320, 180)); // Shrink both dimensions again. 334 frame_sizes.push_back(gfx::Size(320, 180)); // Shrink both dimensions again.
336 frame_sizes.push_back(gfx::Size(322, 180)); // Grow only one dimension. 335 frame_sizes.push_back(gfx::Size(322, 180)); // Grow only one dimension.
337 frame_sizes.push_back(gfx::Size(322, 182)); // Grow the other dimension. 336 frame_sizes.push_back(gfx::Size(322, 182)); // Grow the other dimension.
338 frame_sizes.push_back(gfx::Size(1920, 1080)); // Grow both dimensions again. 337 frame_sizes.push_back(gfx::Size(1920, 1080)); // Grow both dimensions again.
339 338
340 uint32 frame_id = 0; 339 uint32_t frame_id = 0;
341 340
342 // Encode one frame at each size. For encoders with a resize delay, except no 341 // Encode one frame at each size. For encoders with a resize delay, except no
343 // frames to be delivered since each frame size change will sprun 342 // frames to be delivered since each frame size change will sprun
344 // re-initialization of the underlying encoder. Otherwise expect all key 343 // re-initialization of the underlying encoder. Otherwise expect all key
345 // frames to come out. 344 // frames to come out.
346 for (const auto& frame_size : frame_sizes) { 345 for (const auto& frame_size : frame_sizes) {
347 EXPECT_EQ(!encoder_has_resize_delay(), 346 EXPECT_EQ(!encoder_has_resize_delay(),
348 EncodeAndCheckDelivery(CreateTestVideoFrame(frame_size), frame_id, 347 EncodeAndCheckDelivery(CreateTestVideoFrame(frame_size), frame_id,
349 frame_id)); 348 frame_id));
350 RunTasksAndAdvanceClock(); 349 RunTasksAndAdvanceClock();
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 #endif 418 #endif
420 return values; 419 return values;
421 } 420 }
422 } // namespace 421 } // namespace
423 422
424 INSTANTIATE_TEST_CASE_P( 423 INSTANTIATE_TEST_CASE_P(
425 , VideoEncoderTest, ::testing::ValuesIn(DetermineEncodersToTest())); 424 , VideoEncoderTest, ::testing::ValuesIn(DetermineEncodersToTest()));
426 425
427 } // namespace cast 426 } // namespace cast
428 } // namespace media 427 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698