]> granicus.if.org Git - libvpx/commitdiff
Fix potential ioc issue in vp9_get_prob for 4K above sizes
authorJingning Han <jingning@google.com>
Thu, 24 Jul 2014 22:31:32 +0000 (15:31 -0700)
committerJingning Han <jingning@google.com>
Thu, 24 Jul 2014 22:35:51 +0000 (15:35 -0700)
This commit turns on the existing vp9_get_prob function using
64 bit in the intermediate step. It fixes the ioc issue for 4K
above frame sizes (issue 828).

Change-Id: I9f627f3beca2c522f73b38fd2a3e7eefdff01a7c

test/frame_size_tests.cc
vp9/common/vp9_prob.h

index b05d12e9ebf85322a238cf2a22a5d14162235acf..d1ea0967fb5d96a0069646f9b3ff69d62a5dab4b 100644 (file)
@@ -89,8 +89,7 @@ TEST_F(VP9FrameSizeTestsLarge, ValidSizes) {
   // one for each lag in frames (for 2 pass), and then one for each possible
   // reference buffer (8) - we can end up with up to 30 buffers of roughly this
   // size or almost 1 gig of memory.
-  // TODO(jzern): restore this to at least 4096x4096 after issue #828 is fixed.
-  video.SetSize(4096, 2160);
+  video.SetSize(4096, 4096);
   video.set_limit(2);
   expected_res_ = VPX_CODEC_OK;
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
index f361480350516ae29335112295dac88b23a0e097..3920619d88ecc1264b675c8435d7465ff2f618ec 100644 (file)
@@ -47,18 +47,9 @@ static INLINE vp9_prob clip_prob(int p) {
   return (p > 255) ? 255u : (p < 1) ? 1u : p;
 }
 
-// int64 is not needed for normal frame level calculations.
-// However when outputting entropy stats accumulated over many frames
-// or even clips we can overflow int math.
-#ifdef ENTROPY_STATS
 static INLINE vp9_prob get_prob(int num, int den) {
   return (den == 0) ? 128u : clip_prob(((int64_t)num * 256 + (den >> 1)) / den);
 }
-#else
-static INLINE vp9_prob get_prob(int num, int den) {
-  return (den == 0) ? 128u : clip_prob((num * 256 + (den >> 1)) / den);
-}
-#endif
 
 static INLINE vp9_prob get_binary_prob(int n0, int n1) {
   return get_prob(n0, n0 + n1);