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:
Åsa Persson
2018-10-22 17:34:02 +02:00
committed by Commit Bot
parent 98f5f6cdea
commit d34597cf3d
3 changed files with 17 additions and 99 deletions

View File

@ -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]);

View File

@ -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(

View File

@ -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();
}