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

Side by Side Diff: media/base/android/media_codec_decoder_unittest.cc

Issue 2253943004: Re-write many calls to WrapUnique() with MakeUnique() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <memory> 5 #include <memory>
6 #include <utility> 6 #include <utility>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 return true; 260 return true;
261 } 261 }
262 message_loop_.RunUntilIdle(); 262 message_loop_.RunUntilIdle();
263 } while (!is_timeout_expired()); 263 } while (!is_timeout_expired());
264 264
265 DCHECK(!timer.IsRunning()); 265 DCHECK(!timer.IsRunning());
266 return false; 266 return false;
267 } 267 }
268 268
269 void MediaCodecDecoderTest::CreateAudioDecoder() { 269 void MediaCodecDecoderTest::CreateAudioDecoder() {
270 decoder_ = base::WrapUnique(new AudioMediaCodecDecoder( 270 decoder_ = base::MakeUnique<AudioMediaCodecDecoder>(
271 task_runner_, &frame_statistics_, 271 task_runner_, &frame_statistics_,
272 base::Bind(&MediaCodecDecoderTest::OnDataRequested, 272 base::Bind(&MediaCodecDecoderTest::OnDataRequested,
273 base::Unretained(this)), 273 base::Unretained(this)),
274 base::Bind(&MediaCodecDecoderTest::OnStarvation, base::Unretained(this)), 274 base::Bind(&MediaCodecDecoderTest::OnStarvation, base::Unretained(this)),
275 base::Bind(&MediaCodecDecoderTest::OnDecoderDrained, 275 base::Bind(&MediaCodecDecoderTest::OnDecoderDrained,
276 base::Unretained(this)), 276 base::Unretained(this)),
277 base::Bind(&MediaCodecDecoderTest::OnStopDone, base::Unretained(this)), 277 base::Bind(&MediaCodecDecoderTest::OnStopDone, base::Unretained(this)),
278 base::Bind(&MediaCodecDecoderTest::OnKeyRequired, base::Unretained(this)), 278 base::Bind(&MediaCodecDecoderTest::OnKeyRequired, base::Unretained(this)),
279 base::Bind(&MediaCodecDecoderTest::OnError, base::Unretained(this)), 279 base::Bind(&MediaCodecDecoderTest::OnError, base::Unretained(this)),
280 base::Bind(&MediaCodecDecoderTest::OnUpdateCurrentTime, 280 base::Bind(&MediaCodecDecoderTest::OnUpdateCurrentTime,
281 base::Unretained(this)))); 281 base::Unretained(this)));
282 282
283 data_available_cb_ = base::Bind(&MediaCodecDecoder::OnDemuxerDataAvailable, 283 data_available_cb_ = base::Bind(&MediaCodecDecoder::OnDemuxerDataAvailable,
284 base::Unretained(decoder_.get())); 284 base::Unretained(decoder_.get()));
285 } 285 }
286 286
287 void MediaCodecDecoderTest::CreateVideoDecoder() { 287 void MediaCodecDecoderTest::CreateVideoDecoder() {
288 decoder_ = base::WrapUnique(new VideoMediaCodecDecoder( 288 decoder_ = base::MakeUnique<VideoMediaCodecDecoder>(
289 task_runner_, &frame_statistics_, 289 task_runner_, &frame_statistics_,
290 base::Bind(&MediaCodecDecoderTest::OnDataRequested, 290 base::Bind(&MediaCodecDecoderTest::OnDataRequested,
291 base::Unretained(this)), 291 base::Unretained(this)),
292 base::Bind(&MediaCodecDecoderTest::OnStarvation, base::Unretained(this)), 292 base::Bind(&MediaCodecDecoderTest::OnStarvation, base::Unretained(this)),
293 base::Bind(&MediaCodecDecoderTest::OnDecoderDrained, 293 base::Bind(&MediaCodecDecoderTest::OnDecoderDrained,
294 base::Unretained(this)), 294 base::Unretained(this)),
295 base::Bind(&MediaCodecDecoderTest::OnStopDone, base::Unretained(this)), 295 base::Bind(&MediaCodecDecoderTest::OnStopDone, base::Unretained(this)),
296 base::Bind(&MediaCodecDecoderTest::OnKeyRequired, base::Unretained(this)), 296 base::Bind(&MediaCodecDecoderTest::OnKeyRequired, base::Unretained(this)),
297 base::Bind(&MediaCodecDecoderTest::OnError, base::Unretained(this)), 297 base::Bind(&MediaCodecDecoderTest::OnError, base::Unretained(this)),
298 base::Bind(&MediaCodecDecoderTest::OnUpdateCurrentTime, 298 base::Bind(&MediaCodecDecoderTest::OnUpdateCurrentTime,
299 base::Unretained(this)), 299 base::Unretained(this)),
300 base::Bind(&MediaCodecDecoderTest::OnVideoSizeChanged, 300 base::Bind(&MediaCodecDecoderTest::OnVideoSizeChanged,
301 base::Unretained(this)))); 301 base::Unretained(this)));
302 302
303 data_available_cb_ = base::Bind(&MediaCodecDecoder::OnDemuxerDataAvailable, 303 data_available_cb_ = base::Bind(&MediaCodecDecoder::OnDemuxerDataAvailable,
304 base::Unretained(decoder_.get())); 304 base::Unretained(decoder_.get()));
305 } 305 }
306 306
307 void MediaCodecDecoderTest::OnDataRequested() { 307 void MediaCodecDecoderTest::OnDataRequested() {
308 if (!data_factory_) 308 if (!data_factory_)
309 return; 309 return;
310 310
311 DemuxerData data; 311 DemuxerData data;
(...skipping 11 matching lines...) Expand all
323 ASSERT_NE(nullptr, decoder_.get()); 323 ASSERT_NE(nullptr, decoder_.get());
324 VideoMediaCodecDecoder* video_decoder = 324 VideoMediaCodecDecoder* video_decoder =
325 static_cast<VideoMediaCodecDecoder*>(decoder_.get()); 325 static_cast<VideoMediaCodecDecoder*>(decoder_.get());
326 video_decoder->SetVideoSurface(std::move(surface)); 326 video_decoder->SetVideoSurface(std::move(surface));
327 } 327 }
328 328
329 TEST_F(MediaCodecDecoderTest, AudioPrefetch) { 329 TEST_F(MediaCodecDecoderTest, AudioPrefetch) {
330 CreateAudioDecoder(); 330 CreateAudioDecoder();
331 331
332 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500); 332 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500);
333 SetDataFactory(base::WrapUnique(new AudioFactory(duration))); 333 SetDataFactory(base::MakeUnique<AudioFactory>(duration));
334 334
335 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched, 335 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched,
336 base::Unretained(this), true)); 336 base::Unretained(this), true));
337 337
338 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched, 338 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched,
339 base::Unretained(this)))); 339 base::Unretained(this))));
340 } 340 }
341 341
342 TEST_F(MediaCodecDecoderTest, VideoPrefetch) { 342 TEST_F(MediaCodecDecoderTest, VideoPrefetch) {
343 CreateVideoDecoder(); 343 CreateVideoDecoder();
344 344
345 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500); 345 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500);
346 SetDataFactory(base::WrapUnique(new VideoFactory(duration))); 346 SetDataFactory(base::MakeUnique<VideoFactory>(duration));
347 347
348 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched, 348 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched,
349 base::Unretained(this), true)); 349 base::Unretained(this), true));
350 350
351 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched, 351 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched,
352 base::Unretained(this)))); 352 base::Unretained(this))));
353 } 353 }
354 354
355 TEST_F(MediaCodecDecoderTest, AudioConfigureNoParams) { 355 TEST_F(MediaCodecDecoderTest, AudioConfigureNoParams) {
356 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); 356 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE();
(...skipping 18 matching lines...) Expand all
375 375
376 TEST_F(MediaCodecDecoderTest, VideoConfigureNoParams) { 376 TEST_F(MediaCodecDecoderTest, VideoConfigureNoParams) {
377 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); 377 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE();
378 378
379 CreateVideoDecoder(); 379 CreateVideoDecoder();
380 380
381 // decoder_->Configure() searches back for the key frame. 381 // decoder_->Configure() searches back for the key frame.
382 // We have to prefetch decoder. 382 // We have to prefetch decoder.
383 383
384 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500); 384 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500);
385 SetDataFactory(base::WrapUnique(new VideoFactory(duration))); 385 SetDataFactory(base::MakeUnique<VideoFactory>(duration));
386 386
387 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched, 387 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched,
388 base::Unretained(this), true)); 388 base::Unretained(this), true));
389 389
390 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched, 390 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched,
391 base::Unretained(this)))); 391 base::Unretained(this))));
392 392
393 SetVideoSurface(); 393 SetVideoSurface();
394 394
395 // Cannot configure without config parameters. 395 // Cannot configure without config parameters.
396 EXPECT_EQ(MediaCodecDecoder::kConfigFailure, decoder_->Configure(nullptr)); 396 EXPECT_EQ(MediaCodecDecoder::kConfigFailure, decoder_->Configure(nullptr));
397 } 397 }
398 398
399 TEST_F(MediaCodecDecoderTest, VideoConfigureNoSurface) { 399 TEST_F(MediaCodecDecoderTest, VideoConfigureNoSurface) {
400 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); 400 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE();
401 401
402 CreateVideoDecoder(); 402 CreateVideoDecoder();
403 403
404 // decoder_->Configure() searches back for the key frame. 404 // decoder_->Configure() searches back for the key frame.
405 // We have to prefetch decoder. 405 // We have to prefetch decoder.
406 406
407 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500); 407 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500);
408 SetDataFactory(base::WrapUnique(new VideoFactory(duration))); 408 SetDataFactory(base::MakeUnique<VideoFactory>(duration));
409 409
410 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched, 410 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched,
411 base::Unretained(this), true)); 411 base::Unretained(this), true));
412 412
413 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched, 413 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched,
414 base::Unretained(this)))); 414 base::Unretained(this))));
415 415
416 decoder_->SetDemuxerConfigs(GetConfigs()); 416 decoder_->SetDemuxerConfigs(GetConfigs());
417 417
418 // Surface is not set, Configure() should fail. 418 // Surface is not set, Configure() should fail.
419 419
420 EXPECT_EQ(MediaCodecDecoder::kConfigFailure, decoder_->Configure(nullptr)); 420 EXPECT_EQ(MediaCodecDecoder::kConfigFailure, decoder_->Configure(nullptr));
421 } 421 }
422 422
423 TEST_F(MediaCodecDecoderTest, VideoConfigureInvalidSurface) { 423 TEST_F(MediaCodecDecoderTest, VideoConfigureInvalidSurface) {
424 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); 424 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE();
425 425
426 CreateVideoDecoder(); 426 CreateVideoDecoder();
427 427
428 // decoder_->Configure() searches back for the key frame. 428 // decoder_->Configure() searches back for the key frame.
429 // We have to prefetch decoder. 429 // We have to prefetch decoder.
430 430
431 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500); 431 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500);
432 SetDataFactory(base::WrapUnique(new VideoFactory(duration))); 432 SetDataFactory(base::MakeUnique<VideoFactory>(duration));
433 433
434 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched, 434 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched,
435 base::Unretained(this), true)); 435 base::Unretained(this), true));
436 436
437 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched, 437 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched,
438 base::Unretained(this)))); 438 base::Unretained(this))));
439 439
440 decoder_->SetDemuxerConfigs(GetConfigs()); 440 decoder_->SetDemuxerConfigs(GetConfigs());
441 441
442 // Prepare the surface. 442 // Prepare the surface.
(...skipping 13 matching lines...) Expand all
456 456
457 TEST_F(MediaCodecDecoderTest, VideoConfigureValidParams) { 457 TEST_F(MediaCodecDecoderTest, VideoConfigureValidParams) {
458 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); 458 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE();
459 459
460 CreateVideoDecoder(); 460 CreateVideoDecoder();
461 461
462 // decoder_->Configure() searches back for the key frame. 462 // decoder_->Configure() searches back for the key frame.
463 // We have to prefetch decoder. 463 // We have to prefetch decoder.
464 464
465 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500); 465 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500);
466 SetDataFactory(base::WrapUnique(new VideoFactory(duration))); 466 SetDataFactory(base::MakeUnique<VideoFactory>(duration));
467 467
468 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched, 468 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched,
469 base::Unretained(this), true)); 469 base::Unretained(this), true));
470 470
471 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched, 471 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched,
472 base::Unretained(this)))); 472 base::Unretained(this))));
473 473
474 decoder_->SetDemuxerConfigs(GetConfigs()); 474 decoder_->SetDemuxerConfigs(GetConfigs());
475 475
476 SetVideoSurface(); 476 SetVideoSurface();
477 477
478 // Now we can expect Configure() to succeed. 478 // Now we can expect Configure() to succeed.
479 479
480 EXPECT_EQ(MediaCodecDecoder::kConfigOk, decoder_->Configure(nullptr)); 480 EXPECT_EQ(MediaCodecDecoder::kConfigOk, decoder_->Configure(nullptr));
481 } 481 }
482 482
483 TEST_F(MediaCodecDecoderTest, AudioStartWithoutConfigure) { 483 TEST_F(MediaCodecDecoderTest, AudioStartWithoutConfigure) {
484 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); 484 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE();
485 485
486 CreateAudioDecoder(); 486 CreateAudioDecoder();
487 487
488 // Decoder has to be prefetched and configured before the start. 488 // Decoder has to be prefetched and configured before the start.
489 489
490 // Wrong state: not prefetched 490 // Wrong state: not prefetched
491 EXPECT_FALSE(decoder_->Start(base::TimeDelta::FromMilliseconds(0))); 491 EXPECT_FALSE(decoder_->Start(base::TimeDelta::FromMilliseconds(0)));
492 492
493 // Do the prefetch. 493 // Do the prefetch.
494 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500); 494 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500);
495 SetDataFactory(base::WrapUnique(new AudioFactory(duration))); 495 SetDataFactory(base::MakeUnique<AudioFactory>(duration));
496 496
497 // Prefetch to avoid starvation at the beginning of playback. 497 // Prefetch to avoid starvation at the beginning of playback.
498 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched, 498 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched,
499 base::Unretained(this), true)); 499 base::Unretained(this), true));
500 500
501 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched, 501 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched,
502 base::Unretained(this)))); 502 base::Unretained(this))));
503 503
504 // Still, decoder is not configured. 504 // Still, decoder is not configured.
505 EXPECT_FALSE(decoder_->Start(base::TimeDelta::FromMilliseconds(0))); 505 EXPECT_FALSE(decoder_->Start(base::TimeDelta::FromMilliseconds(0)));
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 TEST_F(MediaCodecDecoderTest, MAYBE_VideoPlayTillCompletion) { 557 TEST_F(MediaCodecDecoderTest, MAYBE_VideoPlayTillCompletion) {
558 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); 558 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE();
559 559
560 CreateVideoDecoder(); 560 CreateVideoDecoder();
561 561
562 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500); 562 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(500);
563 // The first output frame might come out with significant delay. Apparently 563 // The first output frame might come out with significant delay. Apparently
564 // the codec does initial configuration at this time. We increase the timeout 564 // the codec does initial configuration at this time. We increase the timeout
565 // to leave a room of 1 second for this initial configuration. 565 // to leave a room of 1 second for this initial configuration.
566 base::TimeDelta timeout = base::TimeDelta::FromMilliseconds(1500); 566 base::TimeDelta timeout = base::TimeDelta::FromMilliseconds(1500);
567 SetDataFactory(base::WrapUnique(new VideoFactory(duration))); 567 SetDataFactory(base::MakeUnique<VideoFactory>(duration));
568 568
569 // Prefetch 569 // Prefetch
570 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched, 570 decoder_->Prefetch(base::Bind(&MediaCodecDecoderTest::SetPrefetched,
571 base::Unretained(this), true)); 571 base::Unretained(this), true));
572 572
573 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched, 573 EXPECT_TRUE(WaitForCondition(base::Bind(&MediaCodecDecoderTest::is_prefetched,
574 base::Unretained(this)))); 574 base::Unretained(this))));
575 575
576 decoder_->SetDemuxerConfigs(GetConfigs()); 576 decoder_->SetDemuxerConfigs(GetConfigs());
577 577
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
761 761
762 EXPECT_TRUE(decoder_->IsStopped()); 762 EXPECT_TRUE(decoder_->IsStopped());
763 EXPECT_TRUE(decoder_->IsCompleted()); 763 EXPECT_TRUE(decoder_->IsCompleted());
764 EXPECT_EQ(data_factory_->last_pts(), pts_stat_.max()); 764 EXPECT_EQ(data_factory_->last_pts(), pts_stat_.max());
765 765
766 // Check that the reported video size is the one from the in-stream configs. 766 // Check that the reported video size is the one from the in-stream configs.
767 EXPECT_EQ(data_factory_->GetConfigs().video_size, video_size_); 767 EXPECT_EQ(data_factory_->GetConfigs().video_size, video_size_);
768 } 768 }
769 769
770 } // namespace media 770 } // namespace media
OLDNEW
« no previous file with comments | « media/audio/fake_audio_log_factory.cc ('k') | media/base/android/media_codec_player_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698