add interface UT for memory align check

This commit is contained in:
lyao2
2014-07-15 15:21:54 +08:00
parent 010e423b2b
commit d633f8584a

View File

@@ -53,6 +53,7 @@ class EncoderInterfaceTest : public ::testing::Test {
}
void TemporalLayerSettingTest();
void MemoryCheckTest();
void EncodeOneFrame (SEncParamBase* pEncParamBase);
void PrepareOneSrcFrame();
void EncodeOneIDRandP (ISVCEncoder* pPtrEnc);
@@ -130,6 +131,8 @@ void EncoderInterfaceTest::TemporalLayerSettingTest() {
pParamExt->iTemporalLayerNum = 1;
pParamExt->iSpatialLayerNum = 1;
for(int i = 0; i < 2; i++){
pParamExt->iUsageType = (( i == 0 ) ? SCREEN_CONTENT_REAL_TIME : CAMERA_VIDEO_REAL_TIME);
int iResult = pPtrEnc->InitializeExt (pParamExt);
EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
@@ -173,13 +176,98 @@ void EncoderInterfaceTest::TemporalLayerSettingTest() {
EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP));
pPtrEnc->Uninitialize();
}
}
TEST_F (EncoderInterfaceTest, TestTemporalLayerSetting) {
TemporalLayerSettingTest();
}
void EncoderInterfaceTest::MemoryCheckTest() {
#define MEM_VARY_SIZE 1024
#define IMAGE_VARY_SIZE 512
#define TEST_FRAMES 500
pParamExt->iPicWidth = 1280;
pParamExt->iPicHeight = 720;
pParamExt->iTargetBitrate = 60000;
pParamExt->sSpatialLayers[0].iVideoHeight = pParamExt->iPicHeight;
pParamExt->sSpatialLayers[0].iVideoWidth = pParamExt->iPicWidth;
pParamExt->sSpatialLayers[0].iSpatialBitrate = 50000;
pParamExt->iTemporalLayerNum = 3;
pParamExt->iSpatialLayerNum = 1;
int iResult = pPtrEnc->InitializeExt (pParamExt);
const int kiFrameNumber = TEST_FRAMES;
m_iWidth = pParamExt->iPicWidth;
m_iHeight = pParamExt->iPicHeight;
m_iPicResSize = m_iWidth * m_iHeight * 3 >> 1;
delete []pYUV;
pYUV = new unsigned char [m_iPicResSize];
PrepareOneSrcFrame();
for(int i = 0; i < kiFrameNumber; i ++){
int iStartX = rand() % (m_iPicResSize >> 1);
int iEndX = (iStartX + (rand() % MEM_VARY_SIZE)) % m_iPicResSize;
for (int j = iStartX; j < iEndX; j++)
pYUV[j] = rand() % 256;
iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
pSrcPic->uiTimeStamp += 30;
}
pParamExt->iPicWidth += (rand() << 1) % IMAGE_VARY_SIZE;
pParamExt->iPicHeight += (rand() << 1) % IMAGE_VARY_SIZE;
m_iWidth = pParamExt->iPicWidth;
m_iHeight = pParamExt->iPicHeight;
m_iPicResSize = m_iWidth * m_iHeight * 3 >> 1;
delete []pYUV;
pYUV = new unsigned char [m_iPicResSize];
iResult = pPtrEnc->InitializeExt (pParamExt);
PrepareOneSrcFrame();
ENCODER_OPTION eOptionId = ENCODER_OPTION_SVC_ENCODE_PARAM_EXT;
memcpy (pOption, pParamExt, sizeof (SEncParamExt));
pOption ->iPicWidth = m_iWidth;
pOption ->iPicHeight = m_iHeight;
iResult = pPtrEnc->SetOption (eOptionId, pOption);
EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
for(int i = 0; i < kiFrameNumber; i ++){
int iStartX = rand() % (m_iPicResSize >> 1);
int iEndX = (iStartX + (rand() % MEM_VARY_SIZE)) % m_iPicResSize;
for (int j = iStartX; j < iEndX; j++)
pYUV[j] = rand() % 256;
iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
pSrcPic->uiTimeStamp += 30;
}
pOption ->iLTRRefNum += rand() % 8 + 1;
iResult = pPtrEnc->SetOption (eOptionId, pOption);
EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
for(int i = 0; i < kiFrameNumber; i ++){
int iStartX = rand() % (m_iPicResSize >> 1);
int iEndX = (iStartX + (rand() % MEM_VARY_SIZE)) % m_iPicResSize;
for (int j = iStartX; j < iEndX; j++)
pYUV[j] = rand() % 256;
iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
pSrcPic->uiTimeStamp += 30;
}
pPtrEnc->Uninitialize();
}
TEST_F (EncoderInterfaceTest, MemoryCheck) {
MemoryCheckTest();
}
void GetValidEncParamBase (SEncParamBase* pEncParamBase) {
pEncParamBase->iUsageType = CAMERA_VIDEO_REAL_TIME;
pEncParamBase->iPicWidth = ((rand() * 2) % (MAX_WIDTH));
@@ -210,7 +298,7 @@ TEST_F (EncoderInterfaceTest, BasicInitializeTest) {
EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));
pPtrEnc->Uninitialize();
iResult = pPtrEnc->Uninitialize();
EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
}