| /* | |
| * 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/simulcast_stream.h" | |
| #include <optional> | |
| #include "api/video_codecs/scalability_mode.h" | |
| #include "rtc_base/checks.h" | |
| namespace webrtc { | |
| unsigned char SimulcastStream::GetNumberOfTemporalLayers() const { | |
| return numberOfTemporalLayers; | |
| } | |
| void SimulcastStream::SetNumberOfTemporalLayers(unsigned char n) { | |
| RTC_DCHECK_GE(n, 1); | |
| RTC_DCHECK_LE(n, 3); | |
| numberOfTemporalLayers = n; | |
| } | |
| std::optional<ScalabilityMode> SimulcastStream::GetScalabilityMode() const { | |
| static const ScalabilityMode scalability_modes[3] = { | |
| ScalabilityMode::kL1T1, | |
| ScalabilityMode::kL1T2, | |
| ScalabilityMode::kL1T3, | |
| }; | |
| if (numberOfTemporalLayers < 1 || numberOfTemporalLayers > 3) { | |
| return std::nullopt; | |
| } | |
| return scalability_modes[numberOfTemporalLayers - 1]; | |
| } | |
| bool SimulcastStream::operator==(const SimulcastStream& other) const { | |
| return (width == other.width && height == other.height && | |
| maxFramerate == other.maxFramerate && | |
| numberOfTemporalLayers == other.numberOfTemporalLayers && | |
| maxBitrate == other.maxBitrate && | |
| targetBitrate == other.targetBitrate && | |
| minBitrate == other.minBitrate && qpMax == other.qpMax && | |
| active == other.active); | |
| } | |
| } // namespace webrtc |