ref: ca2601262a05ba7aa30103df163c5c3b9e32a7b1
parent: 85cb983682fe9ca14fd302b50d27d762da05d665
parent: afde303d00109d89460083b1391b91a42b321850
author: James Zern <jzern@google.com>
date: Tue Apr 21 18:15:31 EDT 2020
Merge "realtime_test: add IntegerOverflow test"
--- a/test/realtime_test.cc
+++ b/test/realtime_test.cc
@@ -40,6 +40,14 @@
// 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_++;
}
@@ -53,6 +61,19 @@
video.set_limit(kFramesToEncode);
ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
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,