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 <algorithm> | 8 #include <algorithm> |
9 #include <deque> | 9 #include <deque> |
10 #include <string> | 10 #include <string> |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
93 | 93 |
94 demuxer_.reset(new FFmpegDemuxer( | 94 demuxer_.reset(new FFmpegDemuxer( |
95 message_loop_.task_runner(), data_source_.get(), | 95 message_loop_.task_runner(), data_source_.get(), |
96 encrypted_media_init_data_cb, new MediaLog())); | 96 encrypted_media_init_data_cb, new MediaLog())); |
97 } | 97 } |
98 | 98 |
99 MOCK_METHOD1(CheckPoint, void(int v)); | 99 MOCK_METHOD1(CheckPoint, void(int v)); |
100 | 100 |
101 void InitializeDemuxerWithTimelineOffset(bool enable_text, | 101 void InitializeDemuxerWithTimelineOffset(bool enable_text, |
102 base::Time timeline_offset) { | 102 base::Time timeline_offset) { |
103 EXPECT_CALL(host_, SetDuration(_)); | 103 if (demuxer_init_expected_status_ == PIPELINE_OK) |
ddorwin
2016/01/23 00:38:56
This doesn't really need to be a member.
Add Init
servolk
2016/02/10 18:58:50
Done.
| |
104 EXPECT_CALL(host_, SetDuration(_)); | |
104 WaitableMessageLoopEvent event; | 105 WaitableMessageLoopEvent event; |
105 demuxer_->Initialize(&host_, event.GetPipelineStatusCB(), enable_text); | 106 demuxer_->Initialize(&host_, event.GetPipelineStatusCB(), enable_text); |
106 demuxer_->timeline_offset_ = timeline_offset; | 107 demuxer_->timeline_offset_ = timeline_offset; |
107 event.RunAndWaitForStatus(PIPELINE_OK); | 108 event.RunAndWaitForStatus(demuxer_init_expected_status_); |
108 } | 109 } |
109 | 110 |
110 void InitializeDemuxerText(bool enable_text) { | 111 void InitializeDemuxerText(bool enable_text) { |
ddorwin
2016/01/23 00:38:56
Unrelated except that it may avoid adding an |expe
servolk
2016/02/10 18:58:50
Yeah, I think it would be cleaner if we just had a
| |
111 InitializeDemuxerWithTimelineOffset(enable_text, base::Time()); | 112 InitializeDemuxerWithTimelineOffset(enable_text, base::Time()); |
112 } | 113 } |
113 | 114 |
114 void InitializeDemuxer() { | 115 void InitializeDemuxer() { |
115 InitializeDemuxerText(false); | 116 InitializeDemuxerText(false); |
116 } | 117 } |
117 | 118 |
118 MOCK_METHOD2(OnReadDoneCalled, void(int, int64_t)); | 119 MOCK_METHOD2(OnReadDoneCalled, void(int, int64_t)); |
119 | 120 |
120 struct ReadExpectation { | 121 struct ReadExpectation { |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
198 | 199 |
199 bool IsStreamStopped(DemuxerStream::Type type) { | 200 bool IsStreamStopped(DemuxerStream::Type type) { |
200 DemuxerStream* stream = demuxer_->GetStream(type); | 201 DemuxerStream* stream = demuxer_->GetStream(type); |
201 CHECK(stream); | 202 CHECK(stream); |
202 return !static_cast<FFmpegDemuxerStream*>(stream)->demuxer_; | 203 return !static_cast<FFmpegDemuxerStream*>(stream)->demuxer_; |
203 } | 204 } |
204 | 205 |
205 // Fixture members. | 206 // Fixture members. |
206 scoped_ptr<FileDataSource> data_source_; | 207 scoped_ptr<FileDataSource> data_source_; |
207 scoped_ptr<FFmpegDemuxer> demuxer_; | 208 scoped_ptr<FFmpegDemuxer> demuxer_; |
209 media::PipelineStatus demuxer_init_expected_status_ = PIPELINE_OK; | |
208 StrictMock<MockDemuxerHost> host_; | 210 StrictMock<MockDemuxerHost> host_; |
209 base::MessageLoop message_loop_; | 211 base::MessageLoop message_loop_; |
210 | 212 |
211 AVFormatContext* format_context() { | 213 AVFormatContext* format_context() { |
212 return demuxer_->glue_->format_context(); | 214 return demuxer_->glue_->format_context(); |
213 } | 215 } |
214 | 216 |
215 int preferred_seeking_stream_index() const { | 217 int preferred_seeking_stream_index() const { |
216 return demuxer_->preferred_stream_for_seeking_.first; | 218 return demuxer_->preferred_stream_for_seeking_.first; |
217 } | 219 } |
(...skipping 892 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1110 | 1112 |
1111 DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO); | 1113 DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
1112 ASSERT_TRUE(stream); | 1114 ASSERT_TRUE(stream); |
1113 | 1115 |
1114 const VideoDecoderConfig& video_config = stream->video_decoder_config(); | 1116 const VideoDecoderConfig& video_config = stream->video_decoder_config(); |
1115 EXPECT_EQ(gfx::Size(639, 360), video_config.natural_size()); | 1117 EXPECT_EQ(gfx::Size(639, 360), video_config.natural_size()); |
1116 } | 1118 } |
1117 | 1119 |
1118 #endif | 1120 #endif |
1119 | 1121 |
1120 #if BUILDFLAG(ENABLE_HEVC_DEMUXING) | |
1121 TEST_F(FFmpegDemuxerTest, HEVC_in_MP4_container) { | 1122 TEST_F(FFmpegDemuxerTest, HEVC_in_MP4_container) { |
1122 CreateDemuxer("bear-hevc-frag.mp4"); | 1123 CreateDemuxer("bear-hevc-frag.mp4"); |
1124 #if BUILDFLAG(ENABLE_HEVC_DEMUXING) | |
1123 InitializeDemuxer(); | 1125 InitializeDemuxer(); |
1124 | 1126 |
1125 DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO); | 1127 DemuxerStream* video = demuxer_->GetStream(DemuxerStream::VIDEO); |
1126 ASSERT_TRUE(video); | 1128 ASSERT_TRUE(video); |
1127 | 1129 |
1128 video->Read(NewReadCB(FROM_HERE, 3569, 66733, true)); | 1130 video->Read(NewReadCB(FROM_HERE, 3569, 66733, true)); |
1129 message_loop_.Run(); | 1131 message_loop_.Run(); |
1130 | 1132 |
1131 video->Read(NewReadCB(FROM_HERE, 1042, 200200, false)); | 1133 video->Read(NewReadCB(FROM_HERE, 1042, 200200, false)); |
1132 message_loop_.Run(); | 1134 message_loop_.Run(); |
1135 #else | |
1136 demuxer_init_expected_status_ = DEMUXER_ERROR_NO_SUPPORTED_STREAMS; | |
1137 InitializeDemuxer(); | |
1138 #endif | |
1133 } | 1139 } |
1134 #endif | |
1135 | 1140 |
1136 #if BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING) | |
1137 TEST_F(FFmpegDemuxerTest, Read_AC3_Audio) { | 1141 TEST_F(FFmpegDemuxerTest, Read_AC3_Audio) { |
1138 CreateDemuxer("bear-ac3-only-frag.mp4"); | 1142 CreateDemuxer("bear-ac3-only-frag.mp4"); |
1143 #if BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING) | |
1139 InitializeDemuxer(); | 1144 InitializeDemuxer(); |
1140 | 1145 |
1141 // Attempt a read from the audio stream and run the message loop until done. | 1146 // Attempt a read from the audio stream and run the message loop until done. |
1142 DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO); | 1147 DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO); |
1143 | 1148 |
1144 // Read the first two frames and check that we are getting expected data | 1149 // Read the first two frames and check that we are getting expected data |
1145 audio->Read(NewReadCB(FROM_HERE, 834, 0, true)); | 1150 audio->Read(NewReadCB(FROM_HERE, 834, 0, true)); |
1146 message_loop_.Run(); | 1151 message_loop_.Run(); |
1147 | 1152 |
1148 audio->Read(NewReadCB(FROM_HERE, 836, 34830, true)); | 1153 audio->Read(NewReadCB(FROM_HERE, 836, 34830, true)); |
1149 message_loop_.Run(); | 1154 message_loop_.Run(); |
1155 #else | |
1156 demuxer_init_expected_status_ = DEMUXER_ERROR_NO_SUPPORTED_STREAMS; | |
1157 InitializeDemuxer(); | |
1158 #endif | |
1150 } | 1159 } |
1151 | 1160 |
1152 TEST_F(FFmpegDemuxerTest, Read_EAC3_Audio) { | 1161 TEST_F(FFmpegDemuxerTest, Read_EAC3_Audio) { |
1153 CreateDemuxer("bear-eac3-only-frag.mp4"); | 1162 CreateDemuxer("bear-eac3-only-frag.mp4"); |
1163 #if BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING) | |
1154 InitializeDemuxer(); | 1164 InitializeDemuxer(); |
1155 | 1165 |
1156 // Attempt a read from the audio stream and run the message loop until done. | 1166 // Attempt a read from the audio stream and run the message loop until done. |
1157 DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO); | 1167 DemuxerStream* audio = demuxer_->GetStream(DemuxerStream::AUDIO); |
1158 | 1168 |
1159 // Read the first two frames and check that we are getting expected data | 1169 // Read the first two frames and check that we are getting expected data |
1160 audio->Read(NewReadCB(FROM_HERE, 870, 0, true)); | 1170 audio->Read(NewReadCB(FROM_HERE, 870, 0, true)); |
1161 message_loop_.Run(); | 1171 message_loop_.Run(); |
1162 | 1172 |
1163 audio->Read(NewReadCB(FROM_HERE, 872, 34830, true)); | 1173 audio->Read(NewReadCB(FROM_HERE, 872, 34830, true)); |
1164 message_loop_.Run(); | 1174 message_loop_.Run(); |
1175 #else | |
1176 demuxer_init_expected_status_ = DEMUXER_ERROR_NO_SUPPORTED_STREAMS; | |
1177 InitializeDemuxer(); | |
1178 #endif | |
1165 } | 1179 } |
1166 #endif // ENABLE_AC3_EAC3_AUDIO_DEMUXING | |
1167 | 1180 |
1168 } // namespace media | 1181 } // namespace media |
OLD | NEW |