Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: media/filters/ffmpeg_demuxer_unittest.cc

Issue 1735003004: Implement reading of media track info from WebM and MP4 containers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@demuxer-tracks2
Patch Set: Mark WebMStreamParser with MEDIA_EXPORT to allow usage in unit tests Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 return base::Bind(&FFmpegDemuxerTest::OnReadDone, 201 return base::Bind(&FFmpegDemuxerTest::OnReadDone,
202 base::Unretained(this), 202 base::Unretained(this),
203 location, 203 location,
204 read_expectation); 204 read_expectation);
205 } 205 }
206 206
207 MOCK_METHOD2(OnEncryptedMediaInitData, 207 MOCK_METHOD2(OnEncryptedMediaInitData,
208 void(EmeInitDataType init_data_type, 208 void(EmeInitDataType init_data_type,
209 const std::vector<uint8_t>& init_data)); 209 const std::vector<uint8_t>& init_data));
210 210
211 void OnMediaTracksUpdated(scoped_ptr<MediaTracks> tracks) {} 211 void OnMediaTracksUpdated(scoped_ptr<MediaTracks> tracks) {
212 CHECK(tracks.get());
213 media_tracks_ = std::move(tracks);
214 }
212 215
213 // Accessor to demuxer internals. 216 // Accessor to demuxer internals.
214 void set_duration_known(bool duration_known) { 217 void set_duration_known(bool duration_known) {
215 demuxer_->duration_known_ = duration_known; 218 demuxer_->duration_known_ = duration_known;
216 } 219 }
217 220
218 bool IsStreamStopped(DemuxerStream::Type type) { 221 bool IsStreamStopped(DemuxerStream::Type type) {
219 DemuxerStream* stream = demuxer_->GetStream(type); 222 DemuxerStream* stream = demuxer_->GetStream(type);
220 CHECK(stream); 223 CHECK(stream);
221 return !static_cast<FFmpegDemuxerStream*>(stream)->demuxer_; 224 return !static_cast<FFmpegDemuxerStream*>(stream)->demuxer_;
222 } 225 }
223 226
224 // Fixture members. 227 // Fixture members.
225 scoped_ptr<FileDataSource> data_source_; 228 scoped_ptr<FileDataSource> data_source_;
226 scoped_ptr<FFmpegDemuxer> demuxer_; 229 scoped_ptr<FFmpegDemuxer> demuxer_;
227 StrictMock<MockDemuxerHost> host_; 230 StrictMock<MockDemuxerHost> host_;
231 scoped_ptr<MediaTracks> media_tracks_;
228 base::MessageLoop message_loop_; 232 base::MessageLoop message_loop_;
229 233
230 AVFormatContext* format_context() { 234 AVFormatContext* format_context() {
231 return demuxer_->glue_->format_context(); 235 return demuxer_->glue_->format_context();
232 } 236 }
233 237
234 int preferred_seeking_stream_index() const { 238 int preferred_seeking_stream_index() const {
235 return demuxer_->preferred_stream_for_seeking_.first; 239 return demuxer_->preferred_stream_for_seeking_.first;
236 } 240 }
237 241
(...skipping 945 matching lines...) Expand 10 before | Expand all | Expand 10 after
1183 audio->Read(NewReadCB(FROM_HERE, 870, 0, true)); 1187 audio->Read(NewReadCB(FROM_HERE, 870, 0, true));
1184 message_loop_.Run(); 1188 message_loop_.Run();
1185 1189
1186 audio->Read(NewReadCB(FROM_HERE, 872, 34830, true)); 1190 audio->Read(NewReadCB(FROM_HERE, 872, 34830, true));
1187 message_loop_.Run(); 1191 message_loop_.Run();
1188 #else 1192 #else
1189 InitializeDemuxerAndExpectPipelineStatus(DEMUXER_ERROR_NO_SUPPORTED_STREAMS); 1193 InitializeDemuxerAndExpectPipelineStatus(DEMUXER_ERROR_NO_SUPPORTED_STREAMS);
1190 #endif 1194 #endif
1191 } 1195 }
1192 1196
1197 TEST_F(FFmpegDemuxerTest, Read_Mp4_Media_Track_Info) {
1198 CreateDemuxer("bear.mp4");
1199 InitializeDemuxer();
1200
1201 EXPECT_EQ(media_tracks_->tracks().size(), 2u);
1202
1203 const MediaTrack& audio_track = *(media_tracks_->tracks()[0]);
1204 EXPECT_EQ(audio_track.type(), MediaTrack::Audio);
1205 EXPECT_EQ(audio_track.id(), "1");
1206 EXPECT_EQ(audio_track.kind(), "main");
1207 EXPECT_EQ(audio_track.label(), "GPAC ISO Audio Handler");
1208 EXPECT_EQ(audio_track.language(), "und");
1209
1210 const MediaTrack& video_track = *(media_tracks_->tracks()[1]);
1211 EXPECT_EQ(video_track.type(), MediaTrack::Video);
1212 EXPECT_EQ(video_track.id(), "2");
1213 EXPECT_EQ(video_track.kind(), "main");
1214 EXPECT_EQ(video_track.label(), "GPAC ISO Video Handler");
1215 EXPECT_EQ(video_track.language(), "und");
1216 }
1217
1193 #endif // defined(USE_PROPRIETARY_CODECS) 1218 #endif // defined(USE_PROPRIETARY_CODECS)
1194 1219
1220 TEST_F(FFmpegDemuxerTest, Read_Webm_Media_Track_Info) {
1221 CreateDemuxer("bear.webm");
1222 InitializeDemuxer();
1223
1224 EXPECT_EQ(media_tracks_->tracks().size(), 2u);
1225
1226 const MediaTrack& video_track = *(media_tracks_->tracks()[0]);
1227 EXPECT_EQ(video_track.type(), MediaTrack::Video);
1228 EXPECT_EQ(video_track.id(), "1");
1229 EXPECT_EQ(video_track.kind(), "main");
1230 EXPECT_EQ(video_track.label(), "");
1231 EXPECT_EQ(video_track.language(), "");
1232
1233 const MediaTrack& audio_track = *(media_tracks_->tracks()[1]);
1234 EXPECT_EQ(audio_track.type(), MediaTrack::Audio);
1235 EXPECT_EQ(audio_track.id(), "2");
1236 EXPECT_EQ(audio_track.kind(), "main");
1237 EXPECT_EQ(audio_track.label(), "");
1238 EXPECT_EQ(audio_track.language(), "");
1239 }
1240
1195 } // namespace media 1241 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698