| OLD | NEW |
| 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 "media/formats/webm/webm_stream_parser.h" | 5 #include "media/formats/webm/webm_stream_parser.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "media/base/decoder_buffer.h" | 10 #include "media/base/decoder_buffer.h" |
| 11 #include "media/base/demuxer.h" | 11 #include "media/base/demuxer.h" |
| 12 #include "media/base/media_tracks.h" | 12 #include "media/base/media_tracks.h" |
| 13 #include "media/base/mock_media_log.h" | 13 #include "media/base/mock_media_log.h" |
| 14 #include "media/base/stream_parser.h" | 14 #include "media/base/stream_parser.h" |
| 15 #include "media/base/test_data_util.h" | 15 #include "media/base/test_data_util.h" |
| 16 #include "media/base/text_track_config.h" | 16 #include "media/base/text_track_config.h" |
| 17 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
| 18 | 18 |
| 19 using testing::SaveArg; | 19 using testing::SaveArg; |
| 20 using testing::_; | 20 using testing::_; |
| 21 | 21 |
| 22 namespace media { | 22 namespace media { |
| 23 | 23 |
| 24 class WebMStreamParserTest : public testing::Test { | 24 class WebMStreamParserTest : public testing::Test { |
| 25 public: | 25 public: |
| 26 WebMStreamParserTest() | 26 WebMStreamParserTest() {} |
| 27 : media_log_(new testing::StrictMock<MockMediaLog>()) {} | |
| 28 | 27 |
| 29 protected: | 28 protected: |
| 30 void ParseWebMFile(const std::string& filename, | 29 void ParseWebMFile(const std::string& filename, |
| 31 const StreamParser::InitParameters& expected_params) { | 30 const StreamParser::InitParameters& expected_params) { |
| 32 scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile(filename); | 31 scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile(filename); |
| 33 parser_.reset(new WebMStreamParser()); | 32 parser_.reset(new WebMStreamParser()); |
| 34 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb = | 33 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb = |
| 35 base::Bind(&WebMStreamParserTest::OnEncryptedMediaInitData, | 34 base::Bind(&WebMStreamParserTest::OnEncryptedMediaInitData, |
| 36 base::Unretained(this)); | 35 base::Unretained(this)); |
| 37 | 36 |
| 38 EXPECT_CALL(*this, InitCB(_)); | 37 EXPECT_CALL(*this, InitCB(_)); |
| 39 EXPECT_CALL(*this, NewMediaSegmentCB()).Times(testing::AnyNumber()); | 38 EXPECT_CALL(*this, NewMediaSegmentCB()).Times(testing::AnyNumber()); |
| 40 EXPECT_CALL(*this, EndMediaSegmentCB()).Times(testing::AnyNumber()); | 39 EXPECT_CALL(*this, EndMediaSegmentCB()).Times(testing::AnyNumber()); |
| 41 EXPECT_CALL(*this, NewBuffersCB(_)) | 40 EXPECT_CALL(*this, NewBuffersCB(_)) |
| 42 .Times(testing::AnyNumber()) | 41 .Times(testing::AnyNumber()) |
| 43 .WillRepeatedly(testing::Return(true)); | 42 .WillRepeatedly(testing::Return(true)); |
| 44 parser_->Init( | 43 parser_->Init( |
| 45 base::Bind(&WebMStreamParserTest::InitF, base::Unretained(this), | 44 base::Bind(&WebMStreamParserTest::InitF, base::Unretained(this), |
| 46 expected_params), | 45 expected_params), |
| 47 base::Bind(&WebMStreamParserTest::NewConfigCB, base::Unretained(this)), | 46 base::Bind(&WebMStreamParserTest::NewConfigCB, base::Unretained(this)), |
| 48 base::Bind(&WebMStreamParserTest::NewBuffersCB, base::Unretained(this)), | 47 base::Bind(&WebMStreamParserTest::NewBuffersCB, base::Unretained(this)), |
| 49 false, // don't ignore_text_track | 48 false, // don't ignore_text_track |
| 50 encrypted_media_init_data_cb, | 49 encrypted_media_init_data_cb, |
| 51 base::Bind(&WebMStreamParserTest::NewMediaSegmentCB, | 50 base::Bind(&WebMStreamParserTest::NewMediaSegmentCB, |
| 52 base::Unretained(this)), | 51 base::Unretained(this)), |
| 53 base::Bind(&WebMStreamParserTest::EndMediaSegmentCB, | 52 base::Bind(&WebMStreamParserTest::EndMediaSegmentCB, |
| 54 base::Unretained(this)), | 53 base::Unretained(this)), |
| 55 media_log_); | 54 &media_log_); |
| 56 bool result = parser_->Parse(buffer->data(), buffer->data_size()); | 55 bool result = parser_->Parse(buffer->data(), buffer->data_size()); |
| 57 EXPECT_TRUE(result); | 56 EXPECT_TRUE(result); |
| 58 } | 57 } |
| 59 | 58 |
| 60 // Verifies only the detected track counts by track type, then chains to the | 59 // Verifies only the detected track counts by track type, then chains to the |
| 61 // InitCB mock. | 60 // InitCB mock. |
| 62 void InitF(const StreamParser::InitParameters& expected_params, | 61 void InitF(const StreamParser::InitParameters& expected_params, |
| 63 const StreamParser::InitParameters& params) { | 62 const StreamParser::InitParameters& params) { |
| 64 EXPECT_EQ(expected_params.detected_audio_track_count, | 63 EXPECT_EQ(expected_params.detected_audio_track_count, |
| 65 params.detected_audio_track_count); | 64 params.detected_audio_track_count); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 79 return true; | 78 return true; |
| 80 } | 79 } |
| 81 | 80 |
| 82 MOCK_METHOD1(NewBuffersCB, bool(const StreamParser::BufferQueueMap&)); | 81 MOCK_METHOD1(NewBuffersCB, bool(const StreamParser::BufferQueueMap&)); |
| 83 MOCK_METHOD2(OnEncryptedMediaInitData, | 82 MOCK_METHOD2(OnEncryptedMediaInitData, |
| 84 void(EmeInitDataType init_data_type, | 83 void(EmeInitDataType init_data_type, |
| 85 const std::vector<uint8_t>& init_data)); | 84 const std::vector<uint8_t>& init_data)); |
| 86 MOCK_METHOD0(NewMediaSegmentCB, void()); | 85 MOCK_METHOD0(NewMediaSegmentCB, void()); |
| 87 MOCK_METHOD0(EndMediaSegmentCB, void()); | 86 MOCK_METHOD0(EndMediaSegmentCB, void()); |
| 88 | 87 |
| 89 scoped_refptr<testing::StrictMock<MockMediaLog>> media_log_; | 88 testing::StrictMock<MockMediaLog> media_log_; |
| 90 std::unique_ptr<WebMStreamParser> parser_; | 89 std::unique_ptr<WebMStreamParser> parser_; |
| 91 std::unique_ptr<MediaTracks> media_tracks_; | 90 std::unique_ptr<MediaTracks> media_tracks_; |
| 92 }; | 91 }; |
| 93 | 92 |
| 94 TEST_F(WebMStreamParserTest, VerifyMediaTrackMetadata) { | 93 TEST_F(WebMStreamParserTest, VerifyMediaTrackMetadata) { |
| 95 EXPECT_MEDIA_LOG(testing::HasSubstr("Estimating WebM block duration")) | 94 EXPECT_MEDIA_LOG(testing::HasSubstr("Estimating WebM block duration")) |
| 96 .Times(testing::AnyNumber()); | 95 .Times(testing::AnyNumber()); |
| 97 StreamParser::InitParameters params(kInfiniteDuration); | 96 StreamParser::InitParameters params(kInfiniteDuration); |
| 98 params.detected_audio_track_count = 1; | 97 params.detected_audio_track_count = 1; |
| 99 params.detected_video_track_count = 1; | 98 params.detected_video_track_count = 1; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 EXPECT_FLOAT_EQ(mmdata.primary_g.y(), 0.2f); | 186 EXPECT_FLOAT_EQ(mmdata.primary_g.y(), 0.2f); |
| 188 EXPECT_FLOAT_EQ(mmdata.primary_b.x(), 0.1f); | 187 EXPECT_FLOAT_EQ(mmdata.primary_b.x(), 0.1f); |
| 189 EXPECT_FLOAT_EQ(mmdata.primary_b.y(), 0.2f); | 188 EXPECT_FLOAT_EQ(mmdata.primary_b.y(), 0.2f); |
| 190 EXPECT_FLOAT_EQ(mmdata.white_point.x(), 0.1f); | 189 EXPECT_FLOAT_EQ(mmdata.white_point.x(), 0.1f); |
| 191 EXPECT_FLOAT_EQ(mmdata.white_point.y(), 0.2f); | 190 EXPECT_FLOAT_EQ(mmdata.white_point.y(), 0.2f); |
| 192 EXPECT_EQ(mmdata.luminance_max, 40); | 191 EXPECT_EQ(mmdata.luminance_max, 40); |
| 193 EXPECT_EQ(mmdata.luminance_min, 30); | 192 EXPECT_EQ(mmdata.luminance_min, 30); |
| 194 } | 193 } |
| 195 | 194 |
| 196 } // namespace media | 195 } // namespace media |
| OLD | NEW |