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

Unified Diff: media/base/mime_util_internal.cc

Issue 1864743002: Use codec enum values instead of strings to initialize |media_format_map_|. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@enums
Patch Set: rebase Created 4 years, 8 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/base/mime_util_internal.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/mime_util_internal.cc
diff --git a/media/base/mime_util_internal.cc b/media/base/mime_util_internal.cc
index 0d8a46c02fa78adce27d5c7ff5e853e258554362..882ccb7ac490426f4ff298669dabdd299f5e8b66 100644
--- a/media/base/mime_util_internal.cc
+++ b/media/base/mime_util_internal.cc
@@ -252,42 +252,63 @@ void MimeUtil::InitializeMimeTypeMaps() {
// Each call to AddContainerWithCodecs() contains a media type
// (https://en.wikipedia.org/wiki/Media_type) and corresponding media codec(s)
// supported by these types/containers.
-//
-// Strings used as the |codecs_list| only need one valid unambiguous variant for
-// each supported MimeUtil::Codec enum value. Each codec string is parsed and
-// mapped to corresponding MimeUtil::Codec value. See https://crbug.com/461009.
+// TODO(ddorwin): Replace insert() calls with initializer_list when allowed.
void MimeUtil::AddSupportedMediaFormats() {
- const std::string ogg_audio_codecs = "opus,vorbis";
- std::string ogg_video_codecs;
+ CodecSet implicit_codec;
+ CodecSet wav_codecs;
+ wav_codecs.insert(PCM);
+
+ CodecSet ogg_audio_codecs;
+ ogg_audio_codecs.insert(OPUS);
+ ogg_audio_codecs.insert(VORBIS);
+ CodecSet ogg_video_codecs;
#if !defined(OS_ANDROID)
- ogg_video_codecs = "theora";
+ ogg_video_codecs.insert(THEORA);
#endif // !defined(OS_ANDROID)
- std::string ogg_codecs = ogg_audio_codecs;
- if (!ogg_video_codecs.empty())
- ogg_codecs += "," + ogg_video_codecs;
+ CodecSet ogg_codecs(ogg_audio_codecs);
+ ogg_codecs.insert(ogg_video_codecs.begin(), ogg_video_codecs.end());
+
+ CodecSet webm_audio_codecs;
+ webm_audio_codecs.insert(OPUS);
+ webm_audio_codecs.insert(VORBIS);
+ CodecSet webm_video_codecs;
+ webm_video_codecs.insert(VP8);
+ webm_video_codecs.insert(VP9);
+ CodecSet webm_codecs(webm_audio_codecs);
+ webm_codecs.insert(webm_video_codecs.begin(), webm_video_codecs.end());
#if defined(USE_PROPRIETARY_CODECS)
- const std::string aac = "mp4a.66,mp4a.40.2"; // MPEG-2 and MPEG-4 AAC.
- const std::string mp3 = "mp4a.69";
- const std::string avc = "avc1.42E00A";
+ CodecSet mp3_codecs;
+ mp3_codecs.insert(MP3);
+
+ CodecSet aac;
+ aac.insert(MPEG2_AAC);
+ aac.insert(MPEG4_AAC);
- const std::string avc_and_aac = avc + "," + aac;
- std::string mp4_audio_codecs = aac + "," + mp3;
+ CodecSet avc_and_aac(aac);
+ avc_and_aac.insert(H264);
+
+ CodecSet mp4_audio_codecs(aac);
+ mp4_audio_codecs.insert(MP3);
#if BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING)
- mp4_audio_codecs += ",ac-3,ec-3"; // AC-3 and E-AC-3.
+ mp4_audio_codecs.insert(AC3);
+ mp4_audio_codecs.insert(EAC3);
#endif // BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING)
- std::string mp4_video_codecs = avc;
+ CodecSet mp4_video_codecs;
+ mp4_video_codecs.insert(H264);
#if BUILDFLAG(ENABLE_HEVC_DEMUXING)
- mp4_video_codecs += ",hev1.1.6.L93.B0";
+ mp4_video_codecs.insert(HEVC_MAIN);
#endif // BUILDFLAG(ENABLE_HEVC_DEMUXING)
- const std::string mp4_codecs = mp4_video_codecs + "," + mp4_audio_codecs;
+ CodecSet mp4_codecs(mp4_audio_codecs);
+ mp4_codecs.insert(mp4_video_codecs.begin(), mp4_video_codecs.end());
#endif // defined(USE_PROPRIETARY_CODECS)
- AddContainerWithCodecs("audio/wav", "1", false);
- AddContainerWithCodecs("audio/x-wav", "1", false);
- AddContainerWithCodecs("audio/webm", "opus,vorbis", false);
- AddContainerWithCodecs("video/webm", "opus,vorbis,vp8,vp9", false);
+ AddContainerWithCodecs("audio/wav", wav_codecs, false);
+ AddContainerWithCodecs("audio/x-wav", wav_codecs, false);
+ AddContainerWithCodecs("audio/webm", webm_audio_codecs, false);
+ DCHECK(!webm_video_codecs.empty());
+ AddContainerWithCodecs("video/webm", webm_codecs, false);
AddContainerWithCodecs("audio/ogg", ogg_audio_codecs, false);
// video/ogg is only supported if an appropriate video codec is supported.
// Note: This assumes such codecs cannot be later excluded.
@@ -297,10 +318,10 @@ void MimeUtil::AddSupportedMediaFormats() {
AddContainerWithCodecs("application/ogg", ogg_codecs, false);
#if defined(USE_PROPRIETARY_CODECS)
- AddContainerWithCodecs("audio/mpeg", "mp3", true);
- AddContainerWithCodecs("audio/mp3", "", true);
- AddContainerWithCodecs("audio/x-mp3", "", true);
- AddContainerWithCodecs("audio/aac", "", true); // AAC / ADTS
+ AddContainerWithCodecs("audio/mpeg", mp3_codecs, true); // Allow "mp3".
+ AddContainerWithCodecs("audio/mp3", implicit_codec, true);
+ AddContainerWithCodecs("audio/x-mp3", implicit_codec, true);
+ AddContainerWithCodecs("audio/aac", implicit_codec, true); // AAC / ADTS.
AddContainerWithCodecs("audio/mp4", mp4_audio_codecs, true);
DCHECK(!mp4_video_codecs.empty());
AddContainerWithCodecs("video/mp4", mp4_codecs, true);
@@ -317,35 +338,21 @@ void MimeUtil::AddSupportedMediaFormats() {
#if defined(OS_ANDROID)
// HTTP Live Streaming (HLS).
// TODO(ddorwin): Is any MP3 codec string variant included in real queries?
- const std::string hls_codecs = avc_and_aac + "," + mp3;
+ CodecSet hls_codecs(avc_and_aac);
+ hls_codecs.insert(MP3);
AddContainerWithCodecs("application/x-mpegurl", hls_codecs, true);
AddContainerWithCodecs("application/vnd.apple.mpegurl", hls_codecs, true);
#endif // defined(OS_ANDROID)
#endif // defined(USE_PROPRIETARY_CODECS)
}
-// TODO(ddorwin): Replace |codecs_list| with a vector of MimeUtil::Codec values.
-// See https://crbug.com/461009.
void MimeUtil::AddContainerWithCodecs(const std::string& mime_type,
- const std::string& codecs_list,
+ const CodecSet& codecs,
bool is_proprietary_mime_type) {
#if !defined(USE_PROPRIETARY_CODECS)
DCHECK(!is_proprietary_mime_type);
#endif
- std::vector<std::string> codec_strings;
- ParseCodecString(codecs_list, &codec_strings, false);
-
- CodecSet codecs;
- for (const auto& codec_string : codec_strings) {
- DCHECK(!codec_string.empty()) << codecs_list;
- Codec codec = INVALID_CODEC;
- bool is_ambiguous = true;
- CHECK(StringToCodec(codec_string, &codec, &is_ambiguous, false));
- DCHECK(!is_ambiguous) << codec_string;
- codecs.insert(codec);
- }
-
media_format_map_[mime_type] = codecs;
if (is_proprietary_mime_type)
« no previous file with comments | « media/base/mime_util_internal.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698