webrtc/api/video_codecs/simulcast_stream.cc
Jeremy Leconte 3afa1b2ce8 Add a SimulcastStream::GetScalabilityMode2 method that returns an optional.
A call to GetScalabilityMode was added for logging purpose and causes an expectation failure for tests using 4 temporal layers.
Plan is to remove the old GetScalabilityMode and keep only the one that returns an optional.

Change-Id: I0e37a496bb621d9754d6572ef5838b58193aa183
Bug: b/327381318
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/341520
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Jeremy Leconte <jleconte@google.com>
Cr-Commit-Position: refs/heads/main@{#41838}
2024-02-28 17:38:46 +00:00

51 lines
1.6 KiB
C++

/*
* 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;
}
ScalabilityMode SimulcastStream::GetScalabilityMode() const {
RTC_CHECK_GE(numberOfTemporalLayers, 1);
RTC_CHECK_LE(numberOfTemporalLayers, 3);
static const ScalabilityMode scalability_modes[3] = {
ScalabilityMode::kL1T1,
ScalabilityMode::kL1T2,
ScalabilityMode::kL1T3,
};
return scalability_modes[numberOfTemporalLayers - 1];
}
// TODO(b/327381318): Rename to GetScalabilityMode.
absl::optional<ScalabilityMode> SimulcastStream::GetScalabilityMode2() 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];
}
} // namespace webrtc