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}
diff --git a/modules/video_coding/svc/scalability_mode_util.cc b/modules/video_coding/svc/scalability_mode_util.cc
index 90df03a..dc5cf317 100644
--- a/modules/video_coding/svc/scalability_mode_util.cc
+++ b/modules/video_coding/svc/scalability_mode_util.cc
@@ -228,4 +228,44 @@
   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
diff --git a/modules/video_coding/svc/scalability_mode_util.h b/modules/video_coding/svc/scalability_mode_util.h
index e9308bd..fa0b730 100644
--- a/modules/video_coding/svc/scalability_mode_util.h
+++ b/modules/video_coding/svc/scalability_mode_util.h
@@ -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 ScalabilityModeToNumTemporalLayers(ScalabilityMode scalability_mode);
 
+absl::optional<ScalabilityModeResolutionRatio> ScalabilityModeToResolutionRatio(
+    ScalabilityMode scalability_mode);
+
 }  // namespace webrtc
 
 #endif  // MODULES_VIDEO_CODING_SVC_SCALABILITY_MODE_UTIL_H_