OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "media/filters/pipeline_integration_test_base.h" | 5 #include "media/filters/pipeline_integration_test_base.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 base::Bind(&MockMediaSource::DemuxerNeedKey, | 214 base::Bind(&MockMediaSource::DemuxerNeedKey, |
215 base::Unretained(this)), | 215 base::Unretained(this)), |
216 base::Bind(&MockMediaSource::OnTextTrack, | 216 base::Bind(&MockMediaSource::OnTextTrack, |
217 base::Unretained(this)), | 217 base::Unretained(this)), |
218 LogCB())), | 218 LogCB())), |
219 owned_chunk_demuxer_(chunk_demuxer_) { | 219 owned_chunk_demuxer_(chunk_demuxer_) { |
220 | 220 |
221 file_data_ = ReadTestDataFile(filename); | 221 file_data_ = ReadTestDataFile(filename); |
222 | 222 |
223 if (initial_append_size_ == kAppendWholeFile) | 223 if (initial_append_size_ == kAppendWholeFile) |
224 initial_append_size_ = file_data_->GetDataSize(); | 224 initial_append_size_ = file_data_->data_size(); |
225 | 225 |
226 DCHECK_GT(initial_append_size_, 0); | 226 DCHECK_GT(initial_append_size_, 0); |
227 DCHECK_LE(initial_append_size_, file_data_->GetDataSize()); | 227 DCHECK_LE(initial_append_size_, file_data_->data_size()); |
228 } | 228 } |
229 | 229 |
230 virtual ~MockMediaSource() {} | 230 virtual ~MockMediaSource() {} |
231 | 231 |
232 scoped_ptr<Demuxer> GetDemuxer() { return owned_chunk_demuxer_.Pass(); } | 232 scoped_ptr<Demuxer> GetDemuxer() { return owned_chunk_demuxer_.Pass(); } |
233 | 233 |
234 void set_need_key_cb(const NeedKeyCB& need_key_cb) { | 234 void set_need_key_cb(const NeedKeyCB& need_key_cb) { |
235 need_key_cb_ = need_key_cb; | 235 need_key_cb_ = need_key_cb; |
236 } | 236 } |
237 | 237 |
238 void Seek(base::TimeDelta seek_time, int new_position, int seek_append_size) { | 238 void Seek(base::TimeDelta seek_time, int new_position, int seek_append_size) { |
239 chunk_demuxer_->StartWaitingForSeek(seek_time); | 239 chunk_demuxer_->StartWaitingForSeek(seek_time); |
240 | 240 |
241 chunk_demuxer_->Abort(kSourceId); | 241 chunk_demuxer_->Abort(kSourceId); |
242 | 242 |
243 DCHECK_GE(new_position, 0); | 243 DCHECK_GE(new_position, 0); |
244 DCHECK_LT(new_position, file_data_->GetDataSize()); | 244 DCHECK_LT(new_position, file_data_->data_size()); |
245 current_position_ = new_position; | 245 current_position_ = new_position; |
246 | 246 |
247 AppendData(seek_append_size); | 247 AppendData(seek_append_size); |
248 } | 248 } |
249 | 249 |
250 void AppendData(int size) { | 250 void AppendData(int size) { |
251 DCHECK(chunk_demuxer_); | 251 DCHECK(chunk_demuxer_); |
252 DCHECK_LT(current_position_, file_data_->GetDataSize()); | 252 DCHECK_LT(current_position_, file_data_->data_size()); |
253 DCHECK_LE(current_position_ + size, file_data_->GetDataSize()); | 253 DCHECK_LE(current_position_ + size, file_data_->data_size()); |
254 chunk_demuxer_->AppendData( | 254 chunk_demuxer_->AppendData( |
255 kSourceId, file_data_->GetData() + current_position_, size); | 255 kSourceId, file_data_->data() + current_position_, size); |
256 current_position_ += size; | 256 current_position_ += size; |
257 } | 257 } |
258 | 258 |
259 void AppendAtTime(const base::TimeDelta& timestampOffset, | 259 void AppendAtTime(const base::TimeDelta& timestampOffset, |
260 const uint8* pData, int size) { | 260 const uint8* pData, int size) { |
261 CHECK(chunk_demuxer_->SetTimestampOffset(kSourceId, timestampOffset)); | 261 CHECK(chunk_demuxer_->SetTimestampOffset(kSourceId, timestampOffset)); |
262 chunk_demuxer_->AppendData(kSourceId, pData, size); | 262 chunk_demuxer_->AppendData(kSourceId, pData, size); |
263 CHECK(chunk_demuxer_->SetTimestampOffset(kSourceId, base::TimeDelta())); | 263 CHECK(chunk_demuxer_->SetTimestampOffset(kSourceId, base::TimeDelta())); |
264 } | 264 } |
265 | 265 |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 | 493 |
494 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_WebM) { | 494 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_WebM) { |
495 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, | 495 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, |
496 kAppendWholeFile); | 496 kAppendWholeFile); |
497 StartPipelineWithMediaSource(&source); | 497 StartPipelineWithMediaSource(&source); |
498 | 498 |
499 scoped_refptr<DecoderBuffer> second_file = | 499 scoped_refptr<DecoderBuffer> second_file = |
500 ReadTestDataFile("bear-640x360.webm"); | 500 ReadTestDataFile("bear-640x360.webm"); |
501 | 501 |
502 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 502 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
503 second_file->GetData(), second_file->GetDataSize()); | 503 second_file->data(), second_file->data_size()); |
504 | 504 |
505 source.EndOfStream(); | 505 source.EndOfStream(); |
506 | 506 |
507 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 507 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
508 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 508 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
509 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, | 509 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, |
510 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 510 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
511 | 511 |
512 Play(); | 512 Play(); |
513 | 513 |
514 EXPECT_TRUE(WaitUntilOnEnded()); | 514 EXPECT_TRUE(WaitUntilOnEnded()); |
515 source.Abort(); | 515 source.Abort(); |
516 Stop(); | 516 Stop(); |
517 } | 517 } |
518 | 518 |
519 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_Encrypted_WebM) { | 519 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_Encrypted_WebM) { |
520 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, | 520 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, |
521 kAppendWholeFile); | 521 kAppendWholeFile); |
522 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 522 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
523 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 523 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
524 | 524 |
525 scoped_refptr<DecoderBuffer> second_file = | 525 scoped_refptr<DecoderBuffer> second_file = |
526 ReadTestDataFile("bear-640x360-av_enc-av.webm"); | 526 ReadTestDataFile("bear-640x360-av_enc-av.webm"); |
527 | 527 |
528 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 528 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
529 second_file->GetData(), second_file->GetDataSize()); | 529 second_file->data(), second_file->data_size()); |
530 | 530 |
531 source.EndOfStream(); | 531 source.EndOfStream(); |
532 | 532 |
533 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 533 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
534 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 534 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
535 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, | 535 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, |
536 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 536 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
537 | 537 |
538 Play(); | 538 Play(); |
539 | 539 |
540 EXPECT_TRUE(WaitUntilOnEnded()); | 540 EXPECT_TRUE(WaitUntilOnEnded()); |
541 source.Abort(); | 541 source.Abort(); |
542 Stop(); | 542 Stop(); |
543 } | 543 } |
544 | 544 |
545 // Config changes from encrypted to clear are not currently supported. | 545 // Config changes from encrypted to clear are not currently supported. |
546 TEST_F(PipelineIntegrationTest, | 546 TEST_F(PipelineIntegrationTest, |
547 MediaSource_ConfigChange_ClearThenEncrypted_WebM) { | 547 MediaSource_ConfigChange_ClearThenEncrypted_WebM) { |
548 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, | 548 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, |
549 kAppendWholeFile); | 549 kAppendWholeFile); |
550 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 550 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
551 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 551 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
552 | 552 |
553 scoped_refptr<DecoderBuffer> second_file = | 553 scoped_refptr<DecoderBuffer> second_file = |
554 ReadTestDataFile("bear-640x360-av_enc-av.webm"); | 554 ReadTestDataFile("bear-640x360-av_enc-av.webm"); |
555 | 555 |
556 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 556 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
557 second_file->GetData(), second_file->GetDataSize()); | 557 second_file->data(), second_file->data_size()); |
558 | 558 |
559 source.EndOfStream(); | 559 source.EndOfStream(); |
560 | 560 |
561 message_loop_.Run(); | 561 message_loop_.Run(); |
562 EXPECT_EQ(PIPELINE_ERROR_DECODE, pipeline_status_); | 562 EXPECT_EQ(PIPELINE_ERROR_DECODE, pipeline_status_); |
563 | 563 |
564 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 564 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
565 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 565 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
566 // The second video was not added, so its time has not been added. | 566 // The second video was not added, so its time has not been added. |
567 EXPECT_EQ(k320WebMFileDurationMs, | 567 EXPECT_EQ(k320WebMFileDurationMs, |
(...skipping 10 matching lines...) Expand all Loading... |
578 MediaSource_ConfigChange_EncryptedThenClear_WebM) { | 578 MediaSource_ConfigChange_EncryptedThenClear_WebM) { |
579 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, | 579 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, |
580 kAppendWholeFile); | 580 kAppendWholeFile); |
581 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 581 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
582 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 582 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
583 | 583 |
584 scoped_refptr<DecoderBuffer> second_file = | 584 scoped_refptr<DecoderBuffer> second_file = |
585 ReadTestDataFile("bear-640x360.webm"); | 585 ReadTestDataFile("bear-640x360.webm"); |
586 | 586 |
587 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 587 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
588 second_file->GetData(), second_file->GetDataSize()); | 588 second_file->data(), second_file->data_size()); |
589 | 589 |
590 source.EndOfStream(); | 590 source.EndOfStream(); |
591 | 591 |
592 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 592 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
593 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 593 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
594 // The second video was not added, so its time has not been added. | 594 // The second video was not added, so its time has not been added. |
595 EXPECT_EQ(k320WebMFileDurationMs, | 595 EXPECT_EQ(k320WebMFileDurationMs, |
596 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 596 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
597 | 597 |
598 Play(); | 598 Play(); |
599 | 599 |
600 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); | 600 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); |
601 source.Abort(); | 601 source.Abort(); |
602 } | 602 } |
603 | 603 |
604 #if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS) | 604 #if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS) |
605 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_MP4) { | 605 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_MP4) { |
606 MockMediaSource source("bear-640x360-av_frag.mp4", kMP4, kAppendWholeFile); | 606 MockMediaSource source("bear-640x360-av_frag.mp4", kMP4, kAppendWholeFile); |
607 StartPipelineWithMediaSource(&source); | 607 StartPipelineWithMediaSource(&source); |
608 | 608 |
609 scoped_refptr<DecoderBuffer> second_file = | 609 scoped_refptr<DecoderBuffer> second_file = |
610 ReadTestDataFile("bear-1280x720-av_frag.mp4"); | 610 ReadTestDataFile("bear-1280x720-av_frag.mp4"); |
611 | 611 |
612 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 612 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
613 second_file->GetData(), second_file->GetDataSize()); | 613 second_file->data(), second_file->data_size()); |
614 | 614 |
615 source.EndOfStream(); | 615 source.EndOfStream(); |
616 | 616 |
617 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 617 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
618 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 618 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
619 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, | 619 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, |
620 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 620 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
621 | 621 |
622 Play(); | 622 Play(); |
623 | 623 |
624 EXPECT_TRUE(WaitUntilOnEnded()); | 624 EXPECT_TRUE(WaitUntilOnEnded()); |
625 source.Abort(); | 625 source.Abort(); |
626 Stop(); | 626 Stop(); |
627 } | 627 } |
628 | 628 |
629 TEST_F(PipelineIntegrationTest, | 629 TEST_F(PipelineIntegrationTest, |
630 MediaSource_ConfigChange_Encrypted_MP4_CENC_VideoOnly) { | 630 MediaSource_ConfigChange_Encrypted_MP4_CENC_VideoOnly) { |
631 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", | 631 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", |
632 kMP4Video, kAppendWholeFile); | 632 kMP4Video, kAppendWholeFile); |
633 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 633 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
634 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 634 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
635 | 635 |
636 scoped_refptr<DecoderBuffer> second_file = | 636 scoped_refptr<DecoderBuffer> second_file = |
637 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); | 637 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); |
638 | 638 |
639 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 639 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
640 second_file->GetData(), second_file->GetDataSize()); | 640 second_file->data(), second_file->data_size()); |
641 | 641 |
642 source.EndOfStream(); | 642 source.EndOfStream(); |
643 | 643 |
644 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 644 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
645 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 645 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
646 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, | 646 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, |
647 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 647 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
648 | 648 |
649 Play(); | 649 Play(); |
650 | 650 |
651 EXPECT_TRUE(WaitUntilOnEnded()); | 651 EXPECT_TRUE(WaitUntilOnEnded()); |
652 source.Abort(); | 652 source.Abort(); |
653 Stop(); | 653 Stop(); |
654 } | 654 } |
655 | 655 |
656 // Config changes from clear to encrypted are not currently supported. | 656 // Config changes from clear to encrypted are not currently supported. |
657 // TODO(ddorwin): Figure out why this CHECKs in AppendAtTime(). | 657 // TODO(ddorwin): Figure out why this CHECKs in AppendAtTime(). |
658 TEST_F(PipelineIntegrationTest, | 658 TEST_F(PipelineIntegrationTest, |
659 DISABLED_MediaSource_ConfigChange_ClearThenEncrypted_MP4_CENC) { | 659 DISABLED_MediaSource_ConfigChange_ClearThenEncrypted_MP4_CENC) { |
660 MockMediaSource source("bear-640x360-av_frag.mp4", kMP4Video, | 660 MockMediaSource source("bear-640x360-av_frag.mp4", kMP4Video, |
661 kAppendWholeFile); | 661 kAppendWholeFile); |
662 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 662 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
663 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 663 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
664 | 664 |
665 scoped_refptr<DecoderBuffer> second_file = | 665 scoped_refptr<DecoderBuffer> second_file = |
666 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); | 666 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); |
667 | 667 |
668 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 668 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
669 second_file->GetData(), second_file->GetDataSize()); | 669 second_file->data(), second_file->data_size()); |
670 | 670 |
671 source.EndOfStream(); | 671 source.EndOfStream(); |
672 | 672 |
673 message_loop_.Run(); | 673 message_loop_.Run(); |
674 EXPECT_EQ(PIPELINE_ERROR_DECODE, pipeline_status_); | 674 EXPECT_EQ(PIPELINE_ERROR_DECODE, pipeline_status_); |
675 | 675 |
676 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 676 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
677 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 677 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
678 // The second video was not added, so its time has not been added. | 678 // The second video was not added, so its time has not been added. |
679 EXPECT_EQ(k640IsoFileDurationMs, | 679 EXPECT_EQ(k640IsoFileDurationMs, |
(...skipping 10 matching lines...) Expand all Loading... |
690 MediaSource_ConfigChange_EncryptedThenClear_MP4_CENC) { | 690 MediaSource_ConfigChange_EncryptedThenClear_MP4_CENC) { |
691 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", | 691 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", |
692 kMP4Video, kAppendWholeFile); | 692 kMP4Video, kAppendWholeFile); |
693 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 693 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
694 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 694 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
695 | 695 |
696 scoped_refptr<DecoderBuffer> second_file = | 696 scoped_refptr<DecoderBuffer> second_file = |
697 ReadTestDataFile("bear-1280x720-av_frag.mp4"); | 697 ReadTestDataFile("bear-1280x720-av_frag.mp4"); |
698 | 698 |
699 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 699 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
700 second_file->GetData(), second_file->GetDataSize()); | 700 second_file->data(), second_file->data_size()); |
701 | 701 |
702 source.EndOfStream(); | 702 source.EndOfStream(); |
703 | 703 |
704 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 704 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
705 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 705 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
706 // The second video was not added, so its time has not been added. | 706 // The second video was not added, so its time has not been added. |
707 EXPECT_EQ(k640IsoCencFileDurationMs, | 707 EXPECT_EQ(k640IsoCencFileDurationMs, |
708 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 708 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
709 | 709 |
710 Play(); | 710 Play(); |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
948 | 948 |
949 // Verify that VP8 video with inband text track can be played back. | 949 // Verify that VP8 video with inband text track can be played back. |
950 TEST_F(PipelineIntegrationTest, BasicPlayback_VP8_WebVTT_WebM) { | 950 TEST_F(PipelineIntegrationTest, BasicPlayback_VP8_WebVTT_WebM) { |
951 ASSERT_TRUE(Start(GetTestDataFilePath("bear-vp8-webvtt.webm"), | 951 ASSERT_TRUE(Start(GetTestDataFilePath("bear-vp8-webvtt.webm"), |
952 PIPELINE_OK)); | 952 PIPELINE_OK)); |
953 Play(); | 953 Play(); |
954 ASSERT_TRUE(WaitUntilOnEnded()); | 954 ASSERT_TRUE(WaitUntilOnEnded()); |
955 } | 955 } |
956 | 956 |
957 } // namespace media | 957 } // namespace media |
OLD | NEW |