diff options
Diffstat (limited to 'chromium/media/base/video_codecs.cc')
-rw-r--r-- | chromium/media/base/video_codecs.cc | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/chromium/media/base/video_codecs.cc b/chromium/media/base/video_codecs.cc index 78a829ce194..6c58bbabd66 100644 --- a/chromium/media/base/video_codecs.cc +++ b/chromium/media/base/video_codecs.cc @@ -9,6 +9,7 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" +#include "base/strings/stringprintf.h" #include "media/base/video_color_space.h" namespace media { @@ -110,6 +111,50 @@ std::string GetProfileName(VideoCodecProfile profile) { return ""; } +std::string BuildH264MimeSuffix(media::VideoCodecProfile profile, + uint8_t level) { + std::string profile_str; + switch (profile) { + case media::VideoCodecProfile::H264PROFILE_BASELINE: + profile_str = "42"; + break; + case media::VideoCodecProfile::H264PROFILE_MAIN: + profile_str = "4d"; + break; + case media::VideoCodecProfile::H264PROFILE_SCALABLEBASELINE: + profile_str = "53"; + break; + case media::VideoCodecProfile::H264PROFILE_SCALABLEHIGH: + profile_str = "56"; + break; + case media::VideoCodecProfile::H264PROFILE_EXTENDED: + profile_str = "58"; + break; + case media::VideoCodecProfile::H264PROFILE_HIGH: + profile_str = "64"; + break; + case media::VideoCodecProfile::H264PROFILE_HIGH10PROFILE: + profile_str = "6e"; + break; + case media::VideoCodecProfile::H264PROFILE_MULTIVIEWHIGH: + profile_str = "76"; + break; + case media::VideoCodecProfile::H264PROFILE_HIGH422PROFILE: + profile_str = "7a"; + break; + case media::VideoCodecProfile::H264PROFILE_STEREOHIGH: + profile_str = "80"; + break; + case media::VideoCodecProfile::H264PROFILE_HIGH444PREDICTIVEPROFILE: + profile_str = "f4"; + break; + default: + return ""; + } + + return base::StringPrintf(".%s%04x", profile_str.c_str(), level); +} + bool ParseNewStyleVp9CodecID(const std::string& codec_id, VideoCodecProfile* profile, uint8_t* level_idc, @@ -889,4 +934,46 @@ void ParseCodec(const std::string& codec_id, codec = kUnknownVideoCodec; } +VideoCodec VideoCodecProfileToVideoCodec(VideoCodecProfile profile) { + switch (profile) { + case VIDEO_CODEC_PROFILE_UNKNOWN: + return kUnknownVideoCodec; + case H264PROFILE_BASELINE: + case H264PROFILE_MAIN: + case H264PROFILE_EXTENDED: + case H264PROFILE_HIGH: + case H264PROFILE_HIGH10PROFILE: + case H264PROFILE_HIGH422PROFILE: + case H264PROFILE_HIGH444PREDICTIVEPROFILE: + case H264PROFILE_SCALABLEBASELINE: + case H264PROFILE_SCALABLEHIGH: + case H264PROFILE_STEREOHIGH: + case H264PROFILE_MULTIVIEWHIGH: + return kCodecH264; + case HEVCPROFILE_MAIN: + case HEVCPROFILE_MAIN10: + case HEVCPROFILE_MAIN_STILL_PICTURE: + return kCodecHEVC; + case VP8PROFILE_ANY: + return kCodecVP8; + case VP9PROFILE_PROFILE0: + case VP9PROFILE_PROFILE1: + case VP9PROFILE_PROFILE2: + case VP9PROFILE_PROFILE3: + return kCodecVP9; + case DOLBYVISION_PROFILE0: + case DOLBYVISION_PROFILE4: + case DOLBYVISION_PROFILE5: + case DOLBYVISION_PROFILE7: + case DOLBYVISION_PROFILE8: + case DOLBYVISION_PROFILE9: + return kCodecDolbyVision; + case THEORAPROFILE_ANY: + return kCodecTheora; + case AV1PROFILE_PROFILE_MAIN: + case AV1PROFILE_PROFILE_HIGH: + case AV1PROFILE_PROFILE_PRO: + return kCodecAV1; + } +} } // namespace media |