VideoStreamEncoderTest: Use DataRate for some constants.
Use config from FakeEncoder in some tests. Bug: none Change-Id: I1d7e01f604f8aabb5d6815bb519ef2532d024d76 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/233243 Commit-Queue: Åsa Persson <asapersson@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#35138}
This commit is contained in:
parent
c89560146b
commit
606d3cb1cf
@ -50,6 +50,7 @@ void WriteCounter(unsigned char* payload, uint32_t counter) {
|
||||
|
||||
FakeEncoder::FakeEncoder(Clock* clock)
|
||||
: clock_(clock),
|
||||
num_initializations_(0),
|
||||
callback_(nullptr),
|
||||
max_target_bitrate_kbps_(-1),
|
||||
pending_keyframe_(true),
|
||||
@ -81,6 +82,7 @@ int32_t FakeEncoder::InitEncode(const VideoCodec* config,
|
||||
const Settings& settings) {
|
||||
MutexLock lock(&mutex_);
|
||||
config_ = *config;
|
||||
++num_initializations_;
|
||||
current_rate_settings_.bitrate.SetBitrate(0, 0, config_.startBitrate * 1000);
|
||||
current_rate_settings_.framerate_fps = config_.maxFramerate;
|
||||
pending_keyframe_ = true;
|
||||
@ -293,6 +295,16 @@ int FakeEncoder::GetConfiguredInputFramerate() const {
|
||||
return static_cast<int>(current_rate_settings_.framerate_fps + 0.5);
|
||||
}
|
||||
|
||||
int FakeEncoder::GetNumInitializations() const {
|
||||
MutexLock lock(&mutex_);
|
||||
return num_initializations_;
|
||||
}
|
||||
|
||||
const VideoCodec& FakeEncoder::config() const {
|
||||
MutexLock lock(&mutex_);
|
||||
return config_;
|
||||
}
|
||||
|
||||
FakeH264Encoder::FakeH264Encoder(Clock* clock)
|
||||
: FakeEncoder(clock), idr_counter_(0) {}
|
||||
|
||||
|
||||
@ -55,9 +55,12 @@ class FakeEncoder : public VideoEncoder {
|
||||
int32_t Release() override;
|
||||
void SetRates(const RateControlParameters& parameters)
|
||||
RTC_LOCKS_EXCLUDED(mutex_) override;
|
||||
int GetConfiguredInputFramerate() const RTC_LOCKS_EXCLUDED(mutex_);
|
||||
EncoderInfo GetEncoderInfo() const override;
|
||||
|
||||
int GetConfiguredInputFramerate() const RTC_LOCKS_EXCLUDED(mutex_);
|
||||
int GetNumInitializations() const RTC_LOCKS_EXCLUDED(mutex_);
|
||||
const VideoCodec& config() const RTC_LOCKS_EXCLUDED(mutex_);
|
||||
|
||||
static const char* kImplementationName;
|
||||
|
||||
protected:
|
||||
@ -96,6 +99,7 @@ class FakeEncoder : public VideoEncoder {
|
||||
Clock* const clock_;
|
||||
|
||||
VideoCodec config_ RTC_GUARDED_BY(mutex_);
|
||||
int num_initializations_ RTC_GUARDED_BY(mutex_);
|
||||
EncodedImageCallback* callback_ RTC_GUARDED_BY(mutex_);
|
||||
RateControlParameters current_rate_settings_ RTC_GUARDED_BY(mutex_);
|
||||
int max_target_bitrate_kbps_ RTC_GUARDED_BY(mutex_);
|
||||
|
||||
@ -2463,13 +2463,10 @@ class VideoCodecConfigObserver : public test::SendTest,
|
||||
public test::FakeEncoder {
|
||||
public:
|
||||
VideoCodecConfigObserver(VideoCodecType video_codec_type,
|
||||
const char* codec_name,
|
||||
TaskQueueBase* task_queue)
|
||||
: SendTest(VideoSendStreamTest::kDefaultTimeoutMs),
|
||||
FakeEncoder(Clock::GetRealTimeClock()),
|
||||
video_codec_type_(video_codec_type),
|
||||
codec_name_(codec_name),
|
||||
num_initializations_(0),
|
||||
stream_(nullptr),
|
||||
encoder_factory_(this),
|
||||
task_queue_(task_queue) {
|
||||
@ -2482,7 +2479,7 @@ class VideoCodecConfigObserver : public test::SendTest,
|
||||
std::vector<VideoReceiveStream::Config>* receive_configs,
|
||||
VideoEncoderConfig* encoder_config) override {
|
||||
send_config->encoder_settings.encoder_factory = &encoder_factory_;
|
||||
send_config->rtp.payload_name = codec_name_;
|
||||
send_config->rtp.payload_name = CodecTypeToPayloadString(video_codec_type_);
|
||||
|
||||
encoder_config->codec_type = video_codec_type_;
|
||||
encoder_config->encoder_specific_settings = GetEncoderSpecificSettings();
|
||||
@ -2502,9 +2499,9 @@ class VideoCodecConfigObserver : public test::SendTest,
|
||||
const Settings& settings) override {
|
||||
EXPECT_EQ(video_codec_type_, config->codecType);
|
||||
VerifyCodecSpecifics(*config);
|
||||
++num_initializations_;
|
||||
int ret = FakeEncoder::InitEncode(config, settings);
|
||||
init_encode_event_.Set();
|
||||
return FakeEncoder::InitEncode(config, settings);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void InitCodecSpecifics();
|
||||
@ -2515,7 +2512,8 @@ class VideoCodecConfigObserver : public test::SendTest,
|
||||
void PerformTest() override {
|
||||
EXPECT_TRUE(
|
||||
init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
|
||||
ASSERT_EQ(1u, num_initializations_) << "VideoEncoder not initialized.";
|
||||
ASSERT_EQ(1, FakeEncoder::GetNumInitializations())
|
||||
<< "VideoEncoder not initialized.";
|
||||
|
||||
// Change encoder settings to actually trigger reconfiguration.
|
||||
encoder_settings_.frameDroppingOn = !encoder_settings_.frameDroppingOn;
|
||||
@ -2525,7 +2523,7 @@ class VideoCodecConfigObserver : public test::SendTest,
|
||||
});
|
||||
ASSERT_TRUE(
|
||||
init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
|
||||
EXPECT_EQ(2u, num_initializations_)
|
||||
EXPECT_EQ(2, FakeEncoder::GetNumInitializations())
|
||||
<< "ReconfigureVideoEncoder did not reinitialize the encoder with "
|
||||
"new encoder settings.";
|
||||
}
|
||||
@ -2538,9 +2536,7 @@ class VideoCodecConfigObserver : public test::SendTest,
|
||||
|
||||
T encoder_settings_;
|
||||
const VideoCodecType video_codec_type_;
|
||||
const char* const codec_name_;
|
||||
rtc::Event init_encode_event_;
|
||||
size_t num_initializations_;
|
||||
VideoSendStream* stream_;
|
||||
test::VideoEncoderProxyFactory encoder_factory_;
|
||||
VideoEncoderConfig encoder_config_;
|
||||
@ -2650,14 +2646,12 @@ VideoCodecConfigObserver<VideoCodecVP9>::GetEncoderSpecificSettings() const {
|
||||
}
|
||||
|
||||
TEST_F(VideoSendStreamTest, EncoderSetupPropagatesVp8Config) {
|
||||
VideoCodecConfigObserver<VideoCodecVP8> test(kVideoCodecVP8, "VP8",
|
||||
task_queue());
|
||||
VideoCodecConfigObserver<VideoCodecVP8> test(kVideoCodecVP8, task_queue());
|
||||
RunBaseTest(&test);
|
||||
}
|
||||
|
||||
TEST_F(VideoSendStreamTest, EncoderSetupPropagatesVp9Config) {
|
||||
VideoCodecConfigObserver<VideoCodecVP9> test(kVideoCodecVP9, "VP9",
|
||||
task_queue());
|
||||
VideoCodecConfigObserver<VideoCodecVP9> test(kVideoCodecVP9, task_queue());
|
||||
RunBaseTest(&test);
|
||||
}
|
||||
|
||||
@ -2669,8 +2663,7 @@ TEST_F(VideoSendStreamTest, EncoderSetupPropagatesVp9Config) {
|
||||
#define MAYBE_EncoderSetupPropagatesH264Config EncoderSetupPropagatesH264Config
|
||||
#endif
|
||||
TEST_F(VideoSendStreamTest, MAYBE_EncoderSetupPropagatesH264Config) {
|
||||
VideoCodecConfigObserver<VideoCodecH264> test(kVideoCodecH264, "H264",
|
||||
task_queue());
|
||||
VideoCodecConfigObserver<VideoCodecH264> test(kVideoCodecH264, task_queue());
|
||||
RunBaseTest(&test);
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user