| 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 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 #define EXPECT_VIDEO_FORMAT_EQ(a, b) | 46 #define EXPECT_VIDEO_FORMAT_EQ(a, b) |
| 47 #define EXPECT_COLOR_SPACE_EQ(a, b) | 47 #define EXPECT_COLOR_SPACE_EQ(a, b) |
| 48 | 48 |
| 49 // TODO(xhwang): EME support is not complete for the mojo renderer, so all | 49 // TODO(xhwang): EME support is not complete for the mojo renderer, so all |
| 50 // encrypted tests are currently disabled. | 50 // encrypted tests are currently disabled. |
| 51 #define DISABLE_EME_TESTS 1 | 51 #define DISABLE_EME_TESTS 1 |
| 52 | 52 |
| 53 // TODO(xhwang,dalecurtis): Text tracks are not currently supported by the mojo | 53 // TODO(xhwang,dalecurtis): Text tracks are not currently supported by the mojo |
| 54 // renderer. | 54 // renderer. |
| 55 #define DISABLE_TEXT_TRACK_TESTS 1 | 55 #define DISABLE_TEXT_TRACK_TESTS 1 |
| 56 |
| 57 // TODO(jrummell, dalecurtis): Clockless playback does not currently work with |
| 58 // mojo, so the tests take too long to run. |
| 59 #define DISABLE_CLOCKLESS_TESTS 1 |
| 56 #else | 60 #else |
| 57 #define EXPECT_HASH_EQ(a, b) EXPECT_EQ(a, b) | 61 #define EXPECT_HASH_EQ(a, b) EXPECT_EQ(a, b) |
| 58 #define EXPECT_VIDEO_FORMAT_EQ(a, b) EXPECT_EQ(a, b) | 62 #define EXPECT_VIDEO_FORMAT_EQ(a, b) EXPECT_EQ(a, b) |
| 59 #define EXPECT_COLOR_SPACE_EQ(a, b) EXPECT_EQ(a, b) | 63 #define EXPECT_COLOR_SPACE_EQ(a, b) EXPECT_EQ(a, b) |
| 64 #endif // defined(MOJO_RENDERER) |
| 65 |
| 66 #if defined(DISABLE_EME_TESTS) |
| 67 #define MAYBE_EME(test) DISABLED_##test |
| 68 #else |
| 69 #define MAYBE_EME(test) test |
| 70 #endif |
| 71 |
| 72 #if defined(DISABLE_TEXT_TRACK_TESTS) |
| 73 #define MAYBE_TEXT(test) DISABLED_##test |
| 74 #else |
| 75 #define MAYBE_TEXT(test) test |
| 76 #endif |
| 77 |
| 78 #if defined(DISABLE_CLOCKLESS_TESTS) |
| 79 #define MAYBE_CLOCKLESS(test) DISABLED_##test |
| 80 #else |
| 81 #define MAYBE_CLOCKLESS(test) test |
| 60 #endif | 82 #endif |
| 61 | 83 |
| 62 using testing::_; | 84 using testing::_; |
| 63 using testing::AnyNumber; | 85 using testing::AnyNumber; |
| 64 using testing::AtLeast; | 86 using testing::AtLeast; |
| 65 using testing::AtMost; | 87 using testing::AtMost; |
| 66 using testing::SaveArg; | 88 using testing::SaveArg; |
| 67 | 89 |
| 68 namespace media { | 90 namespace media { |
| 69 | 91 |
| 70 const char kSourceId[] = "SourceId"; | 92 const char kSourceId[] = "SourceId"; |
| 71 | 93 |
| 72 const char kWebM[] = "video/webm; codecs=\"vp8,vorbis\""; | 94 const char kWebM[] = "video/webm; codecs=\"vp8,vorbis\""; |
| 73 const char kWebMVP9[] = "video/webm; codecs=\"vp9\""; | 95 const char kWebMVP9[] = "video/webm; codecs=\"vp9\""; |
| 74 const char kAudioOnlyWebM[] = "video/webm; codecs=\"vorbis\""; | 96 const char kAudioOnlyWebM[] = "video/webm; codecs=\"vorbis\""; |
| 75 const char kOpusAudioOnlyWebM[] = "video/webm; codecs=\"opus\""; | 97 const char kOpusAudioOnlyWebM[] = "video/webm; codecs=\"opus\""; |
| 76 const char kVideoOnlyWebM[] = "video/webm; codecs=\"vp8\""; | 98 const char kVideoOnlyWebM[] = "video/webm; codecs=\"vp8\""; |
| 77 #if defined(USE_PROPRIETARY_CODECS) | 99 #if defined(USE_PROPRIETARY_CODECS) |
| 78 const char kADTS[] = "audio/aac"; | 100 const char kADTS[] = "audio/aac"; |
| 79 const char kMP4[] = "video/mp4; codecs=\"avc1.4D4041,mp4a.40.2\""; | 101 const char kMP4[] = "video/mp4; codecs=\"avc1.4D4041,mp4a.40.2\""; |
| 80 const char kMP4VideoAVC3[] = "video/mp4; codecs=\"avc3.64001f\""; | 102 const char kMP4VideoAVC3[] = "video/mp4; codecs=\"avc3.64001f\""; |
| 81 #if !defined(DISABLE_EME_TESTS) | |
| 82 const char kMP4Video[] = "video/mp4; codecs=\"avc1.4D4041\""; | 103 const char kMP4Video[] = "video/mp4; codecs=\"avc1.4D4041\""; |
| 83 const char kMP4Audio[] = "audio/mp4; codecs=\"mp4a.40.2\""; | 104 const char kMP4Audio[] = "audio/mp4; codecs=\"mp4a.40.2\""; |
| 84 #endif // !defined(DISABLE_EME_TESTS) | |
| 85 const char kMP3[] = "audio/mpeg"; | 105 const char kMP3[] = "audio/mpeg"; |
| 86 #endif // defined(USE_PROPRIETARY_CODECS) | 106 #endif // defined(USE_PROPRIETARY_CODECS) |
| 87 | 107 |
| 88 // Key used to encrypt test files. | 108 // Key used to encrypt test files. |
| 89 const uint8_t kSecretKey[] = { | 109 const uint8_t kSecretKey[] = { |
| 90 0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, | 110 0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, |
| 91 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c | 111 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c |
| 92 }; | 112 }; |
| 93 | 113 |
| 94 // The key ID for all encrypted files. | 114 // The key ID for all encrypted files. |
| 95 const uint8_t kKeyId[] = { | 115 const uint8_t kKeyId[] = { |
| 96 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, | 116 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, |
| 97 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35 | 117 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35 |
| 98 }; | 118 }; |
| 99 | 119 |
| 100 const size_t kAppendWholeFile = std::numeric_limits<size_t>::max(); | 120 const size_t kAppendWholeFile = std::numeric_limits<size_t>::max(); |
| 101 | 121 |
| 102 // Constants for the Media Source config change tests. | 122 // Constants for the Media Source config change tests. |
| 103 const int kAppendTimeSec = 1; | 123 const int kAppendTimeSec = 1; |
| 104 const int kAppendTimeMs = kAppendTimeSec * 1000; | 124 const int kAppendTimeMs = kAppendTimeSec * 1000; |
| 105 const int k320WebMFileDurationMs = 2736; | 125 const int k320WebMFileDurationMs = 2736; |
| 106 #if !defined(DISABLE_EME_TESTS) | |
| 107 const int k320EncWebMFileDurationMs = 2737; | 126 const int k320EncWebMFileDurationMs = 2737; |
| 108 #endif // !defined(DISABLE_EME_TESTS) | |
| 109 const int k640WebMFileDurationMs = 2749; | 127 const int k640WebMFileDurationMs = 2749; |
| 110 const int kOpusEndTrimmingWebMFileDurationMs = 2741; | 128 const int kOpusEndTrimmingWebMFileDurationMs = 2741; |
| 111 const int kVP9WebMFileDurationMs = 2736; | 129 const int kVP9WebMFileDurationMs = 2736; |
| 112 const int kVP8AWebMFileDurationMs = 2734; | 130 const int kVP8AWebMFileDurationMs = 2734; |
| 113 | 131 |
| 114 #if !defined(MOJO_RENDERER) | 132 #if !defined(MOJO_RENDERER) |
| 115 #if defined(OPUS_FIXED_POINT) | 133 #if defined(OPUS_FIXED_POINT) |
| 116 static const char kOpusEndTrimmingHash_1[] = | 134 static const char kOpusEndTrimmingHash_1[] = |
| 117 "-4.57,-5.68,-6.54,-6.29,-4.35,-3.59,"; | 135 "-4.57,-5.68,-6.54,-6.29,-4.35,-3.59,"; |
| 118 static const char kOpusEndTrimmingHash_2[] = | 136 static const char kOpusEndTrimmingHash_2[] = |
| 119 "-11.93,-11.12,-8.27,-7.10,-7.84,-10.00,"; | 137 "-11.93,-11.12,-8.27,-7.10,-7.84,-10.00,"; |
| 120 static const char kOpusEndTrimmingHash_3[] = | 138 static const char kOpusEndTrimmingHash_3[] = |
| 121 "-13.32,-14.38,-13.70,-11.69,-10.20,-10.48,"; | 139 "-13.32,-14.38,-13.70,-11.69,-10.20,-10.48,"; |
| 122 #else | 140 #else |
| 123 // Hash for a full playthrough of "opus-trimming-test.(webm|ogg)". | 141 // Hash for a full playthrough of "opus-trimming-test.(webm|ogg)". |
| 124 static const char kOpusEndTrimmingHash_1[] = | 142 static const char kOpusEndTrimmingHash_1[] = |
| 125 "-4.56,-5.65,-6.51,-6.29,-4.36,-3.59,"; | 143 "-4.56,-5.65,-6.51,-6.29,-4.36,-3.59,"; |
| 126 // The above hash, plus an additional playthrough starting from T=1s. | 144 // The above hash, plus an additional playthrough starting from T=1s. |
| 127 static const char kOpusEndTrimmingHash_2[] = | 145 static const char kOpusEndTrimmingHash_2[] = |
| 128 "-11.89,-11.09,-8.25,-7.11,-7.84,-9.97,"; | 146 "-11.89,-11.09,-8.25,-7.11,-7.84,-9.97,"; |
| 129 // The above hash, plus an additional playthrough starting from T=6.36s. | 147 // The above hash, plus an additional playthrough starting from T=6.36s. |
| 130 static const char kOpusEndTrimmingHash_3[] = | 148 static const char kOpusEndTrimmingHash_3[] = |
| 131 "-13.28,-14.35,-13.67,-11.68,-10.18,-10.46,"; | 149 "-13.28,-14.35,-13.67,-11.68,-10.18,-10.46,"; |
| 132 #endif // defined(OPUS_FIXED_POINT) | 150 #endif // defined(OPUS_FIXED_POINT) |
| 133 #endif | 151 #endif // !defined(MOJO_RENDERER) |
| 134 | 152 |
| 135 #if defined(USE_PROPRIETARY_CODECS) | 153 #if defined(USE_PROPRIETARY_CODECS) |
| 136 #if !defined(DISABLE_EME_TESTS) | |
| 137 const int k640IsoFileDurationMs = 2737; | 154 const int k640IsoFileDurationMs = 2737; |
| 138 const int k640IsoCencFileDurationMs = 2736; | 155 const int k640IsoCencFileDurationMs = 2736; |
| 139 #endif // !defined(DISABLE_EME_TESTS) | |
| 140 const int k1280IsoFileDurationMs = 2736; | 156 const int k1280IsoFileDurationMs = 2736; |
| 141 const int k1280IsoAVC3FileDurationMs = 2736; | 157 const int k1280IsoAVC3FileDurationMs = 2736; |
| 142 #endif // defined(USE_PROPRIETARY_CODECS) | 158 #endif // defined(USE_PROPRIETARY_CODECS) |
| 143 | 159 |
| 144 // Return a timeline offset for bear-320x240-live.webm. | 160 // Return a timeline offset for bear-320x240-live.webm. |
| 145 static base::Time kLiveTimelineOffset() { | 161 static base::Time kLiveTimelineOffset() { |
| 146 // The file contians the following UTC timeline offset: | 162 // The file contians the following UTC timeline offset: |
| 147 // 2012-11-10 12:34:56.789123456 | 163 // 2012-11-10 12:34:56.789123456 |
| 148 // Since base::Time only has a resolution of microseconds, | 164 // Since base::Time only has a resolution of microseconds, |
| 149 // construct a base::Time for 2012-11-10 12:34:56.789123. | 165 // construct a base::Time for 2012-11-10 12:34:56.789123. |
| (...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 670 return make_scoped_ptr(new MojoRendererImpl(message_loop_.task_runner(), | 686 return make_scoped_ptr(new MojoRendererImpl(message_loop_.task_runner(), |
| 671 std::move(mojo_renderer))); | 687 std::move(mojo_renderer))); |
| 672 } | 688 } |
| 673 | 689 |
| 674 private: | 690 private: |
| 675 interfaces::ServiceFactoryPtr media_service_factory_; | 691 interfaces::ServiceFactoryPtr media_service_factory_; |
| 676 }; | 692 }; |
| 677 #else | 693 #else |
| 678 class PipelineIntegrationTestHost : public testing::Test, | 694 class PipelineIntegrationTestHost : public testing::Test, |
| 679 public PipelineIntegrationTestBase {}; | 695 public PipelineIntegrationTestBase {}; |
| 680 #endif | 696 #endif // defined(MOJO_RENDERER) |
| 681 | 697 |
| 682 class PipelineIntegrationTest : public PipelineIntegrationTestHost { | 698 class PipelineIntegrationTest : public PipelineIntegrationTestHost { |
| 683 public: | 699 public: |
| 684 void StartPipelineWithMediaSource(MockMediaSource* source) { | 700 void StartPipelineWithMediaSource(MockMediaSource* source) { |
| 685 EXPECT_CALL(*source, InitSegmentReceived()).Times(AtLeast(1)); | 701 EXPECT_CALL(*source, InitSegmentReceived()).Times(AtLeast(1)); |
| 686 EXPECT_CALL(*this, OnMetadata(_)) | 702 EXPECT_CALL(*this, OnMetadata(_)) |
| 687 .Times(AtMost(1)) | 703 .Times(AtMost(1)) |
| 688 .WillRepeatedly(SaveArg<0>(&metadata_)); | 704 .WillRepeatedly(SaveArg<0>(&metadata_)); |
| 689 EXPECT_CALL(*this, OnBufferingStateChanged(BUFFERING_HAVE_ENOUGH)) | 705 EXPECT_CALL(*this, OnBufferingStateChanged(BUFFERING_HAVE_ENOUGH)) |
| 690 .Times(AnyNumber()); | 706 .Times(AnyNumber()); |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 823 | 839 |
| 824 Play(); | 840 Play(); |
| 825 | 841 |
| 826 ASSERT_TRUE(WaitUntilOnEnded()); | 842 ASSERT_TRUE(WaitUntilOnEnded()); |
| 827 | 843 |
| 828 EXPECT_HASH_EQ("f0be120a90a811506777c99a2cdf7cc1", GetVideoHash()); | 844 EXPECT_HASH_EQ("f0be120a90a811506777c99a2cdf7cc1", GetVideoHash()); |
| 829 EXPECT_HASH_EQ("-3.59,-2.06,-0.43,2.15,0.77,-0.95,", GetAudioHash()); | 845 EXPECT_HASH_EQ("-3.59,-2.06,-0.43,2.15,0.77,-0.95,", GetAudioHash()); |
| 830 EXPECT_TRUE(demuxer_->GetTimelineOffset().is_null()); | 846 EXPECT_TRUE(demuxer_->GetTimelineOffset().is_null()); |
| 831 } | 847 } |
| 832 | 848 |
| 833 TEST_F(PipelineIntegrationTest, BasicPlaybackOpusOggTrimmingHashed) { | 849 TEST_F(PipelineIntegrationTest, |
| 850 MAYBE_CLOCKLESS(BasicPlaybackOpusOggTrimmingHashed)) { |
| 834 ASSERT_EQ(PIPELINE_OK, | 851 ASSERT_EQ(PIPELINE_OK, |
| 835 Start("opus-trimming-test.webm", kHashed | kClockless)); | 852 Start("opus-trimming-test.webm", kHashed | kClockless)); |
| 836 | 853 |
| 837 Play(); | 854 Play(); |
| 838 | 855 |
| 839 ASSERT_TRUE(WaitUntilOnEnded()); | 856 ASSERT_TRUE(WaitUntilOnEnded()); |
| 840 EXPECT_HASH_EQ(kOpusEndTrimmingHash_1, GetAudioHash()); | 857 EXPECT_HASH_EQ(kOpusEndTrimmingHash_1, GetAudioHash()); |
| 841 | 858 |
| 842 // Seek within the pre-skip section, this should not cause a beep. | 859 // Seek within the pre-skip section, this should not cause a beep. |
| 843 ASSERT_TRUE(Seek(base::TimeDelta::FromSeconds(1))); | 860 ASSERT_TRUE(Seek(base::TimeDelta::FromSeconds(1))); |
| 844 Play(); | 861 Play(); |
| 845 ASSERT_TRUE(WaitUntilOnEnded()); | 862 ASSERT_TRUE(WaitUntilOnEnded()); |
| 846 EXPECT_HASH_EQ(kOpusEndTrimmingHash_2, GetAudioHash()); | 863 EXPECT_HASH_EQ(kOpusEndTrimmingHash_2, GetAudioHash()); |
| 847 | 864 |
| 848 // Seek somewhere outside of the pre-skip / end-trim section, demxuer should | 865 // Seek somewhere outside of the pre-skip / end-trim section, demxuer should |
| 849 // correctly preroll enough to accurately decode this segment. | 866 // correctly preroll enough to accurately decode this segment. |
| 850 ASSERT_TRUE(Seek(base::TimeDelta::FromMilliseconds(6360))); | 867 ASSERT_TRUE(Seek(base::TimeDelta::FromMilliseconds(6360))); |
| 851 Play(); | 868 Play(); |
| 852 ASSERT_TRUE(WaitUntilOnEnded()); | 869 ASSERT_TRUE(WaitUntilOnEnded()); |
| 853 EXPECT_HASH_EQ(kOpusEndTrimmingHash_3, GetAudioHash()); | 870 EXPECT_HASH_EQ(kOpusEndTrimmingHash_3, GetAudioHash()); |
| 854 } | 871 } |
| 855 | 872 |
| 856 TEST_F(PipelineIntegrationTest, BasicPlaybackOpusWebmTrimmingHashed) { | 873 TEST_F(PipelineIntegrationTest, |
| 874 MAYBE_CLOCKLESS(BasicPlaybackOpusWebmTrimmingHashed)) { |
| 857 ASSERT_EQ(PIPELINE_OK, | 875 ASSERT_EQ(PIPELINE_OK, |
| 858 Start("opus-trimming-test.webm", kHashed | kClockless)); | 876 Start("opus-trimming-test.webm", kHashed | kClockless)); |
| 859 | 877 |
| 860 Play(); | 878 Play(); |
| 861 | 879 |
| 862 ASSERT_TRUE(WaitUntilOnEnded()); | 880 ASSERT_TRUE(WaitUntilOnEnded()); |
| 863 EXPECT_HASH_EQ(kOpusEndTrimmingHash_1, GetAudioHash()); | 881 EXPECT_HASH_EQ(kOpusEndTrimmingHash_1, GetAudioHash()); |
| 864 | 882 |
| 865 // Seek within the pre-skip section, this should not cause a beep. | 883 // Seek within the pre-skip section, this should not cause a beep. |
| 866 ASSERT_TRUE(Seek(base::TimeDelta::FromSeconds(1))); | 884 ASSERT_TRUE(Seek(base::TimeDelta::FromSeconds(1))); |
| 867 Play(); | 885 Play(); |
| 868 ASSERT_TRUE(WaitUntilOnEnded()); | 886 ASSERT_TRUE(WaitUntilOnEnded()); |
| 869 EXPECT_HASH_EQ(kOpusEndTrimmingHash_2, GetAudioHash()); | 887 EXPECT_HASH_EQ(kOpusEndTrimmingHash_2, GetAudioHash()); |
| 870 | 888 |
| 871 // Seek somewhere outside of the pre-skip / end-trim section, demxuer should | 889 // Seek somewhere outside of the pre-skip / end-trim section, demxuer should |
| 872 // correctly preroll enough to accurately decode this segment. | 890 // correctly preroll enough to accurately decode this segment. |
| 873 ASSERT_TRUE(Seek(base::TimeDelta::FromMilliseconds(6360))); | 891 ASSERT_TRUE(Seek(base::TimeDelta::FromMilliseconds(6360))); |
| 874 Play(); | 892 Play(); |
| 875 ASSERT_TRUE(WaitUntilOnEnded()); | 893 ASSERT_TRUE(WaitUntilOnEnded()); |
| 876 EXPECT_HASH_EQ(kOpusEndTrimmingHash_3, GetAudioHash()); | 894 EXPECT_HASH_EQ(kOpusEndTrimmingHash_3, GetAudioHash()); |
| 877 } | 895 } |
| 878 | 896 |
| 879 TEST_F(PipelineIntegrationTest, | 897 TEST_F(PipelineIntegrationTest, |
| 880 BasicPlaybackOpusWebmTrimmingHashed_MediaSource) { | 898 MAYBE_CLOCKLESS(BasicPlaybackOpusWebmTrimmingHashed_MediaSource)) { |
| 881 MockMediaSource source("opus-trimming-test.webm", kOpusAudioOnlyWebM, | 899 MockMediaSource source("opus-trimming-test.webm", kOpusAudioOnlyWebM, |
| 882 kAppendWholeFile); | 900 kAppendWholeFile); |
| 883 StartHashedClocklessPipelineWithMediaSource(&source); | 901 StartHashedClocklessPipelineWithMediaSource(&source); |
| 884 source.EndOfStream(); | 902 source.EndOfStream(); |
| 885 | 903 |
| 886 Play(); | 904 Play(); |
| 887 | 905 |
| 888 ASSERT_TRUE(WaitUntilOnEnded()); | 906 ASSERT_TRUE(WaitUntilOnEnded()); |
| 889 EXPECT_HASH_EQ(kOpusEndTrimmingHash_1, GetAudioHash()); | 907 EXPECT_HASH_EQ(kOpusEndTrimmingHash_1, GetAudioHash()); |
| 890 | 908 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 935 } | 953 } |
| 936 | 954 |
| 937 TEST_F(PipelineIntegrationTest, F32PlaybackHashed) { | 955 TEST_F(PipelineIntegrationTest, F32PlaybackHashed) { |
| 938 ASSERT_EQ(PIPELINE_OK, Start("sfx_f32le.wav", kHashed)); | 956 ASSERT_EQ(PIPELINE_OK, Start("sfx_f32le.wav", kHashed)); |
| 939 Play(); | 957 Play(); |
| 940 ASSERT_TRUE(WaitUntilOnEnded()); | 958 ASSERT_TRUE(WaitUntilOnEnded()); |
| 941 EXPECT_HASH_EQ(std::string(kNullVideoHash), GetVideoHash()); | 959 EXPECT_HASH_EQ(std::string(kNullVideoHash), GetVideoHash()); |
| 942 EXPECT_HASH_EQ("3.03,2.86,2.99,3.31,3.57,4.06,", GetAudioHash()); | 960 EXPECT_HASH_EQ("3.03,2.86,2.99,3.31,3.57,4.06,", GetAudioHash()); |
| 943 } | 961 } |
| 944 | 962 |
| 945 #if !defined(DISABLE_EME_TESTS) | 963 TEST_F(PipelineIntegrationTest, MAYBE_EME(BasicPlaybackEncrypted)) { |
| 946 TEST_F(PipelineIntegrationTest, BasicPlaybackEncrypted) { | |
| 947 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 964 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| 948 set_encrypted_media_init_data_cb( | 965 set_encrypted_media_init_data_cb( |
| 949 base::Bind(&FakeEncryptedMedia::OnEncryptedMediaInitData, | 966 base::Bind(&FakeEncryptedMedia::OnEncryptedMediaInitData, |
| 950 base::Unretained(&encrypted_media))); | 967 base::Unretained(&encrypted_media))); |
| 951 | 968 |
| 952 ASSERT_EQ(PIPELINE_OK, Start("bear-320x240-av_enc-av.webm", | 969 ASSERT_EQ(PIPELINE_OK, Start("bear-320x240-av_enc-av.webm", |
| 953 encrypted_media.GetCdmContext())); | 970 encrypted_media.GetCdmContext())); |
| 954 | 971 |
| 955 Play(); | 972 Play(); |
| 956 | 973 |
| 957 ASSERT_TRUE(WaitUntilOnEnded()); | 974 ASSERT_TRUE(WaitUntilOnEnded()); |
| 958 Stop(); | 975 Stop(); |
| 959 } | 976 } |
| 960 #endif // !defined(DISABLE_EME_TESTS) | |
| 961 | 977 |
| 962 TEST_F(PipelineIntegrationTest, BasicPlayback_MediaSource) { | 978 TEST_F(PipelineIntegrationTest, BasicPlayback_MediaSource) { |
| 963 MockMediaSource source("bear-320x240.webm", kWebM, 219229); | 979 MockMediaSource source("bear-320x240.webm", kWebM, 219229); |
| 964 StartPipelineWithMediaSource(&source); | 980 StartPipelineWithMediaSource(&source); |
| 965 source.EndOfStream(); | 981 source.EndOfStream(); |
| 966 | 982 |
| 967 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 983 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 968 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 984 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 969 EXPECT_EQ(k320WebMFileDurationMs, | 985 EXPECT_EQ(k320WebMFileDurationMs, |
| 970 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 986 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 source.AppendAtTime(media_time, file->data(), file->data_size()); | 1165 source.AppendAtTime(media_time, file->data(), file->data_size()); |
| 1150 buffered_ranges = pipeline_->GetBufferedTimeRanges(); | 1166 buffered_ranges = pipeline_->GetBufferedTimeRanges(); |
| 1151 } while (buffered_ranges.size() == 1 && | 1167 } while (buffered_ranges.size() == 1 && |
| 1152 buffered_ranges.start(0) == base::TimeDelta::FromSeconds(0)); | 1168 buffered_ranges.start(0) == base::TimeDelta::FromSeconds(0)); |
| 1153 | 1169 |
| 1154 EXPECT_EQ(1u, buffered_ranges.size()); | 1170 EXPECT_EQ(1u, buffered_ranges.size()); |
| 1155 source.Shutdown(); | 1171 source.Shutdown(); |
| 1156 Stop(); | 1172 Stop(); |
| 1157 } | 1173 } |
| 1158 | 1174 |
| 1159 #if !defined(DISABLE_EME_TESTS) | 1175 TEST_F(PipelineIntegrationTest, |
| 1160 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_Encrypted_WebM) { | 1176 MAYBE_EME(MediaSource_ConfigChange_Encrypted_WebM)) { |
| 1161 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, | 1177 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, |
| 1162 kAppendWholeFile); | 1178 kAppendWholeFile); |
| 1163 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1179 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| 1164 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1180 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1165 | 1181 |
| 1166 scoped_refptr<DecoderBuffer> second_file = | 1182 scoped_refptr<DecoderBuffer> second_file = |
| 1167 ReadTestDataFile("bear-640x360-av_enc-av.webm"); | 1183 ReadTestDataFile("bear-640x360-av_enc-av.webm"); |
| 1168 | 1184 |
| 1169 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1185 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
| 1170 second_file->data(), second_file->data_size()); | 1186 second_file->data(), second_file->data_size()); |
| 1171 | 1187 |
| 1172 source.EndOfStream(); | 1188 source.EndOfStream(); |
| 1173 | 1189 |
| 1174 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1190 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1175 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1191 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1176 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, | 1192 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, |
| 1177 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1193 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1178 | 1194 |
| 1179 Play(); | 1195 Play(); |
| 1180 | 1196 |
| 1181 EXPECT_TRUE(WaitUntilOnEnded()); | 1197 EXPECT_TRUE(WaitUntilOnEnded()); |
| 1182 source.Shutdown(); | 1198 source.Shutdown(); |
| 1183 Stop(); | 1199 Stop(); |
| 1184 } | 1200 } |
| 1185 | 1201 |
| 1186 // Config changes from encrypted to clear are not currently supported. | 1202 // Config changes from encrypted to clear are not currently supported. |
| 1187 TEST_F(PipelineIntegrationTest, | 1203 TEST_F(PipelineIntegrationTest, |
| 1188 MediaSource_ConfigChange_ClearThenEncrypted_WebM) { | 1204 MAYBE_EME(MediaSource_ConfigChange_ClearThenEncrypted_WebM)) { |
| 1189 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, | 1205 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, |
| 1190 kAppendWholeFile); | 1206 kAppendWholeFile); |
| 1191 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1207 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| 1192 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1208 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1193 | 1209 |
| 1194 scoped_refptr<DecoderBuffer> second_file = | 1210 scoped_refptr<DecoderBuffer> second_file = |
| 1195 ReadTestDataFile("bear-640x360-av_enc-av.webm"); | 1211 ReadTestDataFile("bear-640x360-av_enc-av.webm"); |
| 1196 | 1212 |
| 1197 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1213 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
| 1198 second_file->data(), second_file->data_size()); | 1214 second_file->data(), second_file->data_size()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1209 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1225 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1210 | 1226 |
| 1211 Play(); | 1227 Play(); |
| 1212 | 1228 |
| 1213 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); | 1229 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); |
| 1214 source.Shutdown(); | 1230 source.Shutdown(); |
| 1215 } | 1231 } |
| 1216 | 1232 |
| 1217 // Config changes from clear to encrypted are not currently supported. | 1233 // Config changes from clear to encrypted are not currently supported. |
| 1218 TEST_F(PipelineIntegrationTest, | 1234 TEST_F(PipelineIntegrationTest, |
| 1219 MediaSource_ConfigChange_EncryptedThenClear_WebM) { | 1235 MAYBE_EME(MediaSource_ConfigChange_EncryptedThenClear_WebM)) { |
| 1220 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, | 1236 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, |
| 1221 kAppendWholeFile); | 1237 kAppendWholeFile); |
| 1222 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1238 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| 1223 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1239 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1224 | 1240 |
| 1225 scoped_refptr<DecoderBuffer> second_file = | 1241 scoped_refptr<DecoderBuffer> second_file = |
| 1226 ReadTestDataFile("bear-640x360.webm"); | 1242 ReadTestDataFile("bear-640x360.webm"); |
| 1227 | 1243 |
| 1228 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1244 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
| 1229 second_file->data(), second_file->data_size()); | 1245 second_file->data(), second_file->data_size()); |
| 1230 | 1246 |
| 1231 source.EndOfStream(); | 1247 source.EndOfStream(); |
| 1232 | 1248 |
| 1233 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1249 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1234 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1250 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1235 // The second video was not added, so its time has not been added. | 1251 // The second video was not added, so its time has not been added. |
| 1236 EXPECT_EQ(k320EncWebMFileDurationMs, | 1252 EXPECT_EQ(k320EncWebMFileDurationMs, |
| 1237 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1253 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1238 | 1254 |
| 1239 Play(); | 1255 Play(); |
| 1240 | 1256 |
| 1241 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); | 1257 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); |
| 1242 source.Shutdown(); | 1258 source.Shutdown(); |
| 1243 } | 1259 } |
| 1244 #endif // !defined(DISABLE_EME_TESTS) | |
| 1245 | 1260 |
| 1246 #if defined(USE_PROPRIETARY_CODECS) | 1261 #if defined(USE_PROPRIETARY_CODECS) |
| 1247 TEST_F(PipelineIntegrationTest, MediaSource_ADTS) { | 1262 TEST_F(PipelineIntegrationTest, MediaSource_ADTS) { |
| 1248 MockMediaSource source("sfx.adts", kADTS, kAppendWholeFile); | 1263 MockMediaSource source("sfx.adts", kADTS, kAppendWholeFile); |
| 1249 StartPipelineWithMediaSource(&source); | 1264 StartPipelineWithMediaSource(&source); |
| 1250 source.EndOfStream(); | 1265 source.EndOfStream(); |
| 1251 | 1266 |
| 1252 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1267 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1253 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1268 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1254 EXPECT_EQ(325, pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1269 EXPECT_EQ(325, pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1295 ASSERT_EQ(PIPELINE_OK, Start("sfx.mp3", kHashed)); | 1310 ASSERT_EQ(PIPELINE_OK, Start("sfx.mp3", kHashed)); |
| 1296 | 1311 |
| 1297 Play(); | 1312 Play(); |
| 1298 | 1313 |
| 1299 ASSERT_TRUE(WaitUntilOnEnded()); | 1314 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1300 | 1315 |
| 1301 // Verify codec delay and preroll are stripped. | 1316 // Verify codec delay and preroll are stripped. |
| 1302 EXPECT_HASH_EQ("1.30,2.72,4.56,5.08,3.74,2.03,", GetAudioHash()); | 1317 EXPECT_HASH_EQ("1.30,2.72,4.56,5.08,3.74,2.03,", GetAudioHash()); |
| 1303 } | 1318 } |
| 1304 | 1319 |
| 1320 #if !defined(DISABLE_CLOCKLESS_TESTS) |
| 1305 class Mp3FastSeekParams { | 1321 class Mp3FastSeekParams { |
| 1306 public: | 1322 public: |
| 1307 Mp3FastSeekParams(const char* filename, const char* hash) | 1323 Mp3FastSeekParams(const char* filename, const char* hash) |
| 1308 : filename(filename), hash(hash) {} | 1324 : filename(filename), hash(hash) {} |
| 1309 const char* filename; | 1325 const char* filename; |
| 1310 const char* hash; | 1326 const char* hash; |
| 1311 }; | 1327 }; |
| 1312 | 1328 |
| 1313 class Mp3FastSeekIntegrationTest | 1329 class Mp3FastSeekIntegrationTest |
| 1314 : public PipelineIntegrationTest, | 1330 : public PipelineIntegrationTest, |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1353 "0.95,0.56,1.34,0.47,1.77,0.84,"))); | 1369 "0.95,0.56,1.34,0.47,1.77,0.84,"))); |
| 1354 | 1370 |
| 1355 // VBR seeks can be fast *OR* accurate, but not both. We chose fast. | 1371 // VBR seeks can be fast *OR* accurate, but not both. We chose fast. |
| 1356 INSTANTIATE_TEST_CASE_P( | 1372 INSTANTIATE_TEST_CASE_P( |
| 1357 VBRSeeks, | 1373 VBRSeeks, |
| 1358 Mp3FastSeekIntegrationTest, | 1374 Mp3FastSeekIntegrationTest, |
| 1359 ::testing::Values(Mp3FastSeekParams("bear-audio-10s-VBR-has-TOC.mp3", | 1375 ::testing::Values(Mp3FastSeekParams("bear-audio-10s-VBR-has-TOC.mp3", |
| 1360 "-0.15,-0.83,0.54,1.00,1.94,0.93,"), | 1376 "-0.15,-0.83,0.54,1.00,1.94,0.93,"), |
| 1361 Mp3FastSeekParams("bear-audio-10s-VBR-no-TOC.mp3", | 1377 Mp3FastSeekParams("bear-audio-10s-VBR-no-TOC.mp3", |
| 1362 "-0.22,0.80,1.19,0.73,-0.31,-1.12,"))); | 1378 "-0.22,0.80,1.19,0.73,-0.31,-1.12,"))); |
| 1379 #endif // !defined(DISABLE_CLOCKLESS_TESTS) |
| 1363 | 1380 |
| 1364 TEST_F(PipelineIntegrationTest, MediaSource_MP3) { | 1381 TEST_F(PipelineIntegrationTest, MediaSource_MP3) { |
| 1365 MockMediaSource source("sfx.mp3", kMP3, kAppendWholeFile); | 1382 MockMediaSource source("sfx.mp3", kMP3, kAppendWholeFile); |
| 1366 StartHashedPipelineWithMediaSource(&source); | 1383 StartHashedPipelineWithMediaSource(&source); |
| 1367 source.EndOfStream(); | 1384 source.EndOfStream(); |
| 1368 | 1385 |
| 1369 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1386 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1370 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1387 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1371 EXPECT_EQ(313, pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1388 EXPECT_EQ(313, pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1372 | 1389 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1435 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, | 1452 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, |
| 1436 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1453 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1437 | 1454 |
| 1438 Play(); | 1455 Play(); |
| 1439 | 1456 |
| 1440 EXPECT_TRUE(WaitUntilOnEnded()); | 1457 EXPECT_TRUE(WaitUntilOnEnded()); |
| 1441 source.Shutdown(); | 1458 source.Shutdown(); |
| 1442 Stop(); | 1459 Stop(); |
| 1443 } | 1460 } |
| 1444 | 1461 |
| 1445 #if !defined(DISABLE_EME_TESTS) | |
| 1446 TEST_F(PipelineIntegrationTest, | 1462 TEST_F(PipelineIntegrationTest, |
| 1447 MediaSource_ConfigChange_Encrypted_MP4_CENC_VideoOnly) { | 1463 MAYBE_EME(MediaSource_ConfigChange_Encrypted_MP4_CENC_VideoOnly)) { |
| 1448 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", kMP4Video, | 1464 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", kMP4Video, |
| 1449 kAppendWholeFile); | 1465 kAppendWholeFile); |
| 1450 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1466 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| 1451 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1467 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1452 | 1468 |
| 1453 scoped_refptr<DecoderBuffer> second_file = | 1469 scoped_refptr<DecoderBuffer> second_file = |
| 1454 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); | 1470 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); |
| 1455 | 1471 |
| 1456 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1472 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
| 1457 second_file->data(), second_file->data_size()); | 1473 second_file->data(), second_file->data_size()); |
| 1458 | 1474 |
| 1459 source.EndOfStream(); | 1475 source.EndOfStream(); |
| 1460 | 1476 |
| 1461 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1477 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1462 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1478 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1463 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, | 1479 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, |
| 1464 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1480 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1465 | 1481 |
| 1466 Play(); | 1482 Play(); |
| 1467 | 1483 |
| 1468 EXPECT_TRUE(WaitUntilOnEnded()); | 1484 EXPECT_TRUE(WaitUntilOnEnded()); |
| 1469 source.Shutdown(); | 1485 source.Shutdown(); |
| 1470 Stop(); | 1486 Stop(); |
| 1471 } | 1487 } |
| 1472 | 1488 |
| 1473 TEST_F(PipelineIntegrationTest, | 1489 TEST_F(PipelineIntegrationTest, |
| 1474 MediaSource_ConfigChange_Encrypted_MP4_CENC_KeyRotation_VideoOnly) { | 1490 MAYBE_EME( |
| 1491 MediaSource_ConfigChange_Encrypted_MP4_CENC_KeyRotation_VideoOnly)) { |
| 1475 MockMediaSource source("bear-640x360-v_frag-cenc-key_rotation.mp4", kMP4Video, | 1492 MockMediaSource source("bear-640x360-v_frag-cenc-key_rotation.mp4", kMP4Video, |
| 1476 kAppendWholeFile); | 1493 kAppendWholeFile); |
| 1477 FakeEncryptedMedia encrypted_media(new RotatingKeyProvidingApp()); | 1494 FakeEncryptedMedia encrypted_media(new RotatingKeyProvidingApp()); |
| 1478 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1495 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1479 | 1496 |
| 1480 scoped_refptr<DecoderBuffer> second_file = | 1497 scoped_refptr<DecoderBuffer> second_file = |
| 1481 ReadTestDataFile("bear-1280x720-v_frag-cenc-key_rotation.mp4"); | 1498 ReadTestDataFile("bear-1280x720-v_frag-cenc-key_rotation.mp4"); |
| 1482 | 1499 |
| 1483 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1500 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
| 1484 second_file->data(), second_file->data_size()); | 1501 second_file->data(), second_file->data_size()); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1524 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1541 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1525 | 1542 |
| 1526 Play(); | 1543 Play(); |
| 1527 | 1544 |
| 1528 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); | 1545 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); |
| 1529 source.Shutdown(); | 1546 source.Shutdown(); |
| 1530 } | 1547 } |
| 1531 | 1548 |
| 1532 // Config changes from encrypted to clear are not currently supported. | 1549 // Config changes from encrypted to clear are not currently supported. |
| 1533 TEST_F(PipelineIntegrationTest, | 1550 TEST_F(PipelineIntegrationTest, |
| 1534 MediaSource_ConfigChange_EncryptedThenClear_MP4_CENC) { | 1551 MAYBE_EME(MediaSource_ConfigChange_EncryptedThenClear_MP4_CENC)) { |
| 1535 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", kMP4Video, | 1552 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", kMP4Video, |
| 1536 kAppendWholeFile); | 1553 kAppendWholeFile); |
| 1537 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1554 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| 1538 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1555 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1539 | 1556 |
| 1540 scoped_refptr<DecoderBuffer> second_file = | 1557 scoped_refptr<DecoderBuffer> second_file = |
| 1541 ReadTestDataFile("bear-1280x720-av_frag.mp4"); | 1558 ReadTestDataFile("bear-1280x720-av_frag.mp4"); |
| 1542 | 1559 |
| 1543 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1560 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
| 1544 second_file->data(), second_file->data_size()); | 1561 second_file->data(), second_file->data_size()); |
| 1545 | 1562 |
| 1546 source.EndOfStream(); | 1563 source.EndOfStream(); |
| 1547 | 1564 |
| 1548 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1565 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1549 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1566 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1550 // The second video was not added, so its time has not been added. | 1567 // The second video was not added, so its time has not been added. |
| 1551 EXPECT_EQ(k640IsoCencFileDurationMs, | 1568 EXPECT_EQ(k640IsoCencFileDurationMs, |
| 1552 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1569 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1553 | 1570 |
| 1554 Play(); | 1571 Play(); |
| 1555 | 1572 |
| 1556 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); | 1573 EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); |
| 1557 source.Shutdown(); | 1574 source.Shutdown(); |
| 1558 } | 1575 } |
| 1559 #endif // !defined(DISABLE_EME_TESTS) | |
| 1560 | 1576 |
| 1561 // Verify files which change configuration midstream fail gracefully. | 1577 // Verify files which change configuration midstream fail gracefully. |
| 1562 TEST_F(PipelineIntegrationTest, MidStreamConfigChangesFail) { | 1578 TEST_F(PipelineIntegrationTest, MidStreamConfigChangesFail) { |
| 1563 ASSERT_EQ(PIPELINE_OK, Start("midstream_config_change.mp3")); | 1579 ASSERT_EQ(PIPELINE_OK, Start("midstream_config_change.mp3")); |
| 1564 Play(); | 1580 Play(); |
| 1565 ASSERT_EQ(WaitUntilEndedOrError(), PIPELINE_ERROR_DECODE); | 1581 ASSERT_EQ(WaitUntilEndedOrError(), PIPELINE_ERROR_DECODE); |
| 1566 } | 1582 } |
| 1567 | 1583 #endif // defined(USE_PROPRIETARY_CODECS) |
| 1568 #endif | |
| 1569 | 1584 |
| 1570 TEST_F(PipelineIntegrationTest, BasicPlayback_16x9AspectRatio) { | 1585 TEST_F(PipelineIntegrationTest, BasicPlayback_16x9AspectRatio) { |
| 1571 ASSERT_EQ(PIPELINE_OK, Start("bear-320x240-16x9-aspect.webm")); | 1586 ASSERT_EQ(PIPELINE_OK, Start("bear-320x240-16x9-aspect.webm")); |
| 1572 Play(); | 1587 Play(); |
| 1573 ASSERT_TRUE(WaitUntilOnEnded()); | 1588 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1574 } | 1589 } |
| 1575 | 1590 |
| 1576 #if !defined(DISABLE_EME_TESTS) | 1591 TEST_F(PipelineIntegrationTest, MAYBE_EME(EncryptedPlayback_WebM)) { |
| 1577 TEST_F(PipelineIntegrationTest, EncryptedPlayback_WebM) { | |
| 1578 MockMediaSource source("bear-320x240-av_enc-av.webm", kWebM, 219816); | 1592 MockMediaSource source("bear-320x240-av_enc-av.webm", kWebM, 219816); |
| 1579 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1593 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| 1580 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1594 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1581 | 1595 |
| 1582 source.EndOfStream(); | 1596 source.EndOfStream(); |
| 1583 ASSERT_EQ(PIPELINE_OK, pipeline_status_); | 1597 ASSERT_EQ(PIPELINE_OK, pipeline_status_); |
| 1584 | 1598 |
| 1585 Play(); | 1599 Play(); |
| 1586 | 1600 |
| 1587 ASSERT_TRUE(WaitUntilOnEnded()); | 1601 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1588 source.Shutdown(); | 1602 source.Shutdown(); |
| 1589 Stop(); | 1603 Stop(); |
| 1590 } | 1604 } |
| 1591 | 1605 |
| 1592 TEST_F(PipelineIntegrationTest, EncryptedPlayback_ClearStart_WebM) { | 1606 TEST_F(PipelineIntegrationTest, MAYBE_EME(EncryptedPlayback_ClearStart_WebM)) { |
| 1593 MockMediaSource source("bear-320x240-av_enc-av_clear-1s.webm", kWebM, | 1607 MockMediaSource source("bear-320x240-av_enc-av_clear-1s.webm", kWebM, |
| 1594 kAppendWholeFile); | 1608 kAppendWholeFile); |
| 1595 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1609 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| 1596 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1610 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1597 | 1611 |
| 1598 source.EndOfStream(); | 1612 source.EndOfStream(); |
| 1599 ASSERT_EQ(PIPELINE_OK, pipeline_status_); | 1613 ASSERT_EQ(PIPELINE_OK, pipeline_status_); |
| 1600 | 1614 |
| 1601 Play(); | 1615 Play(); |
| 1602 | 1616 |
| 1603 ASSERT_TRUE(WaitUntilOnEnded()); | 1617 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1604 source.Shutdown(); | 1618 source.Shutdown(); |
| 1605 Stop(); | 1619 Stop(); |
| 1606 } | 1620 } |
| 1607 | 1621 |
| 1608 TEST_F(PipelineIntegrationTest, EncryptedPlayback_NoEncryptedFrames_WebM) { | 1622 TEST_F(PipelineIntegrationTest, |
| 1623 MAYBE_EME(EncryptedPlayback_NoEncryptedFrames_WebM)) { |
| 1609 MockMediaSource source("bear-320x240-av_enc-av_clear-all.webm", kWebM, | 1624 MockMediaSource source("bear-320x240-av_enc-av_clear-all.webm", kWebM, |
| 1610 kAppendWholeFile); | 1625 kAppendWholeFile); |
| 1611 FakeEncryptedMedia encrypted_media(new NoResponseApp()); | 1626 FakeEncryptedMedia encrypted_media(new NoResponseApp()); |
| 1612 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1627 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1613 | 1628 |
| 1614 source.EndOfStream(); | 1629 source.EndOfStream(); |
| 1615 ASSERT_EQ(PIPELINE_OK, pipeline_status_); | 1630 ASSERT_EQ(PIPELINE_OK, pipeline_status_); |
| 1616 | 1631 |
| 1617 Play(); | 1632 Play(); |
| 1618 | 1633 |
| 1619 ASSERT_TRUE(WaitUntilOnEnded()); | 1634 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1620 source.Shutdown(); | 1635 source.Shutdown(); |
| 1621 Stop(); | 1636 Stop(); |
| 1622 } | 1637 } |
| 1623 #endif // !defined(DISABLE_EME_TESTS) | |
| 1624 | 1638 |
| 1625 #if defined(USE_PROPRIETARY_CODECS) | 1639 #if defined(USE_PROPRIETARY_CODECS) |
| 1626 #if !defined(DISABLE_EME_TESTS) | 1640 TEST_F(PipelineIntegrationTest, |
| 1627 TEST_F(PipelineIntegrationTest, EncryptedPlayback_MP4_CENC_VideoOnly) { | 1641 MAYBE_EME(EncryptedPlayback_MP4_CENC_VideoOnly)) { |
| 1628 MockMediaSource source("bear-1280x720-v_frag-cenc.mp4", kMP4Video, | 1642 MockMediaSource source("bear-1280x720-v_frag-cenc.mp4", kMP4Video, |
| 1629 kAppendWholeFile); | 1643 kAppendWholeFile); |
| 1630 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1644 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| 1631 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1645 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1632 | 1646 |
| 1633 source.EndOfStream(); | 1647 source.EndOfStream(); |
| 1634 ASSERT_EQ(PIPELINE_OK, pipeline_status_); | 1648 ASSERT_EQ(PIPELINE_OK, pipeline_status_); |
| 1635 | 1649 |
| 1636 Play(); | 1650 Play(); |
| 1637 | 1651 |
| 1638 ASSERT_TRUE(WaitUntilOnEnded()); | 1652 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1639 source.Shutdown(); | 1653 source.Shutdown(); |
| 1640 Stop(); | 1654 Stop(); |
| 1641 } | 1655 } |
| 1642 | 1656 |
| 1643 TEST_F(PipelineIntegrationTest, EncryptedPlayback_MP4_CENC_AudioOnly) { | 1657 TEST_F(PipelineIntegrationTest, |
| 1658 MAYBE_EME(EncryptedPlayback_MP4_CENC_AudioOnly)) { |
| 1644 MockMediaSource source("bear-1280x720-a_frag-cenc.mp4", kMP4Audio, | 1659 MockMediaSource source("bear-1280x720-a_frag-cenc.mp4", kMP4Audio, |
| 1645 kAppendWholeFile); | 1660 kAppendWholeFile); |
| 1646 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1661 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| 1647 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1662 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1648 | 1663 |
| 1649 source.EndOfStream(); | 1664 source.EndOfStream(); |
| 1650 ASSERT_EQ(PIPELINE_OK, pipeline_status_); | 1665 ASSERT_EQ(PIPELINE_OK, pipeline_status_); |
| 1651 | 1666 |
| 1652 Play(); | 1667 Play(); |
| 1653 | 1668 |
| 1654 ASSERT_TRUE(WaitUntilOnEnded()); | 1669 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1655 source.Shutdown(); | 1670 source.Shutdown(); |
| 1656 Stop(); | 1671 Stop(); |
| 1657 } | 1672 } |
| 1658 | 1673 |
| 1659 TEST_F(PipelineIntegrationTest, | 1674 TEST_F(PipelineIntegrationTest, |
| 1660 EncryptedPlayback_NoEncryptedFrames_MP4_CENC_VideoOnly) { | 1675 MAYBE_EME(EncryptedPlayback_NoEncryptedFrames_MP4_CENC_VideoOnly)) { |
| 1661 MockMediaSource source("bear-1280x720-v_frag-cenc_clear-all.mp4", kMP4Video, | 1676 MockMediaSource source("bear-1280x720-v_frag-cenc_clear-all.mp4", kMP4Video, |
| 1662 kAppendWholeFile); | 1677 kAppendWholeFile); |
| 1663 FakeEncryptedMedia encrypted_media(new NoResponseApp()); | 1678 FakeEncryptedMedia encrypted_media(new NoResponseApp()); |
| 1664 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1679 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1665 | 1680 |
| 1666 source.EndOfStream(); | 1681 source.EndOfStream(); |
| 1667 ASSERT_EQ(PIPELINE_OK, pipeline_status_); | 1682 ASSERT_EQ(PIPELINE_OK, pipeline_status_); |
| 1668 | 1683 |
| 1669 Play(); | 1684 Play(); |
| 1670 | 1685 |
| 1671 ASSERT_TRUE(WaitUntilOnEnded()); | 1686 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1672 source.Shutdown(); | 1687 source.Shutdown(); |
| 1673 Stop(); | 1688 Stop(); |
| 1674 } | 1689 } |
| 1675 | 1690 |
| 1676 TEST_F(PipelineIntegrationTest, | 1691 TEST_F(PipelineIntegrationTest, |
| 1677 EncryptedPlayback_NoEncryptedFrames_MP4_CENC_AudioOnly) { | 1692 MAYBE_EME(EncryptedPlayback_NoEncryptedFrames_MP4_CENC_AudioOnly)) { |
| 1678 MockMediaSource source("bear-1280x720-a_frag-cenc_clear-all.mp4", kMP4Audio, | 1693 MockMediaSource source("bear-1280x720-a_frag-cenc_clear-all.mp4", kMP4Audio, |
| 1679 kAppendWholeFile); | 1694 kAppendWholeFile); |
| 1680 FakeEncryptedMedia encrypted_media(new NoResponseApp()); | 1695 FakeEncryptedMedia encrypted_media(new NoResponseApp()); |
| 1681 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1696 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1682 | 1697 |
| 1683 source.EndOfStream(); | 1698 source.EndOfStream(); |
| 1684 ASSERT_EQ(PIPELINE_OK, pipeline_status_); | 1699 ASSERT_EQ(PIPELINE_OK, pipeline_status_); |
| 1685 | 1700 |
| 1686 Play(); | 1701 Play(); |
| 1687 | 1702 |
| 1688 ASSERT_TRUE(WaitUntilOnEnded()); | 1703 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1689 source.Shutdown(); | 1704 source.Shutdown(); |
| 1690 Stop(); | 1705 Stop(); |
| 1691 } | 1706 } |
| 1692 | 1707 |
| 1693 TEST_F(PipelineIntegrationTest, EncryptedPlayback_MP4_CENC_KeyRotation_Video) { | 1708 TEST_F(PipelineIntegrationTest, |
| 1709 MAYBE_EME(EncryptedPlayback_MP4_CENC_KeyRotation_Video)) { |
| 1694 MockMediaSource source("bear-1280x720-v_frag-cenc-key_rotation.mp4", | 1710 MockMediaSource source("bear-1280x720-v_frag-cenc-key_rotation.mp4", |
| 1695 kMP4Video, kAppendWholeFile); | 1711 kMP4Video, kAppendWholeFile); |
| 1696 FakeEncryptedMedia encrypted_media(new RotatingKeyProvidingApp()); | 1712 FakeEncryptedMedia encrypted_media(new RotatingKeyProvidingApp()); |
| 1697 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1713 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1698 | 1714 |
| 1699 source.EndOfStream(); | 1715 source.EndOfStream(); |
| 1700 ASSERT_EQ(PIPELINE_OK, pipeline_status_); | 1716 ASSERT_EQ(PIPELINE_OK, pipeline_status_); |
| 1701 | 1717 |
| 1702 Play(); | 1718 Play(); |
| 1703 | 1719 |
| 1704 ASSERT_TRUE(WaitUntilOnEnded()); | 1720 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1705 source.Shutdown(); | 1721 source.Shutdown(); |
| 1706 Stop(); | 1722 Stop(); |
| 1707 } | 1723 } |
| 1708 | 1724 |
| 1709 TEST_F(PipelineIntegrationTest, EncryptedPlayback_MP4_CENC_KeyRotation_Audio) { | 1725 TEST_F(PipelineIntegrationTest, |
| 1726 MAYBE_EME(EncryptedPlayback_MP4_CENC_KeyRotation_Audio)) { |
| 1710 MockMediaSource source("bear-1280x720-a_frag-cenc-key_rotation.mp4", | 1727 MockMediaSource source("bear-1280x720-a_frag-cenc-key_rotation.mp4", |
| 1711 kMP4Audio, kAppendWholeFile); | 1728 kMP4Audio, kAppendWholeFile); |
| 1712 FakeEncryptedMedia encrypted_media(new RotatingKeyProvidingApp()); | 1729 FakeEncryptedMedia encrypted_media(new RotatingKeyProvidingApp()); |
| 1713 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1730 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1714 | 1731 |
| 1715 source.EndOfStream(); | 1732 source.EndOfStream(); |
| 1716 ASSERT_EQ(PIPELINE_OK, pipeline_status_); | 1733 ASSERT_EQ(PIPELINE_OK, pipeline_status_); |
| 1717 | 1734 |
| 1718 Play(); | 1735 Play(); |
| 1719 | 1736 |
| 1720 ASSERT_TRUE(WaitUntilOnEnded()); | 1737 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1721 source.Shutdown(); | 1738 source.Shutdown(); |
| 1722 Stop(); | 1739 Stop(); |
| 1723 } | 1740 } |
| 1724 #endif // !defined(DISABLE_EME_TESTS) | |
| 1725 | 1741 |
| 1726 TEST_F(PipelineIntegrationTest, BasicPlayback_MediaSource_VideoOnly_MP4_AVC3) { | 1742 TEST_F(PipelineIntegrationTest, BasicPlayback_MediaSource_VideoOnly_MP4_AVC3) { |
| 1727 MockMediaSource source("bear-1280x720-v_frag-avc3.mp4", kMP4VideoAVC3, | 1743 MockMediaSource source("bear-1280x720-v_frag-avc3.mp4", kMP4VideoAVC3, |
| 1728 kAppendWholeFile); | 1744 kAppendWholeFile); |
| 1729 StartPipelineWithMediaSource(&source); | 1745 StartPipelineWithMediaSource(&source); |
| 1730 source.EndOfStream(); | 1746 source.EndOfStream(); |
| 1731 | 1747 |
| 1732 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1748 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1733 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1749 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1734 EXPECT_EQ(k1280IsoAVC3FileDurationMs, | 1750 EXPECT_EQ(k1280IsoAVC3FileDurationMs, |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1829 | 1845 |
| 1830 TEST_F(PipelineIntegrationTest, Rotated_Metadata_180) { | 1846 TEST_F(PipelineIntegrationTest, Rotated_Metadata_180) { |
| 1831 ASSERT_EQ(PIPELINE_OK, Start("bear_rotate_180.mp4")); | 1847 ASSERT_EQ(PIPELINE_OK, Start("bear_rotate_180.mp4")); |
| 1832 ASSERT_EQ(VIDEO_ROTATION_180, metadata_.video_rotation); | 1848 ASSERT_EQ(VIDEO_ROTATION_180, metadata_.video_rotation); |
| 1833 } | 1849 } |
| 1834 | 1850 |
| 1835 TEST_F(PipelineIntegrationTest, Rotated_Metadata_270) { | 1851 TEST_F(PipelineIntegrationTest, Rotated_Metadata_270) { |
| 1836 ASSERT_EQ(PIPELINE_OK, Start("bear_rotate_270.mp4")); | 1852 ASSERT_EQ(PIPELINE_OK, Start("bear_rotate_270.mp4")); |
| 1837 ASSERT_EQ(VIDEO_ROTATION_270, metadata_.video_rotation); | 1853 ASSERT_EQ(VIDEO_ROTATION_270, metadata_.video_rotation); |
| 1838 } | 1854 } |
| 1839 #endif | 1855 #endif // defined(USE_PROPRIETARY_CODECS) |
| 1840 | 1856 |
| 1841 // Verify audio decoder & renderer can handle aborted demuxer reads. | 1857 // Verify audio decoder & renderer can handle aborted demuxer reads. |
| 1842 TEST_F(PipelineIntegrationTest, ChunkDemuxerAbortRead_AudioOnly) { | 1858 TEST_F(PipelineIntegrationTest, ChunkDemuxerAbortRead_AudioOnly) { |
| 1843 ASSERT_TRUE(TestSeekDuringRead("bear-320x240-audio-only.webm", kAudioOnlyWebM, | 1859 ASSERT_TRUE(TestSeekDuringRead("bear-320x240-audio-only.webm", kAudioOnlyWebM, |
| 1844 16384, | 1860 16384, |
| 1845 base::TimeDelta::FromMilliseconds(464), | 1861 base::TimeDelta::FromMilliseconds(464), |
| 1846 base::TimeDelta::FromMilliseconds(617), | 1862 base::TimeDelta::FromMilliseconds(617), |
| 1847 0x10CA, 19730)); | 1863 0x10CA, 19730)); |
| 1848 } | 1864 } |
| 1849 | 1865 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1894 EXPECT_VIDEO_FORMAT_EQ(last_video_frame_format_, PIXEL_FORMAT_YV12A); | 1910 EXPECT_VIDEO_FORMAT_EQ(last_video_frame_format_, PIXEL_FORMAT_YV12A); |
| 1895 } | 1911 } |
| 1896 | 1912 |
| 1897 // Verify that VP9 video with odd width/height can be played back. | 1913 // Verify that VP9 video with odd width/height can be played back. |
| 1898 TEST_F(PipelineIntegrationTest, BasicPlayback_VP9_Odd_WebM) { | 1914 TEST_F(PipelineIntegrationTest, BasicPlayback_VP9_Odd_WebM) { |
| 1899 ASSERT_EQ(PIPELINE_OK, Start("bear-vp9-odd-dimensions.webm")); | 1915 ASSERT_EQ(PIPELINE_OK, Start("bear-vp9-odd-dimensions.webm")); |
| 1900 Play(); | 1916 Play(); |
| 1901 ASSERT_TRUE(WaitUntilOnEnded()); | 1917 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1902 } | 1918 } |
| 1903 | 1919 |
| 1904 #if !defined(DISABLE_TEXT_TRACK_TESTS) | |
| 1905 // Verify that VP8 video with inband text track can be played back. | 1920 // Verify that VP8 video with inband text track can be played back. |
| 1906 TEST_F(PipelineIntegrationTest, BasicPlayback_VP8_WebVTT_WebM) { | 1921 TEST_F(PipelineIntegrationTest, MAYBE_TEXT(BasicPlayback_VP8_WebVTT_WebM)) { |
| 1907 EXPECT_CALL(*this, OnAddTextTrack(_, _)); | 1922 EXPECT_CALL(*this, OnAddTextTrack(_, _)); |
| 1908 ASSERT_EQ(PIPELINE_OK, Start("bear-vp8-webvtt.webm")); | 1923 ASSERT_EQ(PIPELINE_OK, Start("bear-vp8-webvtt.webm")); |
| 1909 Play(); | 1924 Play(); |
| 1910 ASSERT_TRUE(WaitUntilOnEnded()); | 1925 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1911 } | 1926 } |
| 1912 #endif // !defined(DISABLE_TEXT_TRACK_TESTS) | |
| 1913 | 1927 |
| 1914 // Verify that VP9 video with 4:4:4 subsampling can be played back. | 1928 // Verify that VP9 video with 4:4:4 subsampling can be played back. |
| 1915 TEST_F(PipelineIntegrationTest, P444_VP9_WebM) { | 1929 TEST_F(PipelineIntegrationTest, P444_VP9_WebM) { |
| 1916 ASSERT_EQ(PIPELINE_OK, Start("bear-320x240-P444.webm")); | 1930 ASSERT_EQ(PIPELINE_OK, Start("bear-320x240-P444.webm")); |
| 1917 Play(); | 1931 Play(); |
| 1918 ASSERT_TRUE(WaitUntilOnEnded()); | 1932 ASSERT_TRUE(WaitUntilOnEnded()); |
| 1919 EXPECT_VIDEO_FORMAT_EQ(last_video_frame_format_, PIXEL_FORMAT_YV24); | 1933 EXPECT_VIDEO_FORMAT_EQ(last_video_frame_format_, PIXEL_FORMAT_YV24); |
| 1920 } | 1934 } |
| 1921 | 1935 |
| 1922 // Verify that frames of VP9 video in the BT.709 color space have the YV12HD | 1936 // Verify that frames of VP9 video in the BT.709 color space have the YV12HD |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2004 | 2018 |
| 2005 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { | 2019 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { |
| 2006 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); | 2020 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); |
| 2007 Play(); | 2021 Play(); |
| 2008 ASSERT_TRUE(WaitUntilOnEnded()); | 2022 ASSERT_TRUE(WaitUntilOnEnded()); |
| 2009 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), | 2023 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), |
| 2010 demuxer_->GetStartTime()); | 2024 demuxer_->GetStartTime()); |
| 2011 } | 2025 } |
| 2012 | 2026 |
| 2013 } // namespace media | 2027 } // namespace media |
| OLD | NEW |