Properly set size based on actual buffer layout
authorYaowu Xu <yaowu@google.com>
Tue, 30 Dec 2014 16:35:40 +0000 (08:35 -0800)
committerYaowu Xu <yaowu@google.com>
Tue, 30 Dec 2014 17:20:36 +0000 (09:20 -0800)
VP9FrameSizeTestsLarge.OneByOneVideo has been causing a failure in
jenkins libvpx__unit_tests-valgrind_long for "using of uninitialized
memory", the root cause was that the input image for this test was
not initialized with proper size, therefore plan U and V were not
initialized at all.

This commit fixes the size initialization, and resolves the issue.

Change-Id: Ic4dd1542b7bb0cb260a1e0aeeb505db21ae5edc8

test/encode_test_driver.cc
test/video_source.h

index 7a13364..77135ec 100644 (file)
@@ -64,8 +64,7 @@ void Encoder::EncodeFrameInternal(const VideoSource &video,
 
   // Encode the frame
   API_REGISTER_STATE_CHECK(
-      res = vpx_codec_encode(&encoder_,
-                             video.img(), video.pts(), video.duration(),
+      res = vpx_codec_encode(&encoder_, img, video.pts(), video.duration(),
                              frame_flags, deadline_));
   ASSERT_EQ(VPX_CODEC_OK, res) << EncoderError();
 }
index 84bfa8e..b97e155 100644 (file)
@@ -175,8 +175,8 @@ class DummyVideoSource : public VideoSource {
   void SetSize(unsigned int width, unsigned int height) {
     if (width != width_ || height != height_) {
       vpx_img_free(img_);
-      raw_sz_ = ((width + 31)&~31) * height * 3 / 2;
       img_ = vpx_img_alloc(NULL, VPX_IMG_FMT_I420, width, height, 32);
+      raw_sz_ = ((img_->w + 31) & ~31) * img_->h * 3 / 2;
       width_ = width;
       height_ = height;
     }