shithub: libvpx

Download patch

ref: bdbaa5b40603784105051039fa7d97df030763a8
parent: 4109b8e5357ccfe95841fde1b8f8c36d1e402114
author: Deb Mukherjee <debargha@google.com>
date: Thu Jul 17 23:06:07 EDT 2014

Fix FrameSizeTestsLarge unit-test on 32-bit arch.

If the img allocation fails the test used to crash before on
32 bit architecture. This patch uses null check on img in
FillFrame. Also, if the first frame initialization has not been
conducted VPX_CODEC_ERROR is expected to return rather than
VPX_CODEC_OK.

Change-Id: I5c4e59c156374009012d280d6ff971a89b43c11f

--- a/test/encode_test_driver.cc
+++ b/test/encode_test_driver.cc
@@ -69,7 +69,10 @@
 void Encoder::Flush() {
   const vpx_codec_err_t res = vpx_codec_encode(&encoder_, NULL, 0, 0, 0,
                                                deadline_);
-  ASSERT_EQ(VPX_CODEC_OK, res) << EncoderError();
+  if (!encoder_.priv)
+    ASSERT_EQ(VPX_CODEC_ERROR, res) << EncoderError();
+  else
+    ASSERT_EQ(VPX_CODEC_OK, res) << EncoderError();
 }
 
 void EncoderTest::InitializeConfig() {
--- a/test/video_source.h
+++ b/test/video_source.h
@@ -142,7 +142,7 @@
   }
 
  protected:
-  virtual void FillFrame() { memset(img_->img_data, 0, raw_sz_); }
+  virtual void FillFrame() { if (img_) memset(img_->img_data, 0, raw_sz_); }
 
   vpx_image_t *img_;
   size_t       raw_sz_;
@@ -170,11 +170,13 @@
   // 15 frames of noise, followed by 15 static frames. Reset to 0 rather
   // than holding previous frames to encourage keyframes to be thrown.
   virtual void FillFrame() {
-    if (frame_ % 30 < 15)
-      for (size_t i = 0; i < raw_sz_; ++i)
-        img_->img_data[i] = rnd_.Rand8();
-    else
-      memset(img_->img_data, 0, raw_sz_);
+    if (img_) {
+      if (frame_ % 30 < 15)
+        for (size_t i = 0; i < raw_sz_; ++i)
+          img_->img_data[i] = rnd_.Rand8();
+      else
+        memset(img_->img_data, 0, raw_sz_);
+    }
   }
 
   ACMRandom rnd_;