update expand picture UT

This commit is contained in:
ruil2 2014-06-12 09:37:30 +08:00
parent 84c1f3a4ee
commit 1e43075b25
14 changed files with 97 additions and 221 deletions

View File

@ -97,6 +97,7 @@ DECODER_UNITTEST_INCLUDES = $(CODEC_UNITTEST_INCLUDES) $(DECODER_INCLUDES) -Ites
ENCODER_UNITTEST_INCLUDES = $(CODEC_UNITTEST_INCLUDES) $(ENCODER_INCLUDES) -Itest -Itest/encoder
PROCESSING_UNITTEST_INCLUDES = $(CODEC_UNITTEST_INCLUDES) $(PROCESSING_INCLUDES) -Itest -Itest/processing
API_TEST_INCLUDES = $(CODEC_UNITTEST_INCLUDES) -Itest -Itest/api
COMMON_UNITTEST_INCLUDES = $(CODEC_UNITTEST_INCLUDES) $(DECODER_INCLUDES) -Itest -Itest/common
.PHONY: test gtest-bootstrap clean
all: libraries binaries
@ -177,15 +178,16 @@ include test/api/targets.mk
include test/decoder/targets.mk
include test/encoder/targets.mk
include test/processing/targets.mk
include test/common/targets.mk
LIBRARIES += $(LIBPREFIX)ut.$(LIBSUFFIX)
$(LIBPREFIX)ut.$(LIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(API_TEST_OBJS)
$(LIBPREFIX)ut.$(LIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(COMMON_UNITTEST_OBJS) $(API_TEST_OBJS)
$(QUIET)rm -f $@
$(QUIET_AR)$(AR) $(AR_OPTS) $+
LIBRARIES +=$(LIBPREFIX)ut.$(SHAREDLIBSUFFIX)
$(LIBPREFIX)ut.$(SHAREDLIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(API_TEST_OBJS) $(CODEC_UNITTEST_DEPS)
$(LIBPREFIX)ut.$(SHAREDLIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(API_TEST_OBJS) $(COMMON_UNITTEST_OBJS) $(CODEC_UNITTEST_DEPS)
$(QUIET)rm -f $@
$(QUIET_CXX)$(CXX) $(SHARED) $(LDFLAGS) $(CXX_LINK_O) $+ $(CODEC_UNITTEST_LDFLAGS)
@ -205,7 +207,7 @@ clean_Android_ut:
cd ./test/build/android && $(NDKROOT)/ndk-build APP_ABI=$(APP_ABI) clean && ant clean
else
codec_unittest$(EXEEXT): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(API_TEST_OBJS) $(CODEC_UNITTEST_DEPS)
codec_unittest$(EXEEXT): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(API_TEST_OBJS) $(COMMON_UNITTEST_OBJS) $(CODEC_UNITTEST_DEPS)
$(QUIET)rm -f $@
$(QUIET_CXX)$(CXX) $(CXX_LINK_O) $+ $(CODEC_UNITTEST_LDFLAGS) $(LDFLAGS)

View File

@ -191,6 +191,7 @@ long (*GetOption) (ISVCDecoder*, DECODER_OPTION eOptionId, void* pOption);
};
#endif
typedef void (*WelsTraceCallback) (void* ctx, int level, const char* string);
int WelsCreateSVCEncoder (ISVCEncoder** ppEncoder);
void WelsDestroySVCEncoder (ISVCEncoder* pEncoder);

View File

@ -231,6 +231,18 @@ typedef enum {
LEVEL_5_2
} ELevelIdc;
enum {
WELS_LOG_QUIET = 0x00, // Quiet mode
WELS_LOG_ERROR = 1 << 0, // Error log iLevel
WELS_LOG_WARNING = 1 << 1, // Warning log iLevel
WELS_LOG_INFO = 1 << 2, // Information log iLevel
WELS_LOG_DEBUG = 1 << 3, // Debug log iLevel
WELS_LOG_RESV = 1 << 4, // Resversed log iLevel
WELS_LOG_LEVEL_COUNT = 5,
WELS_LOG_DEFAULT = WELS_LOG_DEBUG // Default log iLevel in Wels codec
};
typedef struct {
SliceModeEnum uiSliceMode; //by default, uiSliceMode will be SM_SINGLE_SLICE
SSliceArgument sSliceArgument;

View File

@ -43,21 +43,6 @@
#include "typedefs.h"
/*
* Log output routines
*/
enum {
WELS_LOG_QUIET = 0x00, // Quiet mode
WELS_LOG_ERROR = 1 << 0, // Error log iLevel
WELS_LOG_WARNING = 1 << 1, // Warning log iLevel
WELS_LOG_INFO = 1 << 2, // Information log iLevel
WELS_LOG_DEBUG = 1 << 3, // Debug log iLevel
WELS_LOG_RESV = 1 << 4, // Resversed log iLevel
WELS_LOG_LEVEL_COUNT = 5,
WELS_LOG_DEFAULT = WELS_LOG_DEBUG // Default log iLevel in Wels codec
};
/*
* Function pointer declaration for various tool sets
*/

View File

@ -36,8 +36,8 @@
#include <stdarg.h>
#include "typedefs.h"
#include "utils.h"
typedef void (*CM_WELS_TRACE) (void* ctx, int level, const char* string);
#include "codec_app_def.h"
#include "codec_api.h"
class welsCodecTrace {
public:
@ -45,7 +45,7 @@ class welsCodecTrace {
~welsCodecTrace();
void SetTraceLevel (const int32_t kiLevel);
void SetTraceCallback (CM_WELS_TRACE func);
void SetTraceCallback (WelsTraceCallback func);
void SetTraceCallbackContext (void* pCtx);
private:
@ -53,7 +53,7 @@ class welsCodecTrace {
void CodecTrace (const int32_t kiLevel, const char* kpStrFormat, va_list vl);
int32_t m_iTraceLevel;
CM_WELS_TRACE m_fpTrace;
WelsTraceCallback m_fpTrace;
void* m_pTraceCtx;
public:

View File

@ -87,7 +87,7 @@ void welsCodecTrace::SetTraceLevel (const int32_t iLevel) {
m_iTraceLevel = iLevel;
}
void welsCodecTrace::SetTraceCallback (CM_WELS_TRACE func) {
void welsCodecTrace::SetTraceCallback (WelsTraceCallback func) {
m_fpTrace = func;
}

View File

@ -277,7 +277,7 @@ long CWelsDecoder::SetOption (DECODER_OPTION eOptID, void* pOption) {
return cmResultSuccess;
} else if (eOptID == DECODER_OPTION_TRACE_CALLBACK) {
if (m_pWelsTrace) {
CM_WELS_TRACE callback = * ((CM_WELS_TRACE*)pOption);
WelsTraceCallback callback = * ((WelsTraceCallback*)pOption);
m_pWelsTrace->SetTraceCallback (callback);
}
return cmResultSuccess;

View File

@ -874,7 +874,7 @@ int CWelsH264SVCEncoder::SetOption (ENCODER_OPTION eOptionId, void* pOption) {
break;
case ENCODER_OPTION_TRACE_CALLBACK: {
if (m_pWelsTrace) {
CM_WELS_TRACE callback = * ((CM_WELS_TRACE*)pOption);
WelsTraceCallback callback = * ((WelsTraceCallback*)pOption);
m_pWelsTrace->SetTraceCallback (callback);
}
}

View File

@ -4,15 +4,13 @@
#include "mem_align.h"
#include "decoder_context.h"
#include "cpu.h"
using namespace WelsDec;
#include "cpu_core.h"
#define EXPAND_PIC_TEST_NUM 10
namespace WelsDec {
extern PPicture AllocPicture (PWelsDecoderContext pCtx, const int32_t kPicWidth, const int32_t kPicHeight);
extern void FreePicture (PPicture pPic);
}
#define H264_PADDING_LENGTH_LUMA (PADDING_LENGTH)
#define H264_PADDING_LENGTH_CHROMA (PADDING_LENGTH>>1)
using namespace WelsDec;
void H264ExpandPictureLumaAnchor_c (uint8_t* pDst, int32_t iStride, int32_t iPicWidth, int32_t iPicHeight) {
uint8_t* pTmp = pDst;
uint8_t* pDstLastLine = pTmp + (iPicHeight - 1) * iStride;
@ -98,14 +96,24 @@ bool CompareBuff (uint8_t* pSrc0, uint8_t* pSrc1, int32_t iStride, int32_t iWidt
return true;
}
bool CompareImage (uint8_t* pSrc0, uint8_t* pSrc1, int32_t iSize) {
for (int32_t n = 0; n < iSize; n++) {
if (pSrc0[n] != pSrc1[n]) {
return false;
}
}
return true;
}
TEST (ExpandPicture, ExpandPictureLuma) {
SExpandPicFunc sExpandPicFunc;
int32_t iCpuCores = 1;
uint32_t uiCpuFlag = 0;
for(int32_t k =0; k<2; k++) {
if(k==0) {
for (int32_t k = 0; k < 2; k++) {
if (k == 0) {
uiCpuFlag = 0;
}else {
} else {
uiCpuFlag = WelsCPUFeatureDetect (&iCpuCores);
}
InitExpandPictureFunc (&sExpandPicFunc, uiCpuFlag);
@ -145,10 +153,10 @@ TEST (ExpandPicture, ExpandPictureChroma) {
SExpandPicFunc sExpandPicFunc;
int32_t iCpuCores = 1;
uint32_t uiCpuFlag = 0;
for(int32_t k =0; k<2; k++) {
if(k==0) {
for (int32_t k = 0; k < 2; k++) {
if (k == 0) {
uiCpuFlag = 0;
}else {
} else {
uiCpuFlag = WelsCPUFeatureDetect (&iCpuCores);
}
InitExpandPictureFunc (&sExpandPicFunc, uiCpuFlag);
@ -156,9 +164,8 @@ TEST (ExpandPicture, ExpandPictureChroma) {
for (int32_t iTestIdx = 0; iTestIdx < EXPAND_PIC_TEST_NUM; iTestIdx++) {
int32_t iPicWidth = (8 + (rand() % 200) * 8);
if(uiCpuFlag & WELS_CPU_SSE2)
{
iPicWidth = WELS_MAX(iPicWidth, 16);
if (uiCpuFlag & WELS_CPU_SSE2) {
iPicWidth = WELS_MAX (iPicWidth, 16);
}
int32_t iPicHeight = (8 + (rand() % 100) * 8);
@ -193,56 +200,67 @@ TEST (ExpandPicture, ExpandPicForMotion) {
SExpandPicFunc sExpandPicFunc;
int32_t iCpuCores = 1;
uint32_t uiCpuFlag = 0;
for(int32_t k =0; k<2; k++) {
if(k==0) {
for (int32_t k = 0; k < 2; k++) {
if (k == 0) {
uiCpuFlag = 0;
}else {
} else {
uiCpuFlag = WelsCPUFeatureDetect (&iCpuCores);
}
InitExpandPictureFunc (&sExpandPicFunc, uiCpuFlag);
srand ((unsigned int)time (0));
SWelsDecoderContext sCtx;
PPicture pPicAnchor = NULL;
PPicture pPicTest = NULL;
uint8_t* pPicAnchorBuffer = NULL;
uint8_t* pPicTestBuffer = NULL;
uint8_t* pPicAnchor[3] = {NULL, NULL, NULL};
uint8_t* pPicTest[3] = {NULL, NULL, NULL};
int32_t iStride[3];
for (int32_t iTestIdx = 0; iTestIdx < EXPAND_PIC_TEST_NUM; iTestIdx++) {
int32_t iPicWidth = (16 + (rand() % 200) * 16);
int32_t iPicHeight = (16 + (rand() % 100) * 16);
if (uiCpuFlag & WELS_CPU_SSE2) {
iPicWidth = WELS_ALIGN (iPicWidth, 32);
}
iStride[0] = WELS_ALIGN (iPicWidth, MB_WIDTH_LUMA) + (PADDING_LENGTH << 1); // with width of horizon
int32_t iPicHeightExt = WELS_ALIGN (iPicHeight, MB_HEIGHT_LUMA) + (PADDING_LENGTH << 1); // with height of vertical
iStride[1] = iStride[0] >> 1;
int32_t iPicChromaHeightExt = iPicHeightExt >> 1;
iStride[2] = iStride[1];
int32_t iLumaSize = iStride[0] * iPicHeightExt;
int32_t iChromaSize = iStride[1] * iPicChromaHeightExt;
pPicAnchorBuffer = static_cast<uint8_t*> (WelsMalloc (iLumaSize + (iChromaSize << 1), "pPicAnchor"));
pPicAnchor[0] = pPicAnchorBuffer + (1 + iStride[0]) * PADDING_LENGTH;
pPicAnchor[1] = pPicAnchorBuffer + iLumaSize + (((1 + iStride[1]) * PADDING_LENGTH) >> 1);
pPicAnchor[2] = pPicAnchorBuffer + iLumaSize + iChromaSize + (((1 + iStride[2]) * PADDING_LENGTH) >> 1);
pPicTestBuffer = static_cast<uint8_t*> (WelsMalloc (iLumaSize + (iChromaSize << 1), "pPicTest"));
pPicTest[0] = pPicTestBuffer + (1 + iStride[0]) * PADDING_LENGTH;
pPicTest[1] = pPicTestBuffer + iLumaSize + (((1 + iStride[1]) * PADDING_LENGTH) >> 1);
pPicTest[2] = pPicTestBuffer + iLumaSize + iChromaSize + (((1 + iStride[2]) * PADDING_LENGTH) >> 1);
pPicAnchor = AllocPicture (&sCtx, iPicWidth, iPicHeight);
pPicTest = AllocPicture (&sCtx, iPicWidth, iPicHeight);
sCtx.pDec = pPicTest;
int32_t iStride = pPicAnchor->iLinesize[0];
int32_t iStrideC;
iStrideC = pPicAnchor->iLinesize[1];
// Generate Src
for (int32_t j = 0; j < iPicHeight; j++) {
for (int32_t i = 0; i < iPicWidth; i++) {
pPicAnchor->pData[0][i + j * iStride] = pPicTest->pData[0][i + j * iStride] = rand() % 256;
pPicAnchor[0][i + j * iStride[0]] = pPicTest[0][i + j * iStride[0]] = rand() % 256;
}
}
for (int32_t j = 0; j < iPicHeight / 2; j++) {
for (int32_t i = 0; i < iPicWidth / 2; i++) {
pPicAnchor->pData[1][i + j * iStrideC] = pPicTest->pData[1][i + j * iStrideC] = rand() % 256;
pPicAnchor->pData[2][i + j * iStrideC] = pPicTest->pData[2][i + j * iStrideC] = rand() % 256;
pPicAnchor[1][i + j * iStride[1]] = pPicTest[1][i + j * iStride[1]] = rand() % 256;
pPicAnchor[2][i + j * iStride[2]] = pPicTest[2][i + j * iStride[2]] = rand() % 256;
}
}
H264ExpandPictureLumaAnchor_c (pPicAnchor->pData[0], iStride, iPicWidth, iPicHeight);
H264ExpandPictureChromaAnchor_c (pPicAnchor->pData[1], iStrideC, iPicWidth / 2, iPicHeight / 2);
H264ExpandPictureChromaAnchor_c (pPicAnchor->pData[2], iStrideC, iPicWidth / 2, iPicHeight / 2);
ExpandReferencingPicture (sCtx.pDec->pData, sCtx.pDec->iWidthInPixel, sCtx.pDec->iHeightInPixel, sCtx.pDec->iLinesize,
H264ExpandPictureLumaAnchor_c (pPicAnchor[0], iStride[0], iPicWidth, iPicHeight);
H264ExpandPictureChromaAnchor_c (pPicAnchor[1], iStride[1], iPicWidth / 2, iPicHeight / 2);
H264ExpandPictureChromaAnchor_c (pPicAnchor[2], iStride[2], iPicWidth / 2, iPicHeight / 2);
ExpandReferencingPicture (pPicTest, iPicWidth, iPicHeight, iStride,
sExpandPicFunc.pfExpandLumaPicture, sExpandPicFunc.pfExpandChromaPicture);
EXPECT_EQ (CompareImage (pPicAnchorBuffer, pPicTestBuffer, (iLumaSize + (iChromaSize << 1))), true);
EXPECT_EQ (CompareBuff (pPicAnchor->pBuffer[0], pPicTest->pBuffer[0], iStride, iPicWidth + PADDING_LENGTH * 2,
iPicHeight + PADDING_LENGTH * 2), true);
EXPECT_EQ (CompareBuff (pPicAnchor->pBuffer[1], pPicTest->pBuffer[1], iStrideC, iPicWidth / 2 + PADDING_LENGTH,
iPicHeight / 2 + PADDING_LENGTH), true);
EXPECT_EQ (CompareBuff (pPicAnchor->pBuffer[2], pPicTest->pBuffer[2], iStrideC, iPicWidth / 2 + PADDING_LENGTH,
iPicHeight / 2 + PADDING_LENGTH), true);
FreePicture (pPicAnchor);
FreePicture (pPicTest);
WELS_SAFE_FREE (pPicAnchorBuffer, "pPicAnchor");
WELS_SAFE_FREE (pPicTestBuffer, "pPicTest");
}
}
}

10
test/common/targets.mk Normal file
View File

@ -0,0 +1,10 @@
COMMON_UNITTEST_SRCDIR=test/common
COMMON_UNITTEST_CPP_SRCS=\
$(COMMON_UNITTEST_SRCDIR)/ExpandPicture.cpp\
COMMON_UNITTEST_OBJS += $(COMMON_UNITTEST_CPP_SRCS:.cpp=.$(OBJ))
OBJS += $(COMMON_UNITTEST_OBJS)
$(COMMON_UNITTEST_SRCDIR)/%.$(OBJ): $(COMMON_UNITTEST_SRCDIR)/%.cpp
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(COMMON_UNITTEST_CFLAGS) $(COMMON_UNITTEST_INCLUDES) -c $(CXX_O) $<

View File

@ -2,7 +2,6 @@ DECODER_UNITTEST_SRCDIR=test/decoder
DECODER_UNITTEST_CPP_SRCS=\
$(DECODER_UNITTEST_SRCDIR)/DecUT_Deblock.cpp\
$(DECODER_UNITTEST_SRCDIR)/DecUT_ErrorConcealment.cpp\
$(DECODER_UNITTEST_SRCDIR)/DecUT_ExpandPicture.cpp\
$(DECODER_UNITTEST_SRCDIR)/DecUT_IdctResAddPred.cpp\
$(DECODER_UNITTEST_SRCDIR)/DecUT_IntraPrediction.cpp\
$(DECODER_UNITTEST_SRCDIR)/DecUT_MotionCompensation.cpp\

View File

@ -1,150 +0,0 @@
#include<gtest/gtest.h>
#include<stdlib.h>
#include "wels_func_ptr_def.h"
#include "expand_pic.h"
using namespace WelsSVCEnc;
TEST (ExpandPicTest, TestExpandPictureLuma_c) {
SWelsFuncPtrList sFuncList;
InitExpandPictureFunc (& (sFuncList.sExpandPicFunc), 0);
int32_t iPicW = rand() % 256 + 1;
int32_t iPicH = rand() % 256 + 1;
int32_t iStride = iPicW + rand() % 16 + 1 + PADDING_LENGTH * 2;
const int32_t kiPaddingLen = PADDING_LENGTH;
const int32_t kiMemSize = (iStride + kiPaddingLen * 2) * (iPicH + kiPaddingLen * 2);
uint8_t* pRef = new uint8_t[kiMemSize];
for (int i = 0; i < kiMemSize; i++)
pRef[i] = rand() % 256 + 1;
uint8_t* pDst = pRef + kiPaddingLen * iStride + kiPaddingLen;
sFuncList.sExpandPicFunc.pfExpandLumaPicture (pDst, iStride, iPicW, iPicH);
int k = 0;
//top and top corner
for (int i = 0; i < kiPaddingLen; i++) {
for (int j = 0; j < iPicW + 2 * kiPaddingLen; j++) {
if (j < kiPaddingLen) {
EXPECT_EQ (pRef[k + j], pDst[0]);
} else if (j >= iPicW + kiPaddingLen) {
EXPECT_EQ (pRef[k + j], pDst[iPicW - 1]);
} else
EXPECT_EQ (pRef[k + j], pDst[j - kiPaddingLen]);
}
k += iStride;
}
k = (iPicH + kiPaddingLen - 1) * iStride;
//bottom and bottom corner
for (int i = iPicH + kiPaddingLen; i < iPicH + 2 * kiPaddingLen; i++) {
for (int j = 0; j < iPicW + 2 * kiPaddingLen; j++) {
if (j < kiPaddingLen) {
EXPECT_EQ (pRef[k + j], pDst[ (iPicH - 1) * iStride]);
} else if (j >= iPicW + kiPaddingLen) {
EXPECT_EQ (pRef[k + j], pDst[ (iPicH - 1) * iStride + iPicW - 1]);
} else
EXPECT_EQ (pRef[k + j], pDst[ (iPicH - 1) * iStride + j - kiPaddingLen]);
}
k += iStride;
}
k = kiPaddingLen * iStride;
int l = 0;
for (int i = 0; i < iPicH - 1; i++) { //left
for (int j = 0; j < kiPaddingLen; j++) {
EXPECT_EQ (pRef[k + j], pDst[l]);
}
k += iStride;
l += iStride;
}
k = kiPaddingLen * iStride;
l = 0;
for (int i = 0; i < iPicH - 1; i++) { //right
for (int j = iPicW + kiPaddingLen; j < iPicW + 2 * kiPaddingLen; j++) {
EXPECT_EQ (pRef[k + j], pDst[l + iPicW - 1]);
}
k += iStride;
l += iStride;
}
delete []pRef;
}
TEST (ExpandPicTest, TestExpandPictureChroma_c) {
SWelsFuncPtrList sFuncList;
InitExpandPictureFunc (& (sFuncList.sExpandPicFunc), 0);
int32_t iPicW = rand() % 256 + 1;
int32_t iPicH = rand() % 256 + 1;
const int32_t kiPaddingLen = (PADDING_LENGTH >> 1);
int32_t iStride = iPicW + rand() % 16 + 1 + kiPaddingLen * 2;
const int32_t kiMemSize = (iStride + kiPaddingLen * 2) * (iPicH + kiPaddingLen * 2);
uint8_t* pRef = new uint8_t[kiMemSize];
for (int i = 0; i < kiMemSize; i++)
pRef[i] = rand() % 256 + 1;
uint8_t* pDst = pRef + kiPaddingLen * iStride + kiPaddingLen;
sFuncList.sExpandPicFunc.pfExpandChromaPicture[0] (pDst, iStride, iPicW, iPicH);
int k = 0;
//top and top corner
for (int i = 0; i < kiPaddingLen; i++) {
for (int j = 0; j < iPicW + 2 * kiPaddingLen; j++) {
if (j < kiPaddingLen) {
EXPECT_EQ (pRef[k + j], pDst[0]);
} else if (j >= iPicW + kiPaddingLen) {
EXPECT_EQ (pRef[k + j], pDst[iPicW - 1]);
} else
EXPECT_EQ (pRef[k + j], pDst[j - kiPaddingLen]);
}
k += iStride;
}
k = (iPicH + kiPaddingLen - 1) * iStride;
//bottom and bottom corner
for (int i = iPicH + kiPaddingLen; i < iPicH + 2 * kiPaddingLen; i++) {
for (int j = 0; j < iPicW + 2 * kiPaddingLen; j++) {
if (j < kiPaddingLen) {
EXPECT_EQ (pRef[k + j], pDst[ (iPicH - 1) * iStride]);
} else if (j >= iPicW + kiPaddingLen) {
EXPECT_EQ (pRef[k + j], pDst[ (iPicH - 1) * iStride + iPicW - 1]);
} else
EXPECT_EQ (pRef[k + j], pDst[ (iPicH - 1) * iStride + j - kiPaddingLen]);
}
k += iStride;
}
k = kiPaddingLen * iStride;
int l = 0;
for (int i = 0; i < iPicH - 1; i++) { //left
for (int j = 0; j < kiPaddingLen; j++) {
EXPECT_EQ (pRef[k + j], pDst[l]);
}
k += iStride;
l += iStride;
}
k = kiPaddingLen * iStride;
l = 0;
for (int i = 0; i < iPicH - 1; i++) { //right
for (int j = iPicW + kiPaddingLen; j < iPicW + 2 * kiPaddingLen; j++) {
EXPECT_EQ (pRef[k + j], pDst[l + iPicW - 1]);
}
k += iStride;
l += iStride;
}
delete []pRef;
}

View File

@ -32,9 +32,9 @@ TEST(GetIntraPredictorTest, TestGetI4x4LumaPredH)
const uint32_t kiStride3 = kiStride + kiStride2;
uint8_t *pPred = new uint8_t[64];
uint8_t *pRef = new uint8_t[kiStride3+1];
uint8_t *pRef = new uint8_t[kiStride3+2];
for (int i=0; i<(static_cast<int32_t>(kiStride3+1)); i++)
for (int i=0; i<(static_cast<int32_t>(kiStride3+2)); i++)
pRef[i] = rand() % 256;
pRef++;

View File

@ -3,7 +3,6 @@ ENCODER_UNITTEST_CPP_SRCS=\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_DecodeMbAux.cpp\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_EncoderMb.cpp\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_EncoderMbAux.cpp\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_ExpandPic.cpp\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_ExpGolomb.cpp\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_GetIntraPredictor.cpp\
$(ENCODER_UNITTEST_SRCDIR)/EncUT_MemoryAlloc.cpp\