/* * Copyright 2023 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 "pc/test/simulcast_layer_util.h" #include "absl/algorithm/container.h" #include "rtc_base/checks.h" namespace webrtc { std::vector CreateLayers( const std::vector& rids, const std::vector& active) { RTC_DCHECK_EQ(rids.size(), active.size()); std::vector result; absl::c_transform(rids, active, std::back_inserter(result), [](const std::string& rid, bool is_active) { return cricket::SimulcastLayer(rid, !is_active); }); return result; } std::vector CreateLayers( const std::vector& rids, bool active) { return CreateLayers(rids, std::vector(rids.size(), active)); } RtpTransceiverInit CreateTransceiverInit( const std::vector& layers) { RtpTransceiverInit init; for (const cricket::SimulcastLayer& layer : layers) { RtpEncodingParameters encoding; encoding.rid = layer.rid; encoding.active = !layer.is_paused; init.send_encodings.push_back(encoding); } return init; } cricket::SimulcastDescription RemoveSimulcast(SessionDescriptionInterface* sd) { auto mcd = sd->description()->contents()[0].media_description(); auto result = mcd->simulcast_description(); mcd->set_simulcast_description(cricket::SimulcastDescription()); return result; } } // namespace webrtc