/* * 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 "absl/types/optional.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; } absl::optional SimulcastStream::GetScalabilityMode() const { static const ScalabilityMode scalability_modes[3] = { ScalabilityMode::kL1T1, ScalabilityMode::kL1T2, ScalabilityMode::kL1T3, }; if (numberOfTemporalLayers < 1 || numberOfTemporalLayers > 3) { return absl::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