Chromium Code Reviews| 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 |