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 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 | 492 |
493 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_WebM) { | 493 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_WebM) { |
494 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, | 494 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, |
495 kAppendWholeFile); | 495 kAppendWholeFile); |
496 StartPipelineWithMediaSource(&source); | 496 StartPipelineWithMediaSource(&source); |
497 | 497 |
498 scoped_refptr<DecoderBuffer> second_file = | 498 scoped_refptr<DecoderBuffer> second_file = |
499 ReadTestDataFile("bear-640x360.webm"); | 499 ReadTestDataFile("bear-640x360.webm"); |
500 | 500 |
501 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 501 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
502 second_file->GetData(), second_file->GetDataSize()); | 502 second_file->data(), second_file->data_size()); |
503 | 503 |
504 source.EndOfStream(); | 504 source.EndOfStream(); |
505 | 505 |
506 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 506 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
507 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 507 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
508 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, | 508 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, |
509 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 509 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
510 | 510 |
511 Play(); | 511 Play(); |
512 | 512 |
513 EXPECT_TRUE(WaitUntilOnEnded()); | 513 EXPECT_TRUE(WaitUntilOnEnded()); |
514 source.Abort(); | 514 source.Abort(); |
515 Stop(); | 515 Stop(); |
516 } | 516 } |
517 | 517 |
518 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_Encrypted_WebM) { | 518 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_Encrypted_WebM) { |
519 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, | 519 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, |
520 kAppendWholeFile); | 520 kAppendWholeFile); |
521 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 521 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
522 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 522 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
523 | 523 |
524 scoped_refptr<DecoderBuffer> second_file = | 524 scoped_refptr<DecoderBuffer> second_file = |
525 ReadTestDataFile("bear-640x360-av_enc-av.webm"); | 525 ReadTestDataFile("bear-640x360-av_enc-av.webm"); |
526 | 526 |
527 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 527 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
528 second_file->GetData(), second_file->GetDataSize()); | 528 second_file->data(), second_file->data_size()); |
529 | 529 |
530 source.EndOfStream(); | 530 source.EndOfStream(); |
531 | 531 |
532 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 532 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
533 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 533 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
534 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, | 534 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, |
535 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 535 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
536 | 536 |
537 Play(); | 537 Play(); |
538 | 538 |
539 EXPECT_TRUE(WaitUntilOnEnded()); | 539 EXPECT_TRUE(WaitUntilOnEnded()); |
540 source.Abort(); | 540 source.Abort(); |
541 Stop(); | 541 Stop(); |
542 } | 542 } |
543 | 543 |
544 // Config changes from encrypted to clear are not currently supported. | 544 // Config changes from encrypted to clear are not currently supported. |
545 TEST_F(PipelineIntegrationTest, | 545 TEST_F(PipelineIntegrationTest, |
546 MediaSource_ConfigChange_ClearThenEncrypted_WebM) { | 546 MediaSource_ConfigChange_ClearThenEncrypted_WebM) { |
547 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, | 547 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, |
548 kAppendWholeFile); | 548 kAppendWholeFile); |
549 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 549 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
550 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 550 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
551 | 551 |
552 scoped_refptr<DecoderBuffer> second_file = | 552 scoped_refptr<DecoderBuffer> second_file = |
553 ReadTestDataFile("bear-640x360-av_enc-av.webm"); | 553 ReadTestDataFile("bear-640x360-av_enc-av.webm"); |
554 | 554 |
555 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 555 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
556 second_file->GetData(), second_file->GetDataSize()); | 556 second_file->data(), second_file->data_size()); |
557 | 557 |
558 source.EndOfStream(); | 558 source.EndOfStream(); |
559 | 559 |
560 message_loop_.Run(); | 560 message_loop_.Run(); |
561 EXPECT_EQ(PIPELINE_ERROR_DECODE, pipeline_status_); | 561 EXPECT_EQ(PIPELINE_ERROR_DECODE, pipeline_status_); |
562 | 562 |
563 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 563 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
564 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 564 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
565 // The second video was not added, so its time has not been added. | 565 // The second video was not added, so its time has not been added. |
566 EXPECT_EQ(k320WebMFileDurationMs, | 566 EXPECT_EQ(k320WebMFileDurationMs, |
(...skipping 10 matching lines...) Expand all Loading... |
577 MediaSource_ConfigChange_EncryptedThenClear_WebM) { | 577 MediaSource_ConfigChange_EncryptedThenClear_WebM) { |
578 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, | 578 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, |
579 kAppendWholeFile); | 579 kAppendWholeFile); |
580 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 580 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
581 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 581 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
582 | 582 |
583 scoped_refptr<DecoderBuffer> second_file = | 583 scoped_refptr<DecoderBuffer> second_file = |
584 ReadTestDataFile("bear-640x360.webm"); | 584 ReadTestDataFile("bear-640x360.webm"); |
585 | 585 |
586 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 586 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
587 second_file->GetData(), second_file->GetDataSize()); | 587 second_file->data(), second_file->data_size()); |
588 | 588 |
589 source.EndOfStream(); | 589 source.EndOfStream(); |
590 | 590 |
591 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 591 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
592 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 592 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
593 // The second video was not added, so its time has not been added. | 593 // The second video was not added, so its time has not been added. |
594 EXPECT_EQ(k320WebMFileDurationMs, | 594 EXPECT_EQ(k320WebMFileDurationMs, |
595 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 595 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
596 | 596 |
597 Play(); | 597 Play(); |
598 | 598 |
599 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); | 599 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); |
600 source.Abort(); | 600 source.Abort(); |
601 } | 601 } |
602 | 602 |
603 #if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS) | 603 #if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS) |
604 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_MP4) { | 604 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_MP4) { |
605 MockMediaSource source("bear-640x360-av_frag.mp4", kMP4, kAppendWholeFile); | 605 MockMediaSource source("bear-640x360-av_frag.mp4", kMP4, kAppendWholeFile); |
606 StartPipelineWithMediaSource(&source); | 606 StartPipelineWithMediaSource(&source); |
607 | 607 |
608 scoped_refptr<DecoderBuffer> second_file = | 608 scoped_refptr<DecoderBuffer> second_file = |
609 ReadTestDataFile("bear-1280x720-av_frag.mp4"); | 609 ReadTestDataFile("bear-1280x720-av_frag.mp4"); |
610 | 610 |
611 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 611 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
612 second_file->GetData(), second_file->GetDataSize()); | 612 second_file->data(), second_file->data_size()); |
613 | 613 |
614 source.EndOfStream(); | 614 source.EndOfStream(); |
615 | 615 |
616 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 616 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
617 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 617 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
618 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, | 618 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, |
619 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 619 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
620 | 620 |
621 Play(); | 621 Play(); |
622 | 622 |
623 EXPECT_TRUE(WaitUntilOnEnded()); | 623 EXPECT_TRUE(WaitUntilOnEnded()); |
624 source.Abort(); | 624 source.Abort(); |
625 Stop(); | 625 Stop(); |
626 } | 626 } |
627 | 627 |
628 TEST_F(PipelineIntegrationTest, | 628 TEST_F(PipelineIntegrationTest, |
629 MediaSource_ConfigChange_Encrypted_MP4_CENC_VideoOnly) { | 629 MediaSource_ConfigChange_Encrypted_MP4_CENC_VideoOnly) { |
630 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", | 630 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", |
631 kMP4Video, kAppendWholeFile); | 631 kMP4Video, kAppendWholeFile); |
632 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 632 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
633 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 633 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
634 | 634 |
635 scoped_refptr<DecoderBuffer> second_file = | 635 scoped_refptr<DecoderBuffer> second_file = |
636 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); | 636 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); |
637 | 637 |
638 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 638 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
639 second_file->GetData(), second_file->GetDataSize()); | 639 second_file->data(), second_file->data_size()); |
640 | 640 |
641 source.EndOfStream(); | 641 source.EndOfStream(); |
642 | 642 |
643 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 643 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
644 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 644 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
645 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, | 645 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, |
646 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 646 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
647 | 647 |
648 Play(); | 648 Play(); |
649 | 649 |
650 EXPECT_TRUE(WaitUntilOnEnded()); | 650 EXPECT_TRUE(WaitUntilOnEnded()); |
651 source.Abort(); | 651 source.Abort(); |
652 Stop(); | 652 Stop(); |
653 } | 653 } |
654 | 654 |
655 // Config changes from clear to encrypted are not currently supported. | 655 // Config changes from clear to encrypted are not currently supported. |
656 // TODO(ddorwin): Figure out why this CHECKs in AppendAtTime(). | 656 // TODO(ddorwin): Figure out why this CHECKs in AppendAtTime(). |
657 TEST_F(PipelineIntegrationTest, | 657 TEST_F(PipelineIntegrationTest, |
658 DISABLED_MediaSource_ConfigChange_ClearThenEncrypted_MP4_CENC) { | 658 DISABLED_MediaSource_ConfigChange_ClearThenEncrypted_MP4_CENC) { |
659 MockMediaSource source("bear-640x360-av_frag.mp4", kMP4Video, | 659 MockMediaSource source("bear-640x360-av_frag.mp4", kMP4Video, |
660 kAppendWholeFile); | 660 kAppendWholeFile); |
661 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 661 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
662 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 662 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
663 | 663 |
664 scoped_refptr<DecoderBuffer> second_file = | 664 scoped_refptr<DecoderBuffer> second_file = |
665 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); | 665 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); |
666 | 666 |
667 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 667 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
668 second_file->GetData(), second_file->GetDataSize()); | 668 second_file->data(), second_file->data_size()); |
669 | 669 |
670 source.EndOfStream(); | 670 source.EndOfStream(); |
671 | 671 |
672 message_loop_.Run(); | 672 message_loop_.Run(); |
673 EXPECT_EQ(PIPELINE_ERROR_DECODE, pipeline_status_); | 673 EXPECT_EQ(PIPELINE_ERROR_DECODE, pipeline_status_); |
674 | 674 |
675 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 675 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
676 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 676 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
677 // The second video was not added, so its time has not been added. | 677 // The second video was not added, so its time has not been added. |
678 EXPECT_EQ(k640IsoFileDurationMs, | 678 EXPECT_EQ(k640IsoFileDurationMs, |
(...skipping 10 matching lines...) Expand all Loading... |
689 MediaSource_ConfigChange_EncryptedThenClear_MP4_CENC) { | 689 MediaSource_ConfigChange_EncryptedThenClear_MP4_CENC) { |
690 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", | 690 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", |
691 kMP4Video, kAppendWholeFile); | 691 kMP4Video, kAppendWholeFile); |
692 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 692 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
693 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 693 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
694 | 694 |
695 scoped_refptr<DecoderBuffer> second_file = | 695 scoped_refptr<DecoderBuffer> second_file = |
696 ReadTestDataFile("bear-1280x720-av_frag.mp4"); | 696 ReadTestDataFile("bear-1280x720-av_frag.mp4"); |
697 | 697 |
698 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 698 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
699 second_file->GetData(), second_file->GetDataSize()); | 699 second_file->data(), second_file->data_size()); |
700 | 700 |
701 source.EndOfStream(); | 701 source.EndOfStream(); |
702 | 702 |
703 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 703 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
704 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 704 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
705 // The second video was not added, so its time has not been added. | 705 // The second video was not added, so its time has not been added. |
706 EXPECT_EQ(k640IsoCencFileDurationMs, | 706 EXPECT_EQ(k640IsoCencFileDurationMs, |
707 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 707 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
708 | 708 |
709 Play(); | 709 Play(); |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
945 | 945 |
946 // Verify that VP8 video with inband text track can be played back. | 946 // Verify that VP8 video with inband text track can be played back. |
947 TEST_F(PipelineIntegrationTest, BasicPlayback_VP8_WebVTT_WebM) { | 947 TEST_F(PipelineIntegrationTest, BasicPlayback_VP8_WebVTT_WebM) { |
948 ASSERT_TRUE(Start(GetTestDataFilePath("bear-vp8-webvtt.webm"), | 948 ASSERT_TRUE(Start(GetTestDataFilePath("bear-vp8-webvtt.webm"), |
949 PIPELINE_OK)); | 949 PIPELINE_OK)); |
950 Play(); | 950 Play(); |
951 ASSERT_TRUE(WaitUntilOnEnded()); | 951 ASSERT_TRUE(WaitUntilOnEnded()); |
952 } | 952 } |
953 | 953 |
954 } // namespace media | 954 } // namespace media |
OLD | NEW |