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

Side by Side Diff: media/formats/mp4/mp4_stream_parser_unittest.cc

Issue 1567783005: Run ac3, eac3 and hevc unit tests in all configs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ac3-eac3-passthrough
Patch Set: rebase Created 4 years, 11 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <string> 9 #include <string>
10 10
(...skipping 28 matching lines...) Expand all
39 } 39 }
40 40
41 MATCHER_P(AudioCodecLog, codec_string, "") { 41 MATCHER_P(AudioCodecLog, codec_string, "") {
42 return CONTAINS_STRING(arg, "Audio codec: " + std::string(codec_string)); 42 return CONTAINS_STRING(arg, "Audio codec: " + std::string(codec_string));
43 } 43 }
44 44
45 MATCHER(AuxInfoUnavailableLog, "") { 45 MATCHER(AuxInfoUnavailableLog, "") {
46 return CONTAINS_STRING(arg, "Aux Info is not available."); 46 return CONTAINS_STRING(arg, "Aux Info is not available.");
47 } 47 }
48 48
49 MATCHER_P(ErrorLog, error_string, "") {
50 return CONTAINS_STRING(arg, error_string);
51 }
52
49 class MP4StreamParserTest : public testing::Test { 53 class MP4StreamParserTest : public testing::Test {
50 public: 54 public:
51 MP4StreamParserTest() 55 MP4StreamParserTest()
52 : media_log_(new StrictMock<MockMediaLog>()), 56 : media_log_(new StrictMock<MockMediaLog>()),
53 configs_received_(false), 57 configs_received_(false),
54 lower_bound_( 58 lower_bound_(
55 DecodeTimestamp::FromPresentationTime(base::TimeDelta::Max())) { 59 DecodeTimestamp::FromPresentationTime(base::TimeDelta::Max())) {
56 std::set<int> audio_object_types; 60 std::set<int> audio_object_types;
57 audio_object_types.insert(kISO_14496_3); 61 audio_object_types.insert(kISO_14496_3);
58 parser_.reset(new MP4StreamParser(audio_object_types, false)); 62 parser_.reset(new MP4StreamParser(audio_object_types, false));
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 EXPECT_FALSE(AppendDataInPieces(buffer->data(), buffer->data_size(), 512)); 297 EXPECT_FALSE(AppendDataInPieces(buffer->data(), buffer->data_size(), 512));
294 } 298 }
295 299
296 // Test a file where all video samples start with an Access Unit 300 // Test a file where all video samples start with an Access Unit
297 // Delimiter (AUD) NALU. 301 // Delimiter (AUD) NALU.
298 TEST_F(MP4StreamParserTest, VideoSamplesStartWithAUDs) { 302 TEST_F(MP4StreamParserTest, VideoSamplesStartWithAUDs) {
299 EXPECT_MEDIA_LOG(VideoCodecLog("avc1.4d4028")); 303 EXPECT_MEDIA_LOG(VideoCodecLog("avc1.4d4028"));
300 ParseMP4File("bear-1280x720-av_with-aud-nalus_frag.mp4", 512); 304 ParseMP4File("bear-1280x720-av_with-aud-nalus_frag.mp4", 512);
301 } 305 }
302 306
307 TEST_F(MP4StreamParserTest, HEVC_in_MP4_container) {
308 bool expect_success = true;
ddorwin 2016/01/23 00:38:56 nit: Might be better for symmetry to put this insi
servolk 2016/02/10 18:58:50 Done (fixed also the inverse logic below for consi
303 #if BUILDFLAG(ENABLE_HEVC_DEMUXING) 309 #if BUILDFLAG(ENABLE_HEVC_DEMUXING)
304 TEST_F(MP4StreamParserTest, HEVC_in_MP4_container) { 310 EXPECT_MEDIA_LOG(VideoCodecLog("hevc"));
ddorwin 2016/01/23 00:38:56 Is there a reason we don't have these for the audi
servolk 2016/02/10 18:58:50 In case of HEVC we do some trivial parsing of the
311 #else
312 expect_success = false;
313 EXPECT_MEDIA_LOG(ErrorLog("Parse unsupported video format hev1"));
314 #endif
305 InitializeParserAndExpectLiveness(DemuxerStream::LIVENESS_RECORDED); 315 InitializeParserAndExpectLiveness(DemuxerStream::LIVENESS_RECORDED);
306 scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile("bear-hevc-frag.mp4"); 316 scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile("bear-hevc-frag.mp4");
307 EXPECT_MEDIA_LOG(VideoCodecLog("hevc")); 317 EXPECT_EQ(expect_success,
308 EXPECT_TRUE(AppendDataInPieces(buffer->data(), buffer->data_size(), 512)); 318 AppendDataInPieces(buffer->data(), buffer->data_size(), 512));
309 } 319 }
310 #endif
311 320
312 TEST_F(MP4StreamParserTest, CENC) { 321 TEST_F(MP4StreamParserTest, CENC) {
313 // Encrypted test mp4 files have non-zero duration and are treated as 322 // Encrypted test mp4 files have non-zero duration and are treated as
314 // recorded streams. 323 // recorded streams.
315 InitializeParserAndExpectLiveness(DemuxerStream::LIVENESS_RECORDED); 324 InitializeParserAndExpectLiveness(DemuxerStream::LIVENESS_RECORDED);
316 325
317 scoped_refptr<DecoderBuffer> buffer = 326 scoped_refptr<DecoderBuffer> buffer =
318 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); 327 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4");
319 EXPECT_MEDIA_LOG(VideoCodecLog("avc1.6401f")); 328 EXPECT_MEDIA_LOG(VideoCodecLog("avc1.6401f"));
320 EXPECT_TRUE(AppendDataInPieces(buffer->data(), buffer->data_size(), 512)); 329 EXPECT_TRUE(AppendDataInPieces(buffer->data(), buffer->data_size(), 512));
(...skipping 14 matching lines...) Expand all
335 InitializeParserAndExpectLiveness(DemuxerStream::LIVENESS_RECORDED); 344 InitializeParserAndExpectLiveness(DemuxerStream::LIVENESS_RECORDED);
336 345
337 scoped_refptr<DecoderBuffer> buffer = 346 scoped_refptr<DecoderBuffer> buffer =
338 ReadTestDataFile("bear-640x360-non_square_pixel-with_pasp.mp4"); 347 ReadTestDataFile("bear-640x360-non_square_pixel-with_pasp.mp4");
339 348
340 EXPECT_MEDIA_LOG(VideoCodecLog("avc1.6401e")); 349 EXPECT_MEDIA_LOG(VideoCodecLog("avc1.6401e"));
341 EXPECT_TRUE(AppendDataInPieces(buffer->data(), buffer->data_size(), 512)); 350 EXPECT_TRUE(AppendDataInPieces(buffer->data(), buffer->data_size(), 512));
342 EXPECT_EQ(gfx::Size(639, 360), video_decoder_config_.natural_size()); 351 EXPECT_EQ(gfx::Size(639, 360), video_decoder_config_.natural_size());
343 } 352 }
344 353
345 #if BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING)
346 TEST_F(MP4StreamParserTest, DemuxingAC3) { 354 TEST_F(MP4StreamParserTest, DemuxingAC3) {
347 std::set<int> audio_object_types; 355 std::set<int> audio_object_types;
348 audio_object_types.insert(kAC3); 356 audio_object_types.insert(kAC3);
349 parser_.reset(new MP4StreamParser(audio_object_types, false)); 357 parser_.reset(new MP4StreamParser(audio_object_types, false));
358
359 bool expect_success = true;
360 #if !BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING)
361 expect_success = false;
362 EXPECT_MEDIA_LOG(ErrorLog("Unsupported audio format 0x61632d33 in stsd box"));
363 #endif
364
350 InitializeParserAndExpectLiveness(DemuxerStream::LIVENESS_RECORDED); 365 InitializeParserAndExpectLiveness(DemuxerStream::LIVENESS_RECORDED);
351 scoped_refptr<DecoderBuffer> buffer = 366 scoped_refptr<DecoderBuffer> buffer =
352 ReadTestDataFile("bear-ac3-only-frag.mp4"); 367 ReadTestDataFile("bear-ac3-only-frag.mp4");
353 EXPECT_TRUE(AppendDataInPieces(buffer->data(), buffer->data_size(), 512)); 368 EXPECT_EQ(expect_success,
369 AppendDataInPieces(buffer->data(), buffer->data_size(), 512));
354 } 370 }
355 371
356 TEST_F(MP4StreamParserTest, DemuxingEAC3) { 372 TEST_F(MP4StreamParserTest, DemuxingEAC3) {
357 std::set<int> audio_object_types; 373 std::set<int> audio_object_types;
358 audio_object_types.insert(kEAC3); 374 audio_object_types.insert(kEAC3);
359 parser_.reset(new MP4StreamParser(audio_object_types, false)); 375 parser_.reset(new MP4StreamParser(audio_object_types, false));
376
377 bool expect_success = true;
378 #if !BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING)
379 expect_success = false;
380 EXPECT_MEDIA_LOG(ErrorLog("Unsupported audio format 0x65632d33 in stsd box"));
381 #endif
382
360 InitializeParserAndExpectLiveness(DemuxerStream::LIVENESS_RECORDED); 383 InitializeParserAndExpectLiveness(DemuxerStream::LIVENESS_RECORDED);
361 scoped_refptr<DecoderBuffer> buffer = 384 scoped_refptr<DecoderBuffer> buffer =
362 ReadTestDataFile("bear-eac3-only-frag.mp4"); 385 ReadTestDataFile("bear-eac3-only-frag.mp4");
363 EXPECT_TRUE(AppendDataInPieces(buffer->data(), buffer->data_size(), 512)); 386 EXPECT_EQ(expect_success,
387 AppendDataInPieces(buffer->data(), buffer->data_size(), 512));
364 } 388 }
365 #endif
366 389
367 } // namespace mp4 390 } // namespace mp4
368 } // namespace media 391 } // namespace media
OLDNEW
« media/filters/ffmpeg_demuxer_unittest.cc ('K') | « media/filters/ffmpeg_demuxer_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698