/*
 *  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.
 */

#include "api/video_codecs/scalability_mode.h"

#include "rtc_base/checks.h"

namespace webrtc {

absl::string_view ScalabilityModeToString(ScalabilityMode scalability_mode) {
  switch (scalability_mode) {
    case ScalabilityMode::kL1T1:
      return "L1T1";
    case ScalabilityMode::kL1T2:
      return "L1T2";
    case ScalabilityMode::kL1T3:
      return "L1T3";
    case ScalabilityMode::kL2T1:
      return "L2T1";
    case ScalabilityMode::kL2T1h:
      return "L2T1h";
    case ScalabilityMode::kL2T1_KEY:
      return "L2T1_KEY";
    case ScalabilityMode::kL2T2:
      return "L2T2";
    case ScalabilityMode::kL2T2h:
      return "L2T2h";
    case ScalabilityMode::kL2T2_KEY:
      return "L2T2_KEY";
    case ScalabilityMode::kL2T2_KEY_SHIFT:
      return "L2T2_KEY_SHIFT";
    case ScalabilityMode::kL2T3:
      return "L2T3";
    case ScalabilityMode::kL2T3h:
      return "L2T3h";
    case ScalabilityMode::kL2T3_KEY:
      return "L2T3_KEY";
    case ScalabilityMode::kL3T1:
      return "L3T1";
    case ScalabilityMode::kL3T1h:
      return "L3T1h";
    case ScalabilityMode::kL3T1_KEY:
      return "L3T1_KEY";
    case ScalabilityMode::kL3T2:
      return "L3T2";
    case ScalabilityMode::kL3T2h:
      return "L3T2h";
    case ScalabilityMode::kL3T2_KEY:
      return "L3T2_KEY";
    case ScalabilityMode::kL3T3:
      return "L3T3";
    case ScalabilityMode::kL3T3h:
      return "L3T3h";
    case ScalabilityMode::kL3T3_KEY:
      return "L3T3_KEY";
    case ScalabilityMode::kS2T1:
      return "S2T1";
    case ScalabilityMode::kS2T1h:
      return "S2T1h";
    case ScalabilityMode::kS2T2:
      return "S2T2";
    case ScalabilityMode::kS2T2h:
      return "S2T2h";
    case ScalabilityMode::kS2T3:
      return "S2T3";
    case ScalabilityMode::kS2T3h:
      return "S2T3h";
    case ScalabilityMode::kS3T1:
      return "S3T1";
    case ScalabilityMode::kS3T1h:
      return "S3T1h";
    case ScalabilityMode::kS3T2:
      return "S3T2";
    case ScalabilityMode::kS3T2h:
      return "S3T2h";
    case ScalabilityMode::kS3T3:
      return "S3T3";
    case ScalabilityMode::kS3T3h:
      return "S3T3h";
  }
  RTC_CHECK_NOTREACHED();
}

}  // namespace webrtc