[x265] [PATCH] frame: initialize recon to avoid SAO read of uninitialized pixels beyond picture end
kavitha at multicorewareinc.com
kavitha at multicorewareinc.com
Wed Jul 2 14:08:18 CEST 2014
# HG changeset patch
# User Kavitha Sampath <kavitha at multicorewareinc.com>
# Date 1404297383 -19800
# Wed Jul 02 16:06:23 2014 +0530
# Node ID 731068beca7e5e1403c39c5ede610101b3e6e69f
# Parent a18972fd05b1d6242a881bef979b9e1ff17543d9
frame: initialize recon to avoid SAO read of uninitialized pixels beyond picture end
diff -r a18972fd05b1 -r 731068beca7e source/common/frame.cpp
--- a/source/common/frame.cpp Tue Jul 01 14:58:35 2014 -0500
+++ b/source/common/frame.cpp Wed Jul 02 16:06:23 2014 +0530
@@ -106,14 +106,24 @@
{
m_picSym = new TComPicSym;
m_reconPicYuv = new TComPicYuv;
+ bool picCreate = false, reconCreate = false;
if (m_picSym && m_reconPicYuv)
{
m_picSym->m_reconPicYuv = m_reconPicYuv;
- return m_picSym->create(param) &&
- m_reconPicYuv->create(param->sourceWidth, param->sourceHeight, param->internalCsp, g_maxCUSize, g_maxCUDepth);
+ picCreate = m_picSym->create(param);
+ reconCreate = m_reconPicYuv->create(param->sourceWidth, param->sourceHeight,
+ param->internalCsp, g_maxCUSize, g_maxCUDepth);
+
+ // initialize m_reconpicYuv as SAO may read beyond the end of the picture accessing uninitialized pixels
+ int maxHeight = m_reconPicYuv->m_numCuInHeight * g_maxCUSize;
+ memset(m_reconPicYuv->m_picBuf[0], 0, m_reconPicYuv->m_stride * (maxHeight +
+ (m_reconPicYuv->m_lumaMarginY * 2)));
+ memset(m_reconPicYuv->m_picBuf[1], 0, m_reconPicYuv->m_strideC * ((maxHeight >>
+ m_reconPicYuv->m_vChromaShift) + (m_reconPicYuv->m_chromaMarginY * 2)));
+ memset(m_reconPicYuv->m_picBuf[2], 0, m_reconPicYuv->m_strideC * ((maxHeight >>
+ m_reconPicYuv->m_vChromaShift) + (m_reconPicYuv->m_chromaMarginY * 2)));
}
- else
- return false;
+ return picCreate && reconCreate;
}
void Frame::reinit(x265_param *param)
More information about the x265-devel
mailing list