| /* |
| * Copyright (c) 2022 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #ifndef API_VIDEO_CODECS_SCALABILITY_MODE_H_ |
| #define API_VIDEO_CODECS_SCALABILITY_MODE_H_ |
| |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| #include "absl/strings/string_view.h" |
| #include "rtc_base/system/rtc_export.h" |
| |
| namespace webrtc { |
| |
| // Supported scalability modes. Most applications should use the |
| // PeerConnection-level apis where scalability mode is represented as a string. |
| // This list of currently recognized modes is intended for the api boundary |
| // between webrtc and injected encoders. Any application usage outside of |
| // injected encoders is strongly discouraged. |
| enum class ScalabilityMode : uint8_t { |
| kL1T1, |
| kL1T2, |
| kL1T3, |
| kL2T1, |
| kL2T1h, |
| kL2T1_KEY, |
| kL2T2, |
| kL2T2h, |
| kL2T2_KEY, |
| kL2T2_KEY_SHIFT, |
| kL2T3, |
| kL2T3h, |
| kL2T3_KEY, |
| kL3T1, |
| kL3T1h, |
| kL3T1_KEY, |
| kL3T2, |
| kL3T2h, |
| kL3T2_KEY, |
| kL3T3, |
| kL3T3h, |
| kL3T3_KEY, |
| kS2T1, |
| kS2T1h, |
| kS2T2, |
| kS2T2h, |
| kS2T3, |
| kS2T3h, |
| kS3T1, |
| kS3T1h, |
| kS3T2, |
| kS3T2h, |
| kS3T3, |
| kS3T3h, |
| }; |
| |
| inline constexpr ScalabilityMode kAllScalabilityModes[] = { |
| // clang-format off |
| ScalabilityMode::kL1T1, |
| ScalabilityMode::kL1T2, |
| ScalabilityMode::kL1T3, |
| ScalabilityMode::kL2T1, |
| ScalabilityMode::kL2T1h, |
| ScalabilityMode::kL2T1_KEY, |
| ScalabilityMode::kL2T2, |
| ScalabilityMode::kL2T2h, |
| ScalabilityMode::kL2T2_KEY, |
| ScalabilityMode::kL2T2_KEY_SHIFT, |
| ScalabilityMode::kL2T3, |
| ScalabilityMode::kL2T3h, |
| ScalabilityMode::kL2T3_KEY, |
| ScalabilityMode::kL3T1, |
| ScalabilityMode::kL3T1h, |
| ScalabilityMode::kL3T1_KEY, |
| ScalabilityMode::kL3T2, |
| ScalabilityMode::kL3T2h, |
| ScalabilityMode::kL3T2_KEY, |
| ScalabilityMode::kL3T3, |
| ScalabilityMode::kL3T3h, |
| ScalabilityMode::kL3T3_KEY, |
| ScalabilityMode::kS2T1, |
| ScalabilityMode::kS2T1h, |
| ScalabilityMode::kS2T2, |
| ScalabilityMode::kS2T2h, |
| ScalabilityMode::kS2T3, |
| ScalabilityMode::kS2T3h, |
| ScalabilityMode::kS3T1, |
| ScalabilityMode::kS3T1h, |
| ScalabilityMode::kS3T2, |
| ScalabilityMode::kS3T2h, |
| ScalabilityMode::kS3T3, |
| ScalabilityMode::kS3T3h, |
| // clang-format on |
| }; |
| |
| inline constexpr size_t kScalabilityModeCount = |
| sizeof(kAllScalabilityModes) / sizeof(ScalabilityMode); |
| |
| RTC_EXPORT |
| absl::string_view ScalabilityModeToString(ScalabilityMode scalability_mode); |
| |
| } // namespace webrtc |
| |
| #endif // API_VIDEO_CODECS_SCALABILITY_MODE_H_ |