diff options
author | James Zern <jzern@google.com> | 2020-04-20 19:30:24 -0700 |
---|---|---|
committer | James Zern <jzern@google.com> | 2020-04-21 15:14:34 -0700 |
commit | afde303d00109d89460083b1391b91a42b321850 (patch) | |
tree | 55079fe5c0e593a7175d905283fca343a15be6f6 /test | |
parent | 62af22b5e57ed1e382ef0994183824a03f698797 (diff) | |
download | libvpx-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
Diffstat (limited to 'test')
-rw-r--r-- | test/realtime_test.cc | 21 |
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, |