summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Zern <jzern@google.com>2020-04-20 19:30:24 -0700
committerJames Zern <jzern@google.com>2020-04-21 15:14:34 -0700
commitafde303d00109d89460083b1391b91a42b321850 (patch)
tree55079fe5c0e593a7175d905283fca343a15be6f6
parent62af22b5e57ed1e382ef0994183824a03f698797 (diff)
downloadlibvpx-afde303d00109d89460083b1391b91a42b321850.tar
libvpx-afde303d00109d89460083b1391b91a42b321850.tar.gz
libvpx-afde303d00109d89460083b1391b91a42b321850.tar.bz2
libvpx-afde303d00109d89460083b1391b91a42b321850.zip
realtime_test: add IntegerOverflow test
use an extreme bitrate to cover rate control calculations. this is disabled by default as there are a mix of -fsanitize=undefined/integer warnings for vp9 and -fsanitize=integer warnings for vp8. this is a follow-up to: 5e065cf9d vp8/{ratectrl,onyx_if}: fix some signed integer overflows 5eab093a7 vp9_ratectrl: fix some signed integer overflows BUG=webm:1685 Change-Id: I24d223e33471217528a79b0088965ba51d0399ba
-rw-r--r--test/realtime_test.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/realtime_test.cc b/test/realtime_test.cc
index 63f1ac3c2..11b5cae70 100644
--- a/test/realtime_test.cc
+++ b/test/realtime_test.cc
@@ -40,6 +40,14 @@ class RealtimeTest
// which overrides the one specified in SetUp() above.
cfg_.g_pass = VPX_RC_FIRST_PASS;
}
+
+ virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
+ ::libvpx_test::Encoder *encoder) {
+ if (video->frame() == 0) {
+ encoder->Control(VP8E_SET_CPUUSED, 8);
+ }
+ }
+
virtual void FramePktHook(const vpx_codec_cx_pkt_t * /*pkt*/) {
frame_packets_++;
}
@@ -55,6 +63,19 @@ TEST_P(RealtimeTest, RealtimeFirstPassProducesFrames) {
EXPECT_EQ(kFramesToEncode, frame_packets_);
}
+// TODO(https://crbug.com/webm/1685): the following passes -fsanitize=undefined
+// with bitrate set to 140000000 for vp8 and 128000 for vp9. There are
+// additional failures with lower bitrates using -fsanitize=integer.
+TEST_P(RealtimeTest, DISABLED_IntegerOverflow) {
+ ::libvpx_test::RandomVideoSource video;
+ video.SetSize(800, 480);
+ video.set_limit(20);
+ // TODO(https://crbug.com/webm/1685): this should be silently capped
+ // internally to the raw yuv rate or below.
+ cfg_.rc_target_bitrate = 140000000;
+ ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
+}
+
VP8_INSTANTIATE_TEST_CASE(RealtimeTest,
::testing::Values(::libvpx_test::kRealTime));
VP9_INSTANTIATE_TEST_CASE(RealtimeTest,