Skip to content

Commit

Permalink
Report support for the flac codec in ogg containers.
Browse files Browse the repository at this point in the history
Per official documentation this is a supported combination:
https://wiki.xiph.org/Ogg#Codecs

BUG=689569
TEST=updated canPlayType tests.

Review-Url: https://codereview.chromium.org/2681683004
Cr-Commit-Position: refs/heads/master@{#449816}
  • Loading branch information
dalecurtis authored and Commit bot committed Feb 11, 2017
1 parent c0e5d3d commit 7f7dca6
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 11 deletions.
4 changes: 4 additions & 0 deletions content/browser/media/media_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,10 @@ IN_PROC_BROWSER_TEST_P(MediaTest, AudioBearFlac) {
PlayAudio("bear.flac", GetParam());
}

IN_PROC_BROWSER_TEST_P(MediaTest, AudioBearFlacOgg) {
PlayVideo("bear-flac.ogg", GetParam());
}

IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavAlaw) {
PlayAudio("bear_alaw.wav", GetParam());
}
Expand Down
26 changes: 15 additions & 11 deletions content/browser/media/media_canplaytype_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,6 @@ class MediaCanPlayTypeTest : public MediaBrowserTest {
EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0,opus\"'"));
EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0,opus\"'"));

EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"flac\"'"));
EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp3\"'"));

EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.66\"'"));
Expand Down Expand Up @@ -662,50 +661,55 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_webm) {
IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_ogg) {
EXPECT_EQ(kOggVideoMaybe, CanPlay("'video/ogg'"));
EXPECT_EQ(kOggVideoProbably, CanPlay("'video/ogg; codecs=\"theora\"'"));
EXPECT_EQ(kOggVideoProbably, CanPlay("'video/ogg; codecs=\"theora, flac\"'"));
EXPECT_EQ(kOggVideoProbably, CanPlay("'video/ogg; codecs=\"theora, opus\"'"));
EXPECT_EQ(kOggVideoProbably,
CanPlay("'video/ogg; codecs=\"theora, vorbis\"'"));
EXPECT_EQ(kOggVideoProbably,
CanPlay("'video/ogg; codecs=\"theora, opus\"'"));
EXPECT_EQ(kOggVideoProbably,
CanPlay("'video/ogg; codecs=\"opus, vorbis\"'"));
CanPlay("'video/ogg; codecs=\"flac, opus, vorbis\"'"));

TestOGGUnacceptableCombinations("video/ogg");

EXPECT_EQ(kMaybe, CanPlay("'audio/ogg'"));
EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"vorbis\"'"));
EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"flac\"'"));
EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"opus\"'"));
EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"vorbis, opus\"'"));
EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"vorbis\"'"));
EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"flac, vorbis, opus\"'"));

EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora\"'"));
EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora, flac\"'"));
EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora, opus\"'"));
EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora, vorbis\"'"));

TestOGGUnacceptableCombinations("audio/ogg");

EXPECT_EQ(kMaybe, CanPlay("'application/ogg'"));
EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"flac\"'"));
EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"opus\"'"));
EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"vorbis\"'"));
EXPECT_EQ(kProbably,
CanPlay("'application/ogg; codecs=\"flac, opus, vorbis\"'"));
EXPECT_EQ(kTheoraProbably, CanPlay("'application/ogg; codecs=\"theora\"'"));
EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"opus\"'"));
EXPECT_EQ(kTheoraProbably,
CanPlay("'application/ogg; codecs=\"theora, vorbis\"'"));
CanPlay("'application/ogg; codecs=\"theora, flac\"'"));
EXPECT_EQ(kTheoraProbably,
CanPlay("'application/ogg; codecs=\"theora, opus\"'"));
EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"opus, vorbis\"'"));
EXPECT_EQ(kTheoraProbably,
CanPlay("'application/ogg; codecs=\"theora, vorbis\"'"));

TestOGGUnacceptableCombinations("application/ogg");
}

IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_flac) {
EXPECT_EQ(kProbably, CanPlay("'audio/flac'"));
EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"flac\"'"));

// Only audio/flac is supported.
EXPECT_EQ(kNot, CanPlay("'video/flac'"));
EXPECT_EQ(kNot, CanPlay("'video/x-flac'"));
EXPECT_EQ(kNot, CanPlay("'audio/x-flac'"));
EXPECT_EQ(kNot, CanPlay("'application/x-flac'"));
EXPECT_EQ(kNot, CanPlay("'audio/flac; codecs=\"flac\"'"));

// Currently only flac in a flac container is supported.
EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"flac\"'"));
EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"flac\"'"));
EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"flac\"'"));
Expand Down
2 changes: 2 additions & 0 deletions media/base/mime_util_internal.cc
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ static const CodecIDMappings kUnambiguousCodecStringMap[] = {
#endif
{"vorbis", MimeUtil::VORBIS},
{"opus", MimeUtil::OPUS},
{"flac", MimeUtil::FLAC},
{"vp8", MimeUtil::VP8},
{"vp8.0", MimeUtil::VP8},
{"theora", MimeUtil::THEORA}};
Expand Down Expand Up @@ -223,6 +224,7 @@ void MimeUtil::AddSupportedMediaFormats() {
wav_codecs.insert(PCM);

CodecSet ogg_audio_codecs;
ogg_audio_codecs.insert(FLAC);
ogg_audio_codecs.insert(OPUS);
ogg_audio_codecs.insert(VORBIS);
CodecSet ogg_video_codecs;
Expand Down
Binary file added media/test/data/bear-flac.ogg
Binary file not shown.

0 comments on commit 7f7dca6

Please sign in to comment.