summaryrefslogtreecommitdiff
path: root/chromium/media/base/video_codecs.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/base/video_codecs.cc')
-rw-r--r--chromium/media/base/video_codecs.cc87
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