Update test::CreateVideoStreams to use num_temporal_layers.
MultiCodecReceiveTest/VideoSendStreamTest: Configure num_temporal_layers via VideoEncoderConfig (and remove implementations of VideoStreamFactoryInterface used to override the default num_temporal_layers configuration). Bug: none Change-Id: I9855245477fe3c6fe48d1a755d401d6a35a17c70 Reviewed-on: https://webrtc-review.googlesource.com/c/107301 Commit-Queue: Åsa Persson <asapersson@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25302}
This commit is contained in:
@ -62,10 +62,13 @@ std::vector<VideoStream> CreateVideoStreams(
|
||||
: DefaultVideoStreamFactory::kMaxBitratePerStream[i];
|
||||
target_bitrate_bps = std::min(max_bitrate_bps, target_bitrate_bps);
|
||||
|
||||
// Used configured framerate if set.
|
||||
if (stream.max_framerate > 0) {
|
||||
stream_settings[i].max_framerate = stream.max_framerate;
|
||||
}
|
||||
if (stream.num_temporal_layers) {
|
||||
RTC_DCHECK_GE(*stream.num_temporal_layers, 1);
|
||||
stream_settings[i].num_temporal_layers = stream.num_temporal_layers;
|
||||
}
|
||||
} else {
|
||||
max_bitrate_bps = std::min(
|
||||
bitrate_left_bps, DefaultVideoStreamFactory::kMaxBitratePerStream[i]);
|
||||
|
@ -51,29 +51,6 @@ int RemoveOlderOrEqual(uint32_t timestamp, std::vector<uint32_t>* timestamps) {
|
||||
return num_removed;
|
||||
}
|
||||
|
||||
class VideoStreamFactoryTest
|
||||
: public VideoEncoderConfig::VideoStreamFactoryInterface {
|
||||
public:
|
||||
explicit VideoStreamFactoryTest(size_t num_temporal_layers)
|
||||
: num_temporal_layers_(num_temporal_layers) {}
|
||||
|
||||
private:
|
||||
std::vector<VideoStream> CreateEncoderStreams(
|
||||
int width,
|
||||
int height,
|
||||
const VideoEncoderConfig& encoder_config) override {
|
||||
std::vector<VideoStream> streams =
|
||||
test::CreateVideoStreams(width, height, encoder_config);
|
||||
|
||||
for (size_t i = 0; i < encoder_config.number_of_streams; ++i)
|
||||
streams[i].num_temporal_layers = num_temporal_layers_;
|
||||
|
||||
return streams;
|
||||
}
|
||||
|
||||
const size_t num_temporal_layers_;
|
||||
};
|
||||
|
||||
class FrameObserver : public test::RtpRtcpObserver,
|
||||
public rtc::VideoSinkInterface<VideoFrame> {
|
||||
public:
|
||||
@ -217,9 +194,9 @@ void MultiCodecReceiveTest::ConfigureEncoder(const CodecConfig& config) {
|
||||
PayloadNameToPayloadType(config.payload_name);
|
||||
GetVideoEncoderConfig()->codec_type =
|
||||
PayloadStringToCodecType(config.payload_name);
|
||||
GetVideoEncoderConfig()->video_stream_factory =
|
||||
new rtc::RefCountedObject<VideoStreamFactoryTest>(
|
||||
config.num_temporal_layers);
|
||||
EXPECT_EQ(1u, GetVideoEncoderConfig()->simulcast_layers.size());
|
||||
GetVideoEncoderConfig()->simulcast_layers[0].num_temporal_layers =
|
||||
config.num_temporal_layers;
|
||||
}
|
||||
|
||||
void MultiCodecReceiveTest::RunTestWithCodecs(
|
||||
|
@ -1148,31 +1148,8 @@ void VideoSendStreamTest::TestPacketFragmentationSize(VideoFormat format,
|
||||
EXPECT_FALSE(send_config->rtp.extensions.empty());
|
||||
|
||||
// Setup screen content disables frame dropping which makes this easier.
|
||||
class VideoStreamFactory
|
||||
: public VideoEncoderConfig::VideoStreamFactoryInterface {
|
||||
public:
|
||||
explicit VideoStreamFactory(size_t num_temporal_layers)
|
||||
: num_temporal_layers_(num_temporal_layers) {
|
||||
EXPECT_GT(num_temporal_layers, 0u);
|
||||
}
|
||||
|
||||
private:
|
||||
std::vector<VideoStream> CreateEncoderStreams(
|
||||
int width,
|
||||
int height,
|
||||
const VideoEncoderConfig& encoder_config) override {
|
||||
std::vector<VideoStream> streams =
|
||||
test::CreateVideoStreams(width, height, encoder_config);
|
||||
for (VideoStream& stream : streams) {
|
||||
stream.num_temporal_layers = num_temporal_layers_;
|
||||
}
|
||||
return streams;
|
||||
}
|
||||
const size_t num_temporal_layers_;
|
||||
};
|
||||
|
||||
encoder_config->video_stream_factory =
|
||||
new rtc::RefCountedObject<VideoStreamFactory>(2);
|
||||
EXPECT_EQ(1u, encoder_config->simulcast_layers.size());
|
||||
encoder_config->simulcast_layers[0].num_temporal_layers = 2;
|
||||
encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen;
|
||||
}
|
||||
|
||||
@ -2547,26 +2524,6 @@ class VideoCodecConfigObserver : public test::SendTest,
|
||||
}
|
||||
|
||||
private:
|
||||
class VideoStreamFactory
|
||||
: public VideoEncoderConfig::VideoStreamFactoryInterface {
|
||||
public:
|
||||
VideoStreamFactory() {}
|
||||
|
||||
private:
|
||||
std::vector<VideoStream> CreateEncoderStreams(
|
||||
int width,
|
||||
int height,
|
||||
const VideoEncoderConfig& encoder_config) override {
|
||||
std::vector<VideoStream> streams =
|
||||
test::CreateVideoStreams(width, height, encoder_config);
|
||||
for (size_t i = 0; i < streams.size(); ++i) {
|
||||
streams[i].num_temporal_layers =
|
||||
kVideoCodecConfigObserverNumberOfTemporalLayers;
|
||||
}
|
||||
return streams;
|
||||
}
|
||||
};
|
||||
|
||||
void ModifyVideoConfigs(
|
||||
VideoSendStream::Config* send_config,
|
||||
std::vector<VideoReceiveStream::Config>* receive_configs,
|
||||
@ -2576,8 +2533,9 @@ class VideoCodecConfigObserver : public test::SendTest,
|
||||
|
||||
encoder_config->codec_type = video_codec_type_;
|
||||
encoder_config->encoder_specific_settings = GetEncoderSpecificSettings();
|
||||
encoder_config->video_stream_factory =
|
||||
new rtc::RefCountedObject<VideoStreamFactory>();
|
||||
EXPECT_EQ(1u, encoder_config->simulcast_layers.size());
|
||||
encoder_config->simulcast_layers[0].num_temporal_layers =
|
||||
kVideoCodecConfigObserverNumberOfTemporalLayers;
|
||||
encoder_config_ = encoder_config->Copy();
|
||||
}
|
||||
|
||||
@ -2803,8 +2761,6 @@ TEST_P(VideoSendStreamTest, TranslatesTwoLayerScreencastToTargetBitrate) {
|
||||
const VideoEncoderConfig& encoder_config) override {
|
||||
std::vector<VideoStream> streams =
|
||||
test::CreateVideoStreams(width, height, encoder_config);
|
||||
EXPECT_FALSE(streams[0].num_temporal_layers.has_value());
|
||||
streams[0].num_temporal_layers = 2;
|
||||
RTC_CHECK_GT(streams[0].max_bitrate_bps,
|
||||
kScreencastMaxTargetBitrateDeltaKbps);
|
||||
streams[0].target_bitrate_bps =
|
||||
@ -2842,6 +2798,8 @@ TEST_P(VideoSendStreamTest, TranslatesTwoLayerScreencastToTargetBitrate) {
|
||||
EXPECT_EQ(1u, encoder_config->number_of_streams);
|
||||
encoder_config->video_stream_factory =
|
||||
new rtc::RefCountedObject<VideoStreamFactory>();
|
||||
EXPECT_EQ(1u, encoder_config->simulcast_layers.size());
|
||||
encoder_config->simulcast_layers[0].num_temporal_layers = 2;
|
||||
encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen;
|
||||
}
|
||||
|
||||
@ -3146,26 +3104,6 @@ class Vp9HeaderObserver : public test::SendTest {
|
||||
private:
|
||||
const int kVp9PayloadType = test::CallTest::kVideoSendPayloadType;
|
||||
|
||||
class VideoStreamFactory
|
||||
: public VideoEncoderConfig::VideoStreamFactoryInterface {
|
||||
public:
|
||||
explicit VideoStreamFactory(size_t number_of_temporal_layers)
|
||||
: number_of_temporal_layers_(number_of_temporal_layers) {}
|
||||
|
||||
private:
|
||||
std::vector<VideoStream> CreateEncoderStreams(
|
||||
int width,
|
||||
int height,
|
||||
const VideoEncoderConfig& encoder_config) override {
|
||||
std::vector<VideoStream> streams =
|
||||
test::CreateVideoStreams(width, height, encoder_config);
|
||||
streams.back().num_temporal_layers = number_of_temporal_layers_;
|
||||
return streams;
|
||||
}
|
||||
|
||||
const size_t number_of_temporal_layers_;
|
||||
};
|
||||
|
||||
void ModifyVideoConfigs(
|
||||
VideoSendStream::Config* send_config,
|
||||
std::vector<VideoReceiveStream::Config>* receive_configs,
|
||||
@ -3177,9 +3115,9 @@ class Vp9HeaderObserver : public test::SendTest {
|
||||
encoder_config->encoder_specific_settings = new rtc::RefCountedObject<
|
||||
VideoEncoderConfig::Vp9EncoderSpecificSettings>(vp9_settings_);
|
||||
EXPECT_EQ(1u, encoder_config->number_of_streams);
|
||||
encoder_config->video_stream_factory =
|
||||
new rtc::RefCountedObject<VideoStreamFactory>(
|
||||
vp9_settings_.numberOfTemporalLayers);
|
||||
EXPECT_EQ(1u, encoder_config->simulcast_layers.size());
|
||||
encoder_config->simulcast_layers[0].num_temporal_layers =
|
||||
vp9_settings_.numberOfTemporalLayers;
|
||||
encoder_config_ = encoder_config->Copy();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user