Add an API to query resolution ratio between spatial layers

Bug: webrtc:13960
Change-Id: I349b08397e1cd1235bb15af1011aaac8383388b8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/273122
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Daniel.L (Byoungchan) Lee <daniel.l@hpcnt.com>
Cr-Commit-Position: refs/heads/main@{#37949}
This commit is contained in:
Byoungchan Lee
2022-08-30 19:07:17 +09:00
committed by WebRTC LUCI CQ
parent 1cb799c31c
commit 2d7db71fda
2 changed files with 48 additions and 0 deletions

View File

@ -228,4 +228,44 @@ int ScalabilityModeToNumTemporalLayers(ScalabilityMode scalability_mode) {
RTC_CHECK_NOTREACHED();
}
absl::optional<ScalabilityModeResolutionRatio> ScalabilityModeToResolutionRatio(
ScalabilityMode scalability_mode) {
switch (scalability_mode) {
case ScalabilityMode::kL1T1:
case ScalabilityMode::kL1T2:
case ScalabilityMode::kL1T2h:
case ScalabilityMode::kL1T3:
case ScalabilityMode::kL1T3h:
return absl::nullopt;
case ScalabilityMode::kL2T1:
case ScalabilityMode::kL2T1_KEY:
case ScalabilityMode::kL2T2:
case ScalabilityMode::kL2T2_KEY:
case ScalabilityMode::kL2T2_KEY_SHIFT:
case ScalabilityMode::kL2T3:
case ScalabilityMode::kL2T3_KEY:
case ScalabilityMode::kL3T1:
case ScalabilityMode::kL3T1_KEY:
case ScalabilityMode::kL3T2:
case ScalabilityMode::kL3T2_KEY:
case ScalabilityMode::kL3T3:
case ScalabilityMode::kL3T3_KEY:
case ScalabilityMode::kS2T1:
case ScalabilityMode::kS2T2:
case ScalabilityMode::kS2T3:
case ScalabilityMode::kS3T1:
case ScalabilityMode::kS3T2:
case ScalabilityMode::kS3T3:
return ScalabilityModeResolutionRatio::kTwoToOne;
case ScalabilityMode::kL2T1h:
case ScalabilityMode::kL2T2h:
case ScalabilityMode::kL2T3h:
case ScalabilityMode::kL3T1h:
case ScalabilityMode::kL3T2h:
case ScalabilityMode::kL3T3h:
return ScalabilityModeResolutionRatio::kThreeToTwo;
}
RTC_CHECK_NOTREACHED();
}
} // namespace webrtc

View File

@ -18,6 +18,11 @@
namespace webrtc {
enum class ScalabilityModeResolutionRatio {
kTwoToOne, // The resolution ratio between spatial layers is 2:1.
kThreeToTwo, // The resolution ratio between spatial layers is 1.5:1.
};
absl::optional<ScalabilityMode> ScalabilityModeFromString(
absl::string_view scalability_mode_string);
@ -28,6 +33,9 @@ int ScalabilityModeToNumSpatialLayers(ScalabilityMode scalability_mode);
int ScalabilityModeToNumTemporalLayers(ScalabilityMode scalability_mode);
absl::optional<ScalabilityModeResolutionRatio> ScalabilityModeToResolutionRatio(
ScalabilityMode scalability_mode);
} // namespace webrtc
#endif // MODULES_VIDEO_CODING_SVC_SCALABILITY_MODE_UTIL_H_