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

Unified 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: Yet another attempt to fix that link failure. MEDIA_EXPORT should do it! 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/formats/webm/webm_stream_parser.cc ('k') | media/formats/webm/webm_tracks_parser.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/formats/webm/webm_stream_parser_unittest.cc
diff --git a/media/formats/webm/webm_stream_parser_unittest.cc b/media/formats/webm/webm_stream_parser_unittest.cc
index 0386e8fb06125cc368a1664c3764bba8c4548d19..813d9e70e824e7b3498ce44983343c0f8025c12d 100644
--- a/media/formats/webm/webm_stream_parser_unittest.cc
+++ b/media/formats/webm/webm_stream_parser_unittest.cc
@@ -6,11 +6,13 @@
#include "media/base/decoder_buffer.h"
#include "media/base/media_tracks.h"
#include "media/base/mock_media_log.h"
+#include "media/base/stream_parser.h"
#include "media/base/test_data_util.h"
#include "media/base/text_track_config.h"
#include "media/formats/webm/webm_stream_parser.h"
#include "testing/gtest/include/gtest/gtest.h"
+using testing::SaveArg;
using testing::_;
namespace media {
@@ -21,7 +23,8 @@ class WebMStreamParserTest : public testing::Test {
: media_log_(new testing::StrictMock<MockMediaLog>()) {}
protected:
- void ParseWebMFile(const std::string& filename) {
+ void ParseWebMFile(const std::string& filename,
+ const StreamParser::InitParameters& expected_params) {
scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile(filename);
parser_.reset(new WebMStreamParser());
Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb =
@@ -35,10 +38,11 @@ class WebMStreamParserTest : public testing::Test {
.Times(testing::AnyNumber())
.WillRepeatedly(testing::Return(true));
parser_->Init(
- base::Bind(&WebMStreamParserTest::InitCB, base::Unretained(this)),
+ base::Bind(&WebMStreamParserTest::InitF, base::Unretained(this),
+ expected_params),
base::Bind(&WebMStreamParserTest::NewConfigCB, base::Unretained(this)),
base::Bind(&WebMStreamParserTest::NewBuffersCB, base::Unretained(this)),
- true, // ignore_text_track
+ false, // don't ignore_text_track
encrypted_media_init_data_cb,
base::Bind(&WebMStreamParserTest::NewMediaSegmentCB,
base::Unretained(this)),
@@ -49,6 +53,19 @@ class WebMStreamParserTest : public testing::Test {
EXPECT_TRUE(result);
}
+ // Verifies only the detected track counts by track type, then chains to the
+ // InitCB mock.
+ void InitF(const StreamParser::InitParameters& expected_params,
+ const StreamParser::InitParameters& params) {
+ EXPECT_EQ(expected_params.detected_audio_track_count,
+ params.detected_audio_track_count);
+ EXPECT_EQ(expected_params.detected_video_track_count,
+ params.detected_video_track_count);
+ EXPECT_EQ(expected_params.detected_text_track_count,
+ params.detected_text_track_count);
+ InitCB(params);
+ }
+
MOCK_METHOD1(InitCB, void(const StreamParser::InitParameters& params));
bool NewConfigCB(scoped_ptr<MediaTracks> tracks,
@@ -76,7 +93,11 @@ class WebMStreamParserTest : public testing::Test {
TEST_F(WebMStreamParserTest, VerifyMediaTrackMetadata) {
EXPECT_MEDIA_LOG(testing::HasSubstr("Estimating WebM block duration"))
.Times(testing::AnyNumber());
- ParseWebMFile("bear.webm");
+ StreamParser::InitParameters params(kInfiniteDuration());
+ params.detected_audio_track_count = 1;
+ params.detected_video_track_count = 1;
+ params.detected_text_track_count = 0;
+ ParseWebMFile("bear.webm", params);
EXPECT_NE(media_tracks_.get(), nullptr);
EXPECT_EQ(media_tracks_->tracks().size(), 2u);
@@ -96,4 +117,39 @@ TEST_F(WebMStreamParserTest, VerifyMediaTrackMetadata) {
EXPECT_EQ(audio_track.language(), "und");
}
+TEST_F(WebMStreamParserTest, VerifyDetectedTrack_AudioOnly) {
+ EXPECT_MEDIA_LOG(testing::HasSubstr("Estimating WebM block duration"))
+ .Times(testing::AnyNumber());
+ StreamParser::InitParameters params(kInfiniteDuration());
+ params.detected_audio_track_count = 1;
+ params.detected_video_track_count = 0;
+ params.detected_text_track_count = 0;
+ ParseWebMFile("bear-320x240-audio-only.webm", params);
+ EXPECT_EQ(media_tracks_->tracks().size(), 1u);
+ EXPECT_EQ(media_tracks_->tracks()[0]->type(), MediaTrack::Audio);
+}
+
+TEST_F(WebMStreamParserTest, VerifyDetectedTrack_VideoOnly) {
+ StreamParser::InitParameters params(kInfiniteDuration());
+ params.detected_audio_track_count = 0;
+ params.detected_video_track_count = 1;
+ params.detected_text_track_count = 0;
+ ParseWebMFile("bear-320x240-video-only.webm", params);
+ EXPECT_EQ(media_tracks_->tracks().size(), 1u);
+ EXPECT_EQ(media_tracks_->tracks()[0]->type(), MediaTrack::Video);
+}
+
+TEST_F(WebMStreamParserTest, VerifyDetectedTracks_AVText) {
+ EXPECT_MEDIA_LOG(testing::HasSubstr("Estimating WebM block duration"))
+ .Times(testing::AnyNumber());
+ StreamParser::InitParameters params(kInfiniteDuration());
+ params.detected_audio_track_count = 1;
+ params.detected_video_track_count = 1;
+ params.detected_text_track_count = 1;
+ ParseWebMFile("bear-vp8-webvtt.webm", params);
+ EXPECT_EQ(media_tracks_->tracks().size(), 2u);
+ EXPECT_EQ(media_tracks_->tracks()[0]->type(), MediaTrack::Video);
+ EXPECT_EQ(media_tracks_->tracks()[1]->type(), MediaTrack::Audio);
+}
+
} // namespace media
« no previous file with comments | « media/formats/webm/webm_stream_parser.cc ('k') | media/formats/webm/webm_tracks_parser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698