Add support for more scalability modes (1.5:1 resolution ratio).

Added modes:
- S2T1h
- S2T2h
- S2T3h
- S3T1h
- S3T2h
- S3T3h

Bug: webrtc:13960
Change-Id: I618a30c68b0ce1609847ee33a2298fe8fa0720c9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/273664
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37968}
This commit is contained in:
Åsa Persson
2022-08-31 09:46:41 +02:00
committed by WebRTC LUCI CQ
parent 74195b2b44
commit ecfe8da46b
8 changed files with 148 additions and 12 deletions

View File

@ -71,16 +71,28 @@ absl::optional<ScalabilityMode> ScalabilityModeFromString(
if (mode_string == "S2T1")
return ScalabilityMode::kS2T1;
if (mode_string == "S2T1h")
return ScalabilityMode::kS2T1h;
if (mode_string == "S2T2")
return ScalabilityMode::kS2T2;
if (mode_string == "S2T2h")
return ScalabilityMode::kS2T2h;
if (mode_string == "S2T3")
return ScalabilityMode::kS2T3;
if (mode_string == "S2T3h")
return ScalabilityMode::kS2T3h;
if (mode_string == "S3T1")
return ScalabilityMode::kS3T1;
if (mode_string == "S3T1h")
return ScalabilityMode::kS3T1h;
if (mode_string == "S3T2")
return ScalabilityMode::kS3T2;
if (mode_string == "S3T2h")
return ScalabilityMode::kS3T2h;
if (mode_string == "S3T3")
return ScalabilityMode::kS3T3;
if (mode_string == "S3T3h")
return ScalabilityMode::kS3T3h;
return absl::nullopt;
}
@ -123,11 +135,17 @@ InterLayerPredMode ScalabilityModeToInterLayerPredMode(
case ScalabilityMode::kL3T3_KEY:
return InterLayerPredMode::kOnKeyPic;
case ScalabilityMode::kS2T1:
case ScalabilityMode::kS2T1h:
case ScalabilityMode::kS2T2:
case ScalabilityMode::kS2T2h:
case ScalabilityMode::kS2T3:
case ScalabilityMode::kS2T3h:
case ScalabilityMode::kS3T1:
case ScalabilityMode::kS3T1h:
case ScalabilityMode::kS3T2:
case ScalabilityMode::kS3T2h:
case ScalabilityMode::kS3T3:
case ScalabilityMode::kS3T3h:
return InterLayerPredMode::kOff;
}
RTC_CHECK_NOTREACHED();
@ -161,12 +179,18 @@ int ScalabilityModeToNumSpatialLayers(ScalabilityMode scalability_mode) {
case ScalabilityMode::kL3T3_KEY:
return 3;
case ScalabilityMode::kS2T1:
case ScalabilityMode::kS2T1h:
case ScalabilityMode::kS2T2:
case ScalabilityMode::kS2T2h:
case ScalabilityMode::kS2T3:
case ScalabilityMode::kS2T3h:
return 2;
case ScalabilityMode::kS3T1:
case ScalabilityMode::kS3T1h:
case ScalabilityMode::kS3T2:
case ScalabilityMode::kS3T2h:
case ScalabilityMode::kS3T3:
case ScalabilityMode::kS3T3h:
return 3;
}
RTC_CHECK_NOTREACHED();
@ -206,13 +230,19 @@ int ScalabilityModeToNumTemporalLayers(ScalabilityMode scalability_mode) {
case ScalabilityMode::kL3T3_KEY:
return 3;
case ScalabilityMode::kS2T1:
case ScalabilityMode::kS2T1h:
case ScalabilityMode::kS3T1:
case ScalabilityMode::kS3T1h:
return 1;
case ScalabilityMode::kS2T2:
case ScalabilityMode::kS2T2h:
case ScalabilityMode::kS3T2:
case ScalabilityMode::kS3T2h:
return 2;
case ScalabilityMode::kS2T3:
case ScalabilityMode::kS2T3h:
case ScalabilityMode::kS3T3:
case ScalabilityMode::kS3T3h:
return 3;
}
RTC_CHECK_NOTREACHED();
@ -251,6 +281,12 @@ absl::optional<ScalabilityModeResolutionRatio> ScalabilityModeToResolutionRatio(
case ScalabilityMode::kL3T1h:
case ScalabilityMode::kL3T2h:
case ScalabilityMode::kL3T3h:
case ScalabilityMode::kS2T1h:
case ScalabilityMode::kS2T2h:
case ScalabilityMode::kS2T3h:
case ScalabilityMode::kS3T1h:
case ScalabilityMode::kS3T2h:
case ScalabilityMode::kS3T3h:
return ScalabilityModeResolutionRatio::kThreeToTwo;
}
RTC_CHECK_NOTREACHED();