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

Side by Side Diff: media/formats/webm/webm_stream_parser_unittest.cc

Issue 1826583003: MSE: Record counts of detected MSE audio, video and text tracks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased, addressed all comments, includes basic webm and mp4 A/V/T detection tests Created 4 years, 8 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "media/base/decoder_buffer.h" 6 #include "media/base/decoder_buffer.h"
7 #include "media/base/media_tracks.h" 7 #include "media/base/media_tracks.h"
8 #include "media/base/mock_media_log.h" 8 #include "media/base/mock_media_log.h"
9 #include "media/base/stream_parser.h"
9 #include "media/base/test_data_util.h" 10 #include "media/base/test_data_util.h"
10 #include "media/base/text_track_config.h" 11 #include "media/base/text_track_config.h"
11 #include "media/formats/webm/webm_stream_parser.h" 12 #include "media/formats/webm/webm_stream_parser.h"
12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
13 14
15 using testing::SaveArg;
14 using testing::_; 16 using testing::_;
15 17
16 namespace media { 18 namespace media {
17 19
18 class WebMStreamParserTest : public testing::Test { 20 class WebMStreamParserTest : public testing::Test {
19 public: 21 public:
20 WebMStreamParserTest() 22 WebMStreamParserTest()
21 : media_log_(new testing::StrictMock<MockMediaLog>()) {} 23 : media_log_(new testing::StrictMock<MockMediaLog>()),
24 params_(base::TimeDelta()) {}
22 25
23 protected: 26 protected:
24 void ParseWebMFile(const std::string& filename) { 27 void ParseWebMFile(const std::string& filename) {
25 scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile(filename); 28 scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile(filename);
26 parser_.reset(new WebMStreamParser()); 29 parser_.reset(new WebMStreamParser());
27 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb = 30 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb =
28 base::Bind(&WebMStreamParserTest::OnEncryptedMediaInitData, 31 base::Bind(&WebMStreamParserTest::OnEncryptedMediaInitData,
29 base::Unretained(this)); 32 base::Unretained(this));
30 33
31 EXPECT_CALL(*this, InitCB(_)); 34 EXPECT_CALL(*this, InitCB(_)).WillOnce(SaveArg<0>(&params_));
32 EXPECT_CALL(*this, NewMediaSegmentCB()).Times(testing::AnyNumber()); 35 EXPECT_CALL(*this, NewMediaSegmentCB()).Times(testing::AnyNumber());
33 EXPECT_CALL(*this, EndMediaSegmentCB()).Times(testing::AnyNumber()); 36 EXPECT_CALL(*this, EndMediaSegmentCB()).Times(testing::AnyNumber());
34 EXPECT_CALL(*this, NewBuffersCB(_, _, _)) 37 EXPECT_CALL(*this, NewBuffersCB(_, _, _))
35 .Times(testing::AnyNumber()) 38 .Times(testing::AnyNumber())
36 .WillRepeatedly(testing::Return(true)); 39 .WillRepeatedly(testing::Return(true));
37 parser_->Init( 40 parser_->Init(
38 base::Bind(&WebMStreamParserTest::InitCB, base::Unretained(this)), 41 base::Bind(&WebMStreamParserTest::InitCB, base::Unretained(this)),
39 base::Bind(&WebMStreamParserTest::NewConfigCB, base::Unretained(this)), 42 base::Bind(&WebMStreamParserTest::NewConfigCB, base::Unretained(this)),
40 base::Bind(&WebMStreamParserTest::NewBuffersCB, base::Unretained(this)), 43 base::Bind(&WebMStreamParserTest::NewBuffersCB, base::Unretained(this)),
41 true, // ignore_text_track 44 false, // don't ignore_text_track
42 encrypted_media_init_data_cb, 45 encrypted_media_init_data_cb,
43 base::Bind(&WebMStreamParserTest::NewMediaSegmentCB, 46 base::Bind(&WebMStreamParserTest::NewMediaSegmentCB,
44 base::Unretained(this)), 47 base::Unretained(this)),
45 base::Bind(&WebMStreamParserTest::EndMediaSegmentCB, 48 base::Bind(&WebMStreamParserTest::EndMediaSegmentCB,
46 base::Unretained(this)), 49 base::Unretained(this)),
47 media_log_); 50 media_log_);
48 bool result = parser_->Parse(buffer->data(), buffer->data_size()); 51 bool result = parser_->Parse(buffer->data(), buffer->data_size());
49 EXPECT_TRUE(result); 52 EXPECT_TRUE(result);
50 } 53 }
51 54
(...skipping 12 matching lines...) Expand all
64 const StreamParser::TextBufferQueueMap&)); 67 const StreamParser::TextBufferQueueMap&));
65 MOCK_METHOD2(OnEncryptedMediaInitData, 68 MOCK_METHOD2(OnEncryptedMediaInitData,
66 void(EmeInitDataType init_data_type, 69 void(EmeInitDataType init_data_type,
67 const std::vector<uint8_t>& init_data)); 70 const std::vector<uint8_t>& init_data));
68 MOCK_METHOD0(NewMediaSegmentCB, void()); 71 MOCK_METHOD0(NewMediaSegmentCB, void());
69 MOCK_METHOD0(EndMediaSegmentCB, void()); 72 MOCK_METHOD0(EndMediaSegmentCB, void());
70 73
71 scoped_refptr<testing::StrictMock<MockMediaLog>> media_log_; 74 scoped_refptr<testing::StrictMock<MockMediaLog>> media_log_;
72 scoped_ptr<WebMStreamParser> parser_; 75 scoped_ptr<WebMStreamParser> parser_;
73 scoped_ptr<MediaTracks> media_tracks_; 76 scoped_ptr<MediaTracks> media_tracks_;
77 StreamParser::InitParameters params_;
74 }; 78 };
75 79
76 TEST_F(WebMStreamParserTest, VerifyMediaTrackMetadata) { 80 TEST_F(WebMStreamParserTest, VerifyMediaTrackMetadata) {
77 EXPECT_MEDIA_LOG(testing::HasSubstr("Estimating WebM block duration")) 81 EXPECT_MEDIA_LOG(testing::HasSubstr("Estimating WebM block duration"))
78 .Times(testing::AnyNumber()); 82 .Times(testing::AnyNumber());
79 ParseWebMFile("bear.webm"); 83 ParseWebMFile("bear.webm");
80 EXPECT_NE(media_tracks_.get(), nullptr); 84 EXPECT_NE(media_tracks_.get(), nullptr);
81 85
82 EXPECT_EQ(media_tracks_->tracks().size(), 2u); 86 EXPECT_EQ(media_tracks_->tracks().size(), 2u);
83 87
84 const MediaTrack& video_track = *(media_tracks_->tracks()[0]); 88 const MediaTrack& video_track = *(media_tracks_->tracks()[0]);
85 EXPECT_EQ(video_track.type(), MediaTrack::Video); 89 EXPECT_EQ(video_track.type(), MediaTrack::Video);
86 EXPECT_EQ(video_track.id(), "1"); 90 EXPECT_EQ(video_track.id(), "1");
87 EXPECT_EQ(video_track.kind(), "main"); 91 EXPECT_EQ(video_track.kind(), "main");
88 EXPECT_EQ(video_track.label(), ""); 92 EXPECT_EQ(video_track.label(), "");
89 EXPECT_EQ(video_track.language(), "und"); 93 EXPECT_EQ(video_track.language(), "und");
90 94
91 const MediaTrack& audio_track = *(media_tracks_->tracks()[1]); 95 const MediaTrack& audio_track = *(media_tracks_->tracks()[1]);
92 EXPECT_EQ(audio_track.type(), MediaTrack::Audio); 96 EXPECT_EQ(audio_track.type(), MediaTrack::Audio);
93 EXPECT_EQ(audio_track.id(), "2"); 97 EXPECT_EQ(audio_track.id(), "2");
94 EXPECT_EQ(audio_track.kind(), "main"); 98 EXPECT_EQ(audio_track.kind(), "main");
95 EXPECT_EQ(audio_track.label(), ""); 99 EXPECT_EQ(audio_track.label(), "");
96 EXPECT_EQ(audio_track.language(), "und"); 100 EXPECT_EQ(audio_track.language(), "und");
97 } 101 }
98 102
103 TEST_F(WebMStreamParserTest, VerifyDetectedTrack_AudioOnly) {
104 EXPECT_MEDIA_LOG(testing::HasSubstr("Estimating WebM block duration"))
105 .Times(testing::AnyNumber());
106 ParseWebMFile("bear-320x240-audio-only.webm");
107 EXPECT_EQ(media_tracks_->tracks().size(), 1u);
108 EXPECT_EQ(media_tracks_->tracks()[0]->type(), MediaTrack::Audio);
109 EXPECT_EQ(params_.detected_audio_track_count, 1);
110 EXPECT_EQ(params_.detected_video_track_count, 0);
111 EXPECT_EQ(params_.detected_text_track_count, 0);
112 }
113
114 TEST_F(WebMStreamParserTest, VerifyDetectedTrack_VideoOnly) {
115 ParseWebMFile("bear-320x240-video-only.webm");
116 EXPECT_EQ(media_tracks_->tracks().size(), 1u);
117 EXPECT_EQ(media_tracks_->tracks()[0]->type(), MediaTrack::Video);
118 EXPECT_EQ(params_.detected_audio_track_count, 0);
119 EXPECT_EQ(params_.detected_video_track_count, 1);
120 EXPECT_EQ(params_.detected_text_track_count, 0);
121 }
122
123 TEST_F(WebMStreamParserTest, VerifyDetectedTracks_AVText) {
124 EXPECT_MEDIA_LOG(testing::HasSubstr("Estimating WebM block duration"))
125 .Times(testing::AnyNumber());
126 ParseWebMFile("bear-vp8-webvtt.webm");
127 EXPECT_EQ(media_tracks_->tracks().size(), 2u);
128 EXPECT_EQ(media_tracks_->tracks()[0]->type(), MediaTrack::Video);
129 EXPECT_EQ(media_tracks_->tracks()[1]->type(), MediaTrack::Audio);
130 EXPECT_EQ(params_.detected_audio_track_count, 1);
131 EXPECT_EQ(params_.detected_video_track_count, 1);
132 EXPECT_EQ(params_.detected_text_track_count, 1);
133 }
134
99 } // namespace media 135 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698