Use EncoderStreamFactory::CreateEncoderStreams() instead of GetSimulcastConfig()

In preparation for upcoming changes in GetSimulcastConfig(), which will require a vector of stream resolutions instead of just the max resolution as an input, switch tests to use CreateEncoderStreams() instead of calling GetSimulcastConfig() directly.

Bug: webrtc:351644568, b/352504711
Change-Id: I541dd54a21a8b75028cff07a250f858a47898223
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357400
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42648}
This commit is contained in:
Sergey Silkin 2024-07-18 11:17:45 +02:00 committed by WebRTC LUCI CQ
parent 83671efdb9
commit 4dedf5efae
3 changed files with 28 additions and 15 deletions

View File

@ -81,6 +81,7 @@
#include "test/rtcp_packet_parser.h"
#include "test/scoped_key_value_config.h"
#include "test/time_controller/simulated_time_controller.h"
#include "video/config/encoder_stream_factory.h"
#include "video/config/simulcast.h"
using ::testing::_;
@ -9384,10 +9385,12 @@ class WebRtcVideoChannelSimulcastTest : public ::testing::Test {
std::vector<webrtc::VideoStream> expected_streams;
if (num_configured_streams > 1 || conference_mode) {
expected_streams = GetSimulcastConfig(
/*min_layers=*/1, num_configured_streams, capture_width,
capture_height, screenshare && conference_mode, true, field_trials_,
webrtc::kVideoCodecVP8);
const webrtc::VideoEncoderConfig& encoder_config =
stream->GetEncoderConfig();
webrtc::VideoEncoder::EncoderInfo encoder_info;
auto factory = rtc::make_ref_counted<EncoderStreamFactory>(encoder_info);
expected_streams = factory->CreateEncoderStreams(
field_trials_, capture_width, capture_height, encoder_config);
if (screenshare && conference_mode) {
for (const webrtc::VideoStream& stream : expected_streams) {
// Never scale screen content.

View File

@ -62,7 +62,7 @@
#include "test/testsupport/file_utils.h"
#include "test/testsupport/frame_writer.h"
#include "test/video_codec_settings.h"
#include "video/config/simulcast.h"
#include "video/config/encoder_stream_factory.h"
#include "video/config/video_encoder_config.h"
namespace webrtc {
@ -77,10 +77,16 @@ const int kMaxQp = 56;
void ConfigureSimulcast(VideoCodec* codec_settings) {
FieldTrialBasedConfig trials;
const std::vector<webrtc::VideoStream> streams = cricket::GetSimulcastConfig(
/*min_layer=*/1, codec_settings->numberOfSimulcastStreams,
codec_settings->width, codec_settings->height,
/* is_screenshare = */ false, true, trials, webrtc::kVideoCodecVP8);
VideoEncoderConfig encoder_config;
encoder_config.codec_type = codec_settings->codecType;
encoder_config.number_of_streams = codec_settings->numberOfSimulcastStreams;
encoder_config.simulcast_layers.resize(
codec_settings->numberOfSimulcastStreams);
VideoEncoder::EncoderInfo encoder_info;
auto stream_factory =
rtc::make_ref_counted<cricket::EncoderStreamFactory>(encoder_info);
const std::vector<VideoStream> streams = stream_factory->CreateEncoderStreams(
trials, codec_settings->width, codec_settings->height, encoder_config);
for (size_t i = 0; i < streams.size(); ++i) {
SimulcastStream* ss = &codec_settings->simulcastStream[i];

View File

@ -54,7 +54,7 @@
#include "test/testsupport/frame_reader.h"
#include "test/testsupport/video_frame_writer.h"
#include "third_party/libyuv/include/libyuv/compare.h"
#include "video/config/simulcast.h"
#include "video/config/encoder_stream_factory.h"
namespace webrtc {
namespace test {
@ -1294,11 +1294,15 @@ void ConfigureSimulcast(VideoCodec* vc) {
}
ExplicitKeyValueConfig field_trials(field_trial::GetFieldTrialString());
const std::vector<webrtc::VideoStream> streams = cricket::GetSimulcastConfig(
/*min_layer=*/1, num_spatial_layers, vc->width, vc->height,
/*is_screenshare=*/false, /*temporal_layers_supported=*/true,
field_trials, webrtc::kVideoCodecVP8);
VideoEncoderConfig encoder_config;
encoder_config.codec_type = vc->codecType;
encoder_config.number_of_streams = num_spatial_layers;
encoder_config.simulcast_layers.resize(num_spatial_layers);
VideoEncoder::EncoderInfo encoder_info;
auto stream_factory =
rtc::make_ref_counted<cricket::EncoderStreamFactory>(encoder_info);
const std::vector<VideoStream> streams = stream_factory->CreateEncoderStreams(
field_trials, vc->width, vc->height, encoder_config);
vc->numberOfSimulcastStreams = streams.size();
RTC_CHECK_LE(vc->numberOfSimulcastStreams, num_spatial_layers);
if (vc->numberOfSimulcastStreams < num_spatial_layers) {