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

Unified Diff: media/formats/webm/webm_tracks_parser_unittest.cc

Issue 213153008: MSE: Parse WebM TrackEntry DefaultDuration field (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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
Index: media/formats/webm/webm_tracks_parser_unittest.cc
diff --git a/media/formats/webm/webm_tracks_parser_unittest.cc b/media/formats/webm/webm_tracks_parser_unittest.cc
index 0f8e3515c3828f5599bc0ce6d685f84a0de54d4d..db3626360251643bcc518e9b30340a52beb561ea 100644
--- a/media/formats/webm/webm_tracks_parser_unittest.cc
+++ b/media/formats/webm/webm_tracks_parser_unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "base/logging.h"
+#include "media/base/channel_layout.h"
#include "media/formats/webm/tracks_builder.h"
#include "media/formats/webm/webm_constants.h"
#include "media/formats/webm/webm_tracks_parser.h"
@@ -48,7 +49,7 @@ TEST_F(WebMTracksParserTest, SubtitleNoNameNoLang) {
TracksBuilder tb;
tb.AddTrack(1, kWebMTrackTypeSubtitlesOrCaptions, 1,
- kWebMCodecSubtitles, "", "");
+ kWebMCodecSubtitles, "", "", -1, -1, -1, -1, -1);
const std::vector<uint8> buf = tb.Finish();
VerifyTextTrackInfo(&buf[0], buf.size(), kTextSubtitles, "", "");
@@ -59,7 +60,7 @@ TEST_F(WebMTracksParserTest, SubtitleYesNameNoLang) {
TracksBuilder tb;
tb.AddTrack(1, kWebMTrackTypeSubtitlesOrCaptions, 1,
- kWebMCodecSubtitles, "Spock", "");
+ kWebMCodecSubtitles, "Spock", "", -1, -1, -1, -1, -1);
const std::vector<uint8> buf = tb.Finish();
VerifyTextTrackInfo(&buf[0], buf.size(), kTextSubtitles, "Spock", "");
@@ -70,7 +71,7 @@ TEST_F(WebMTracksParserTest, SubtitleNoNameYesLang) {
TracksBuilder tb;
tb.AddTrack(1, kWebMTrackTypeSubtitlesOrCaptions, 1,
- kWebMCodecSubtitles, "", "eng");
+ kWebMCodecSubtitles, "", "eng", -1, -1, -1, -1, -1);
const std::vector<uint8> buf = tb.Finish();
VerifyTextTrackInfo(&buf[0], buf.size(), kTextSubtitles, "", "eng");
@@ -81,7 +82,7 @@ TEST_F(WebMTracksParserTest, SubtitleYesNameYesLang) {
TracksBuilder tb;
tb.AddTrack(1, kWebMTrackTypeSubtitlesOrCaptions, 1,
- kWebMCodecSubtitles, "Picard", "fre");
+ kWebMCodecSubtitles, "Picard", "fre", -1, -1, -1, -1, -1);
const std::vector<uint8> buf = tb.Finish();
VerifyTextTrackInfo(&buf[0], buf.size(), kTextSubtitles, "Picard", "fre");
@@ -92,9 +93,9 @@ TEST_F(WebMTracksParserTest, IgnoringTextTracks) {
TracksBuilder tb;
tb.AddTrack(1, kWebMTrackTypeSubtitlesOrCaptions, 1,
- kWebMCodecSubtitles, "Subtitles", "fre");
+ kWebMCodecSubtitles, "Subtitles", "fre", -1, -1, -1, -1, -1);
tb.AddTrack(2, kWebMTrackTypeSubtitlesOrCaptions, 2,
- kWebMCodecSubtitles, "Commentary", "fre");
+ kWebMCodecSubtitles, "Commentary", "fre", -1, -1, -1, -1, -1);
const std::vector<uint8> buf = tb.Finish();
scoped_ptr<WebMTracksParser> parser(new WebMTracksParser(LogCB(), true));
@@ -119,4 +120,60 @@ TEST_F(WebMTracksParserTest, IgnoringTextTracks) {
EXPECT_EQ(parser->text_tracks().size(), 2u);
}
+TEST_F(WebMTracksParserTest, AudioVideoDefaultDurationUnset) {
+ // Other audio/video decoder config fields are necessary in the test
+ // audio/video TrackEntry configurations. This method does only very minimal
+ // verification of their inclusion and parsing; the goal is to confirm
+ // TrackEntry DefaultDuration defaults to -1 if not included in audio or
+ // video TrackEntry.
+ TracksBuilder tb;
+ tb.AddTrack(1, kWebMTrackTypeAudio, 1, "A_VORBIS", "audio", "", -1, -1, -1,
acolwell GONE FROM CHROMIUM 2014/03/26 22:25:32 nit: Should we have AddVideoTrack(), AddAudioTrack
wolenetz 2014/03/27 01:21:43 Done.
+ 2, 8000);
+ tb.AddTrack(2, kWebMTrackTypeVideo, 2, "V_VP8", "video", "", -1, 320, 240,
+ -1, -1);
+ const std::vector<uint8> buf = tb.Finish();
+
+ scoped_ptr<WebMTracksParser> parser(new WebMTracksParser(LogCB(), true));
+ int result = parser->Parse(&buf[0], buf.size());
+ EXPECT_LE(0, result);
+ EXPECT_EQ(static_cast<int>(buf.size()), result);
+
+ EXPECT_EQ(kNoTimestamp(), parser->GetAudioDefaultDuration(1000.0));
acolwell GONE FROM CHROMIUM 2014/03/26 22:25:32 nit: make this a constant so it's a little clearer
wolenetz 2014/03/27 01:21:43 Done.
+ EXPECT_EQ(kNoTimestamp(), parser->GetVideoDefaultDuration(1000.0));
+
+ const VideoDecoderConfig& video_config = parser->video_decoder_config();
+ EXPECT_TRUE(video_config.IsValidConfig());
+ EXPECT_EQ(320, video_config.coded_size().width());
+ EXPECT_EQ(240, video_config.coded_size().height());
+
+ const AudioDecoderConfig& audio_config = parser->audio_decoder_config();
+ EXPECT_TRUE(audio_config.IsValidConfig());
+ EXPECT_EQ(CHANNEL_LAYOUT_STEREO, audio_config.channel_layout());
+ EXPECT_EQ(8000, audio_config.samples_per_second());
+}
+
+TEST_F(WebMTracksParserTest, AudioVideoDefaultDurationSet) {
+ // Confirm audio or video TrackEntry DefaultDuration values are parsed, if
+ // present.
+ TracksBuilder tb;
+ tb.AddTrack(1, kWebMTrackTypeAudio, 1, "A_VORBIS", "audio", "", 12345678,
+ -1, -1, 2, 8000);
+ tb.AddTrack(2, kWebMTrackTypeVideo, 2, "V_VP8", "video", "", 987654321,
+ 320, 240, -1, -1);
+ const std::vector<uint8> buf = tb.Finish();
+
+ scoped_ptr<WebMTracksParser> parser(new WebMTracksParser(LogCB(), true));
+ int result = parser->Parse(&buf[0], buf.size());
+ EXPECT_LE(0, result);
+ EXPECT_EQ(static_cast<int>(buf.size()), result);
+
+ EXPECT_EQ(base::TimeDelta::FromMicroseconds(12000),
+ parser->GetAudioDefaultDuration(1000.0)); // 1 ms resolution
+ EXPECT_EQ(base::TimeDelta::FromMicroseconds(985000),
+ parser->GetVideoDefaultDuration(5000.0)); // 5 ms resolution
+ EXPECT_EQ(kNoTimestamp(), parser->GetAudioDefaultDuration(12346.0));
+ EXPECT_EQ(base::TimeDelta::FromMicroseconds(12345),
+ parser->GetAudioDefaultDuration(12345.0));
+}
+
} // namespace media
« media/formats/webm/webm_tracks_parser.cc ('K') | « media/formats/webm/webm_tracks_parser.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698