Remove rtc::Location from SendTask test helper
that rtc::Location parameter was used only as extra information for the RTC_CHECKs directly in the function, thus call stack of the crash should provide all the information about the caller. Bug: webrtc:11318 Change-Id: Iec6dd2c5de547f3e1601647a614be7ce57a55734 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/270920 Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#37748}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
e2d829cf77
commit
e519f38eaa
@ -106,13 +106,11 @@ class BandwidthQualityScalerTest
|
||||
GetDefaultSinglecastBitrateLimitsWhenQpIsUntrusted());
|
||||
// Only for testing. Set first_timestamp_ in RateStatistics to 0.
|
||||
bandwidth_quality_scaler_->ReportEncodeInfo(0, 0, 0, 0);
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
});
|
||||
}
|
||||
|
||||
~BandwidthQualityScalerTest() {
|
||||
task_queue_.SendTask([this] { bandwidth_quality_scaler_ = nullptr; },
|
||||
RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] { bandwidth_quality_scaler_ = nullptr; });
|
||||
}
|
||||
|
||||
int GetFrameSizeBytes(
|
||||
@ -180,8 +178,7 @@ class BandwidthQualityScalerTest
|
||||
config.actual_width, config.actual_height);
|
||||
}
|
||||
}
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
});
|
||||
}
|
||||
|
||||
test::ScopedFieldTrials scoped_field_trial_;
|
||||
|
||||
@ -75,12 +75,11 @@ class QualityScalerTest : public ::testing::Test,
|
||||
[this] {
|
||||
qs_ = std::unique_ptr<QualityScaler>(new QualityScalerUnderTest(
|
||||
handler_.get(), VideoEncoder::QpThresholds(kLowQp, kHighQp)));
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
});
|
||||
}
|
||||
|
||||
~QualityScalerTest() override {
|
||||
task_queue_.SendTask([this] { qs_ = nullptr; }, RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] { qs_ = nullptr; });
|
||||
}
|
||||
|
||||
void TriggerScale(ScaleDirection scale_direction) {
|
||||
@ -119,52 +118,46 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
"WebRTC-Video-QualityScaling/Disabled/"));
|
||||
|
||||
TEST_P(QualityScalerTest, DownscalesAfterContinuousFramedrop) {
|
||||
task_queue_.SendTask([this] { TriggerScale(kScaleDown); }, RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] { TriggerScale(kScaleDown); });
|
||||
EXPECT_TRUE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(1, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(0, handler_->adapt_up_events_);
|
||||
}
|
||||
|
||||
TEST_P(QualityScalerTest, KeepsScaleAtHighQp) {
|
||||
task_queue_.SendTask([this] { TriggerScale(kKeepScaleAtHighQp); },
|
||||
RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] { TriggerScale(kKeepScaleAtHighQp); });
|
||||
EXPECT_FALSE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(0, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(0, handler_->adapt_up_events_);
|
||||
}
|
||||
|
||||
TEST_P(QualityScalerTest, DownscalesAboveHighQp) {
|
||||
task_queue_.SendTask([this] { TriggerScale(kScaleDownAboveHighQp); },
|
||||
RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] { TriggerScale(kScaleDownAboveHighQp); });
|
||||
EXPECT_TRUE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(1, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(0, handler_->adapt_up_events_);
|
||||
}
|
||||
|
||||
TEST_P(QualityScalerTest, DownscalesAfterTwoThirdsFramedrop) {
|
||||
task_queue_.SendTask(
|
||||
[this] {
|
||||
for (int i = 0; i < kFramerate * 5; ++i) {
|
||||
qs_->ReportDroppedFrameByMediaOpt();
|
||||
qs_->ReportDroppedFrameByMediaOpt();
|
||||
qs_->ReportQp(kHighQp, 0);
|
||||
}
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] {
|
||||
for (int i = 0; i < kFramerate * 5; ++i) {
|
||||
qs_->ReportDroppedFrameByMediaOpt();
|
||||
qs_->ReportDroppedFrameByMediaOpt();
|
||||
qs_->ReportQp(kHighQp, 0);
|
||||
}
|
||||
});
|
||||
EXPECT_TRUE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(1, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(0, handler_->adapt_up_events_);
|
||||
}
|
||||
|
||||
TEST_P(QualityScalerTest, DoesNotDownscaleAfterHalfFramedrop) {
|
||||
task_queue_.SendTask(
|
||||
[this] {
|
||||
for (int i = 0; i < kFramerate * 5; ++i) {
|
||||
qs_->ReportDroppedFrameByMediaOpt();
|
||||
qs_->ReportQp(kHighQp, 0);
|
||||
}
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] {
|
||||
for (int i = 0; i < kFramerate * 5; ++i) {
|
||||
qs_->ReportDroppedFrameByMediaOpt();
|
||||
qs_->ReportQp(kHighQp, 0);
|
||||
}
|
||||
});
|
||||
EXPECT_FALSE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(0, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(0, handler_->adapt_up_events_);
|
||||
@ -173,98 +166,85 @@ TEST_P(QualityScalerTest, DoesNotDownscaleAfterHalfFramedrop) {
|
||||
TEST_P(QualityScalerTest, DownscalesAfterTwoThirdsIfFieldTrialEnabled) {
|
||||
const bool kDownScaleExpected =
|
||||
GetParam().find("Enabled") != std::string::npos;
|
||||
task_queue_.SendTask(
|
||||
[this] {
|
||||
for (int i = 0; i < kFramerate * 5; ++i) {
|
||||
qs_->ReportDroppedFrameByMediaOpt();
|
||||
qs_->ReportDroppedFrameByEncoder();
|
||||
qs_->ReportQp(kHighQp, 0);
|
||||
}
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] {
|
||||
for (int i = 0; i < kFramerate * 5; ++i) {
|
||||
qs_->ReportDroppedFrameByMediaOpt();
|
||||
qs_->ReportDroppedFrameByEncoder();
|
||||
qs_->ReportQp(kHighQp, 0);
|
||||
}
|
||||
});
|
||||
EXPECT_EQ(kDownScaleExpected, handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(kDownScaleExpected ? 1 : 0, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(0, handler_->adapt_up_events_);
|
||||
}
|
||||
|
||||
TEST_P(QualityScalerTest, KeepsScaleOnNormalQp) {
|
||||
task_queue_.SendTask([this] { TriggerScale(kKeepScaleAboveLowQp); },
|
||||
RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] { TriggerScale(kKeepScaleAboveLowQp); });
|
||||
EXPECT_FALSE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(0, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(0, handler_->adapt_up_events_);
|
||||
}
|
||||
|
||||
TEST_P(QualityScalerTest, UpscalesAfterLowQp) {
|
||||
task_queue_.SendTask([this] { TriggerScale(kScaleUp); }, RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] { TriggerScale(kScaleUp); });
|
||||
EXPECT_TRUE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(0, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(1, handler_->adapt_up_events_);
|
||||
}
|
||||
|
||||
TEST_P(QualityScalerTest, ScalesDownAndBackUp) {
|
||||
task_queue_.SendTask([this] { TriggerScale(kScaleDown); }, RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] { TriggerScale(kScaleDown); });
|
||||
EXPECT_TRUE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(1, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(0, handler_->adapt_up_events_);
|
||||
task_queue_.SendTask([this] { TriggerScale(kScaleUp); }, RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] { TriggerScale(kScaleUp); });
|
||||
EXPECT_TRUE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(1, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(1, handler_->adapt_up_events_);
|
||||
}
|
||||
|
||||
TEST_P(QualityScalerTest, DoesNotScaleUntilEnoughFramesObserved) {
|
||||
task_queue_.SendTask(
|
||||
[this] {
|
||||
// Not enough frames to make a decision.
|
||||
for (int i = 0; i < kMinFramesNeededToScale - 1; ++i) {
|
||||
qs_->ReportQp(kLowQp, 0);
|
||||
}
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] {
|
||||
// Not enough frames to make a decision.
|
||||
for (int i = 0; i < kMinFramesNeededToScale - 1; ++i) {
|
||||
qs_->ReportQp(kLowQp, 0);
|
||||
}
|
||||
});
|
||||
EXPECT_FALSE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
task_queue_.SendTask(
|
||||
[this] {
|
||||
// Send 1 more. Enough frames observed, should result in an adapt
|
||||
// request.
|
||||
qs_->ReportQp(kLowQp, 0);
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] {
|
||||
// Send 1 more. Enough frames observed, should result in an adapt
|
||||
// request.
|
||||
qs_->ReportQp(kLowQp, 0);
|
||||
});
|
||||
EXPECT_TRUE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(0, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(1, handler_->adapt_up_events_);
|
||||
|
||||
// Samples should be cleared after an adapt request.
|
||||
task_queue_.SendTask(
|
||||
[this] {
|
||||
// Not enough frames to make a decision.
|
||||
qs_->ReportQp(kLowQp, 0);
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] {
|
||||
// Not enough frames to make a decision.
|
||||
qs_->ReportQp(kLowQp, 0);
|
||||
});
|
||||
EXPECT_FALSE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(0, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(1, handler_->adapt_up_events_);
|
||||
}
|
||||
|
||||
TEST_P(QualityScalerTest, ScalesDownAndBackUpWithMinFramesNeeded) {
|
||||
task_queue_.SendTask(
|
||||
[this] {
|
||||
for (int i = 0; i < kMinFramesNeededToScale; ++i) {
|
||||
qs_->ReportQp(kHighQp + 1, 0);
|
||||
}
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] {
|
||||
for (int i = 0; i < kMinFramesNeededToScale; ++i) {
|
||||
qs_->ReportQp(kHighQp + 1, 0);
|
||||
}
|
||||
});
|
||||
EXPECT_TRUE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(1, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(0, handler_->adapt_up_events_);
|
||||
// Samples cleared.
|
||||
task_queue_.SendTask(
|
||||
[this] {
|
||||
for (int i = 0; i < kMinFramesNeededToScale; ++i) {
|
||||
qs_->ReportQp(kLowQp, 0);
|
||||
}
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
task_queue_.SendTask([this] {
|
||||
for (int i = 0; i < kMinFramesNeededToScale; ++i) {
|
||||
qs_->ReportQp(kLowQp, 0);
|
||||
}
|
||||
});
|
||||
EXPECT_TRUE(handler_->event.Wait(kDefaultTimeoutMs));
|
||||
EXPECT_EQ(1, handler_->adapt_down_events_);
|
||||
EXPECT_EQ(1, handler_->adapt_up_events_);
|
||||
|
||||
Reference in New Issue
Block a user