New enum ScalabilityMode.
Used instead of string representation in lower-levels of encoder configuration, to avoid string comparisons (with risk of misspelling) in lots of places. Bug: webrtc:11607 Change-Id: I4d51c2265aac297c29976d2aa601d8ffb33b7326 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/259870 Commit-Queue: Niels Moller <nisse@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Florent Castelli <orphis@webrtc.org> Reviewed-by: Åsa Persson <asapersson@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36706}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
cbf07f70e2
commit
79d566b0cf
@ -11,7 +11,7 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "api/video_codecs/scalability_mode.h"
|
||||
#include "modules/video_coding/svc/scalability_structure_full_svc.h"
|
||||
#include "modules/video_coding/svc/scalability_structure_key_svc.h"
|
||||
#include "modules/video_coding/svc/scalability_structure_l2t2_key_shift.h"
|
||||
@ -24,7 +24,7 @@ namespace webrtc {
|
||||
namespace {
|
||||
|
||||
struct NamedStructureFactory {
|
||||
absl::string_view name;
|
||||
ScalabilityMode name;
|
||||
// Use function pointer to make NamedStructureFactory trivally destructable.
|
||||
std::unique_ptr<ScalableVideoController> (*factory)();
|
||||
ScalableVideoController::StreamLayersConfig config;
|
||||
@ -114,28 +114,33 @@ constexpr ScalableVideoController::StreamLayersConfig kConfigS3T3 = {
|
||||
{4, 2, 1}};
|
||||
|
||||
constexpr NamedStructureFactory kFactories[] = {
|
||||
{"L1T1", Create<ScalableVideoControllerNoLayering>, kConfigL1T1},
|
||||
{"L1T2", Create<ScalabilityStructureL1T2>, kConfigL1T2},
|
||||
{"L1T3", Create<ScalabilityStructureL1T3>, kConfigL1T3},
|
||||
{"L2T1", Create<ScalabilityStructureL2T1>, kConfigL2T1},
|
||||
{"L2T1h", CreateH<ScalabilityStructureL2T1>, kConfigL2T1h},
|
||||
{"L2T1_KEY", Create<ScalabilityStructureL2T1Key>, kConfigL2T1},
|
||||
{"L2T2", Create<ScalabilityStructureL2T2>, kConfigL2T2},
|
||||
{"L2T2_KEY", Create<ScalabilityStructureL2T2Key>, kConfigL2T2},
|
||||
{"L2T2_KEY_SHIFT", Create<ScalabilityStructureL2T2KeyShift>, kConfigL2T2},
|
||||
{"L2T3_KEY", Create<ScalabilityStructureL2T3Key>, kConfigL2T3},
|
||||
{"L3T1", Create<ScalabilityStructureL3T1>, kConfigL3T1},
|
||||
{"L3T3", Create<ScalabilityStructureL3T3>, kConfigL3T3},
|
||||
{"L3T3_KEY", Create<ScalabilityStructureL3T3Key>, kConfigL3T3},
|
||||
{"S2T1", Create<ScalabilityStructureS2T1>, kConfigS2T1},
|
||||
{"S3T3", Create<ScalabilityStructureS3T3>, kConfigS3T3},
|
||||
{ScalabilityMode::kL1T1, Create<ScalableVideoControllerNoLayering>,
|
||||
kConfigL1T1},
|
||||
{ScalabilityMode::kL1T2, Create<ScalabilityStructureL1T2>, kConfigL1T2},
|
||||
{ScalabilityMode::kL1T3, Create<ScalabilityStructureL1T3>, kConfigL1T3},
|
||||
{ScalabilityMode::kL2T1, Create<ScalabilityStructureL2T1>, kConfigL2T1},
|
||||
{ScalabilityMode::kL2T1h, CreateH<ScalabilityStructureL2T1>, kConfigL2T1h},
|
||||
{ScalabilityMode::kL2T1_KEY, Create<ScalabilityStructureL2T1Key>,
|
||||
kConfigL2T1},
|
||||
{ScalabilityMode::kL2T2, Create<ScalabilityStructureL2T2>, kConfigL2T2},
|
||||
{ScalabilityMode::kL2T2_KEY, Create<ScalabilityStructureL2T2Key>,
|
||||
kConfigL2T2},
|
||||
{ScalabilityMode::kL2T2_KEY_SHIFT, Create<ScalabilityStructureL2T2KeyShift>,
|
||||
kConfigL2T2},
|
||||
{ScalabilityMode::kL2T3_KEY, Create<ScalabilityStructureL2T3Key>,
|
||||
kConfigL2T3},
|
||||
{ScalabilityMode::kL3T1, Create<ScalabilityStructureL3T1>, kConfigL3T1},
|
||||
{ScalabilityMode::kL3T3, Create<ScalabilityStructureL3T3>, kConfigL3T3},
|
||||
{ScalabilityMode::kL3T3_KEY, Create<ScalabilityStructureL3T3Key>,
|
||||
kConfigL3T3},
|
||||
{ScalabilityMode::kS2T1, Create<ScalabilityStructureS2T1>, kConfigS2T1},
|
||||
{ScalabilityMode::kS3T3, Create<ScalabilityStructureS3T3>, kConfigS3T3},
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
std::unique_ptr<ScalableVideoController> CreateScalabilityStructure(
|
||||
absl::string_view name) {
|
||||
RTC_DCHECK(!name.empty());
|
||||
ScalabilityMode name) {
|
||||
for (const auto& entry : kFactories) {
|
||||
if (entry.name == name) {
|
||||
return entry.factory();
|
||||
@ -145,8 +150,7 @@ std::unique_ptr<ScalableVideoController> CreateScalabilityStructure(
|
||||
}
|
||||
|
||||
absl::optional<ScalableVideoController::StreamLayersConfig>
|
||||
ScalabilityStructureConfig(absl::string_view name) {
|
||||
RTC_DCHECK(!name.empty());
|
||||
ScalabilityStructureConfig(ScalabilityMode name) {
|
||||
for (const auto& entry : kFactories) {
|
||||
if (entry.name == name) {
|
||||
return entry.config;
|
||||
|
||||
Reference in New Issue
Block a user