Update support for missing HIGH profiles and 1080p
The High and ConstrainedHigh profiles are missing from the decoder capabilities. Also level 3.1 doesn't allow 1080p
Bug: webrtc:347724928
Change-Id: I3f33468327d2aaf352fc80f69d2ee31481bafcb5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355001
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42528}
diff --git a/modules/video_coding/codecs/h264/h264.cc b/modules/video_coding/codecs/h264/h264.cc
index 60142c8..b2deda5 100644
--- a/modules/video_coding/codecs/h264/h264.cc
+++ b/modules/video_coding/codecs/h264/h264.cc
@@ -90,17 +90,17 @@
//
// We support both packetization modes 0 (mandatory) and 1 (optional,
// preferred).
- return {CreateH264Format(H264Profile::kProfileBaseline, H264Level::kLevel3_1,
+ return {CreateH264Format(H264Profile::kProfileBaseline, H264Level::kLevel4_2,
"1", add_scalability_modes),
- CreateH264Format(H264Profile::kProfileBaseline, H264Level::kLevel3_1,
+ CreateH264Format(H264Profile::kProfileBaseline, H264Level::kLevel4_2,
"0", add_scalability_modes),
CreateH264Format(H264Profile::kProfileConstrainedBaseline,
- H264Level::kLevel3_1, "1", add_scalability_modes),
+ H264Level::kLevel4_2, "1", add_scalability_modes),
CreateH264Format(H264Profile::kProfileConstrainedBaseline,
- H264Level::kLevel3_1, "0", add_scalability_modes),
- CreateH264Format(H264Profile::kProfileMain, H264Level::kLevel3_1, "1",
+ H264Level::kLevel4_2, "0", add_scalability_modes),
+ CreateH264Format(H264Profile::kProfileMain, H264Level::kLevel4_2, "1",
add_scalability_modes),
- CreateH264Format(H264Profile::kProfileMain, H264Level::kLevel3_1, "0",
+ CreateH264Format(H264Profile::kProfileMain, H264Level::kLevel4_2, "0",
add_scalability_modes)};
}
@@ -111,12 +111,18 @@
std::vector<SdpVideoFormat> supportedCodecs = SupportedH264Codecs();
- // OpenH264 doesn't yet support High Predictive 4:4:4 encoding but it does
- // support decoding.
supportedCodecs.push_back(CreateH264Format(
- H264Profile::kProfilePredictiveHigh444, H264Level::kLevel3_1, "1"));
+ H264Profile::kProfileConstrainedHigh, H264Level::kLevel4_2, "1"));
supportedCodecs.push_back(CreateH264Format(
- H264Profile::kProfilePredictiveHigh444, H264Level::kLevel3_1, "0"));
+ H264Profile::kProfileConstrainedHigh, H264Level::kLevel4_2, "0"));
+ supportedCodecs.push_back(
+ CreateH264Format(H264Profile::kProfileHigh, H264Level::kLevel4_2, "1"));
+ supportedCodecs.push_back(
+ CreateH264Format(H264Profile::kProfileHigh, H264Level::kLevel4_2, "0"));
+ supportedCodecs.push_back(CreateH264Format(
+ H264Profile::kProfilePredictiveHigh444, H264Level::kLevel4_2, "1"));
+ supportedCodecs.push_back(CreateH264Format(
+ H264Profile::kProfilePredictiveHigh444, H264Level::kLevel4_2, "0"));
return supportedCodecs;
}
diff --git a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
index 9c70826..82bc6e3 100644
--- a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
@@ -173,7 +173,7 @@
CodecParameterMap codec_params = {
{cricket::kH264FmtpProfileLevelId,
*H264ProfileLevelIdToString(H264ProfileLevelId(
- config.h264_codec_settings.profile, H264Level::kLevel3_1))},
+ config.h264_codec_settings.profile, H264Level::kLevel4_2))},
{cricket::kH264FmtpPacketizationMode, packetization_mode},
{cricket::kH264FmtpLevelAsymmetryAllowed, "1"}};