Recognize m4s as a valid extension for mp4

Closes #331.

Change-Id: Ic4aaa02245b31a0aa4fdfe08212fa3b242cd9262
This commit is contained in:
KongQun Yang 2018-03-01 12:27:19 -08:00
parent 7dd88ca5b2
commit 62bfc1c6c1
2 changed files with 17 additions and 31 deletions

View File

@ -1730,49 +1730,33 @@ MediaContainerName DetermineContainerFromFormatName(
return CONTAINER_WEBM; return CONTAINER_WEBM;
} else if (base::EqualsCaseInsensitiveASCII(format_name, "m4a") || } else if (base::EqualsCaseInsensitiveASCII(format_name, "m4a") ||
base::EqualsCaseInsensitiveASCII(format_name, "m4v") || base::EqualsCaseInsensitiveASCII(format_name, "m4v") ||
base::EqualsCaseInsensitiveASCII(format_name, "m4s") ||
base::EqualsCaseInsensitiveASCII(format_name, "mp4") || base::EqualsCaseInsensitiveASCII(format_name, "mp4") ||
base::EqualsCaseInsensitiveASCII(format_name, "mov")) { base::EqualsCaseInsensitiveASCII(format_name, "mov")) {
return CONTAINER_MOV; return CONTAINER_MOV;
} else if (base::EqualsCaseInsensitiveASCII(format_name, "ts") || } else if (base::EqualsCaseInsensitiveASCII(format_name, "ts") ||
base::EqualsCaseInsensitiveASCII(format_name, "mpeg2ts")) { base::EqualsCaseInsensitiveASCII(format_name, "mpeg2ts")) {
return CONTAINER_MPEG2TS; return CONTAINER_MPEG2TS;
} else if (base::EqualsCaseInsensitiveASCII(format_name, "wvm")) {
return CONTAINER_WVM;
} else if (base::EqualsCaseInsensitiveASCII(format_name, "vtt") ||
base::EqualsCaseInsensitiveASCII(format_name, "webvtt")) {
return CONTAINER_WEBVTT;
} else if (base::EqualsCaseInsensitiveASCII(format_name, "ttml") ||
// Treat xml as ttml.
base::EqualsCaseInsensitiveASCII(format_name, "xml")) {
return CONTAINER_TTML;
} }
return CONTAINER_UNKNOWN; return CONTAINER_UNKNOWN;
} }
MediaContainerName DetermineContainerFromFileName( MediaContainerName DetermineContainerFromFileName(
const std::string& file_name) { const std::string& file_name) {
if (base::EndsWith(file_name, ".webm", const size_t pos = file_name.rfind('.');
base::CompareCase::INSENSITIVE_ASCII)) { if (pos == std::string::npos)
return CONTAINER_WEBM;
} else if (base::EndsWith(file_name, ".mp4",
base::CompareCase::INSENSITIVE_ASCII) ||
base::EndsWith(file_name, ".m4a",
base::CompareCase::INSENSITIVE_ASCII) ||
base::EndsWith(file_name, ".m4v",
base::CompareCase::INSENSITIVE_ASCII)) {
return CONTAINER_MOV;
} else if (base::EndsWith(file_name, ".ts",
base::CompareCase::INSENSITIVE_ASCII)) {
return CONTAINER_MPEG2TS;
} else if (base::EndsWith(file_name, ".wvm",
base::CompareCase::INSENSITIVE_ASCII)) {
return CONTAINER_WVM;
} else if (base::EndsWith(file_name, ".vtt",
base::CompareCase::INSENSITIVE_ASCII)) {
return CONTAINER_WEBVTT;
} else if (base::EndsWith(file_name, ".webvtt",
base::CompareCase::INSENSITIVE_ASCII)) {
return CONTAINER_WEBVTT;
} else if (base::EndsWith(file_name, ".ttml",
base::CompareCase::INSENSITIVE_ASCII)) {
return CONTAINER_TTML;
} else if (base::EndsWith(file_name, ".xml",
base::CompareCase::INSENSITIVE_ASCII)) {
// In our supported containers, only ttml is in xml format.
return CONTAINER_TTML;
}
return CONTAINER_UNKNOWN; return CONTAINER_UNKNOWN;
const std::string& file_extension = file_name.substr(pos + 1);
return DetermineContainerFromFormatName(file_extension);
} }
} // namespace media } // namespace media

View File

@ -88,6 +88,7 @@ TEST(ContainerNamesTest, FromFormatName) {
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("m4a")); EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("m4a"));
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("m4v")); EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("m4v"));
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("M4v")); EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("M4v"));
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("m4s"));
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("mov")); EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("mov"));
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("mp4")); EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("mp4"));
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("Mp4")); EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFormatName("Mp4"));
@ -105,6 +106,7 @@ TEST(ContainerNamesTest, FromFileName) {
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFileName("test.m4a")); EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFileName("test.m4a"));
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFileName("file.m4v")); EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFileName("file.m4v"));
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFileName("a file .m4V")); EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFileName("a file .m4V"));
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFileName("segment.m4s"));
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFileName("2_more-files.mp4")); EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFileName("2_more-files.mp4"));
EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFileName("foo.bar.MP4")); EXPECT_EQ(CONTAINER_MOV, DetermineContainerFromFileName("foo.bar.MP4"));
EXPECT_EQ(CONTAINER_MPEG2TS, DetermineContainerFromFileName("a.ts")); EXPECT_EQ(CONTAINER_MPEG2TS, DetermineContainerFromFileName("a.ts"));