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