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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include <memory> | 8 #include <memory> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 EXPECT_CALL(*this, OnMetadata(_)) | 730 EXPECT_CALL(*this, OnMetadata(_)) |
731 .Times(AtMost(1)) | 731 .Times(AtMost(1)) |
732 .WillRepeatedly(SaveArg<0>(&metadata_)); | 732 .WillRepeatedly(SaveArg<0>(&metadata_)); |
733 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) | 733 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
734 .Times(AnyNumber()); | 734 .Times(AnyNumber()); |
735 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)) | 735 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)) |
736 .Times(AnyNumber()); | 736 .Times(AnyNumber()); |
737 EXPECT_CALL(*this, OnDurationChange()).Times(AnyNumber()); | 737 EXPECT_CALL(*this, OnDurationChange()).Times(AnyNumber()); |
738 EXPECT_CALL(*this, OnVideoNaturalSizeChange(_)).Times(AtMost(1)); | 738 EXPECT_CALL(*this, OnVideoNaturalSizeChange(_)).Times(AtMost(1)); |
739 EXPECT_CALL(*this, OnVideoOpacityChange(_)).Times(AtMost(1)); | 739 EXPECT_CALL(*this, OnVideoOpacityChange(_)).Times(AtMost(1)); |
| 740 EXPECT_CALL(*this, OnVideoAverageKeyframeDistanceUpdate()) |
| 741 .Times(AnyNumber()); |
740 | 742 |
741 source->set_demuxer_failure_cb(base::Bind( | 743 source->set_demuxer_failure_cb(base::Bind( |
742 &PipelineIntegrationTest::OnStatusCallback, base::Unretained(this))); | 744 &PipelineIntegrationTest::OnStatusCallback, base::Unretained(this))); |
743 demuxer_ = source->GetDemuxer(); | 745 demuxer_ = source->GetDemuxer(); |
744 | 746 |
745 if (encrypted_media) { | 747 if (encrypted_media) { |
746 EXPECT_CALL(*this, DecryptorAttached(true)); | 748 EXPECT_CALL(*this, DecryptorAttached(true)); |
747 | 749 |
748 // Encrypted content used but keys provided in advance, so this is | 750 // Encrypted content used but keys provided in advance, so this is |
749 // never called. | 751 // never called. |
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1507 MAYBE_EME(MediaSource_ConfigChange_Encrypted_WebM)) { | 1509 MAYBE_EME(MediaSource_ConfigChange_Encrypted_WebM)) { |
1508 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, | 1510 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, |
1509 kAppendWholeFile); | 1511 kAppendWholeFile); |
1510 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1512 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
1511 EXPECT_EQ(PIPELINE_OK, | 1513 EXPECT_EQ(PIPELINE_OK, |
1512 StartPipelineWithEncryptedMedia(&source, &encrypted_media)); | 1514 StartPipelineWithEncryptedMedia(&source, &encrypted_media)); |
1513 | 1515 |
1514 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(640, 360))).Times(1); | 1516 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(640, 360))).Times(1); |
1515 scoped_refptr<DecoderBuffer> second_file = | 1517 scoped_refptr<DecoderBuffer> second_file = |
1516 ReadTestDataFile("bear-640x360-av_enc-av.webm"); | 1518 ReadTestDataFile("bear-640x360-av_enc-av.webm"); |
| 1519 |
1517 ASSERT_TRUE(source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1520 ASSERT_TRUE(source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
1518 second_file->data(), | 1521 second_file->data(), |
1519 second_file->data_size())); | 1522 second_file->data_size())); |
1520 source.EndOfStream(); | 1523 source.EndOfStream(); |
1521 | 1524 |
1522 Play(); | 1525 Play(); |
1523 EXPECT_TRUE(WaitUntilOnEnded()); | 1526 EXPECT_TRUE(WaitUntilOnEnded()); |
1524 | 1527 |
1525 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1528 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
1526 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1529 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
1527 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, | 1530 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, |
1528 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1531 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
1529 | 1532 |
1530 source.Shutdown(); | 1533 source.Shutdown(); |
1531 Stop(); | 1534 Stop(); |
1532 } | 1535 } |
1533 | 1536 |
1534 // TODO(xhwang): Config change from clear to encrypted is allowed by the | |
1535 // demuxer, but is not currently supported by the Renderer. See | |
1536 // http://crbug.com/597443 | |
1537 TEST_F(PipelineIntegrationTest, | 1537 TEST_F(PipelineIntegrationTest, |
1538 MAYBE_EME(MediaSource_ConfigChange_ClearThenEncrypted_WebM)) { | 1538 MAYBE_EME(MediaSource_ConfigChange_ClearThenEncrypted_WebM)) { |
1539 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, | 1539 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, |
1540 kAppendWholeFile); | 1540 kAppendWholeFile); |
1541 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1541 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
1542 EXPECT_EQ(PIPELINE_OK, | 1542 EXPECT_EQ(PIPELINE_OK, |
1543 StartPipelineWithEncryptedMedia(&source, &encrypted_media)); | 1543 StartPipelineWithEncryptedMedia(&source, &encrypted_media)); |
1544 | 1544 |
| 1545 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(640, 360))).Times(1); |
1545 scoped_refptr<DecoderBuffer> second_file = | 1546 scoped_refptr<DecoderBuffer> second_file = |
1546 ReadTestDataFile("bear-640x360-av_enc-av.webm"); | 1547 ReadTestDataFile("bear-640x360-av_enc-av.webm"); |
1547 | 1548 |
1548 EXPECT_TRUE(source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1549 EXPECT_TRUE(source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
1549 second_file->data(), | 1550 second_file->data(), |
1550 second_file->data_size())); | 1551 second_file->data_size())); |
1551 source.EndOfStream(); | 1552 source.EndOfStream(); |
1552 | 1553 |
1553 Play(); | 1554 Play(); |
1554 | 1555 EXPECT_TRUE(WaitUntilOnEnded()); |
1555 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); | |
1556 | 1556 |
1557 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1557 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
1558 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1558 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
1559 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, | 1559 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, |
1560 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1560 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
1561 | 1561 |
1562 source.Shutdown(); | 1562 source.Shutdown(); |
| 1563 Stop(); |
1563 } | 1564 } |
1564 | 1565 |
1565 // Config change from encrypted to clear is allowed by the demuxer, and is | 1566 // Config change from encrypted to clear is allowed by the demuxer, and is |
1566 // supported by the Renderer. | 1567 // supported by the Renderer. |
1567 TEST_F(PipelineIntegrationTest, | 1568 TEST_F(PipelineIntegrationTest, |
1568 MAYBE_EME(MediaSource_ConfigChange_EncryptedThenClear_WebM)) { | 1569 MAYBE_EME(MediaSource_ConfigChange_EncryptedThenClear_WebM)) { |
1569 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, | 1570 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, |
1570 kAppendWholeFile); | 1571 kAppendWholeFile); |
1571 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1572 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
1572 EXPECT_EQ(PIPELINE_OK, | 1573 EXPECT_EQ(PIPELINE_OK, |
(...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2582 | 2583 |
2583 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { | 2584 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { |
2584 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); | 2585 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); |
2585 Play(); | 2586 Play(); |
2586 ASSERT_TRUE(WaitUntilOnEnded()); | 2587 ASSERT_TRUE(WaitUntilOnEnded()); |
2587 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), | 2588 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), |
2588 demuxer_->GetStartTime()); | 2589 demuxer_->GetStartTime()); |
2589 } | 2590 } |
2590 | 2591 |
2591 } // namespace media | 2592 } // namespace media |
OLD | NEW |