History

add interface UT for RC and code refactor

lyao2 committed 12 years ago

Commit 562f38a1 parent 470246c1 file · +67 −22Browse files

Unified · Split

test/encoder/EncUT_EncoderExt.cpp+67−22
@@ -9,6 +9,9 @@ class EncoderInterfaceTest : public ::testing::Test { · 8 unmodified lines
99 #define MAX_WIDTH (3840)
1010 #define MAX_HEIGHT (2160)
1111 #define VALID_SIZE(iSize) (((iSize)>1)?(iSize):1)
12+#define MEM_VARY_SIZE (512)
13+#define IMAGE_VARY_SIZE (512)
14+#define TEST_FRAMES (200)
1215
1316 #define NAL_HEADER_BYTES (4)
1417 #define NAL_TYPE (0x0F)
@@ -52,6 +55,7 @@ class EncoderInterfaceTest : public ::testing::Test { · 37 unmodified lines
5255 }
5356 }
5457
58+ void InitializeParamExt();
5559 void TemporalLayerSettingTest();
5660 void MemoryCheckTest();
5761 void EncodeOneFrame (SEncParamBase* pEncParamBase);
@@ -120,7 +124,18 @@ void EncoderInterfaceTest::EncodeOneIDRandP (ISVCEncoder* pPtrEnc) { · 62 unmodified lines
120124 EXPECT_NE (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));
121125 }
122126
123−void EncoderInterfaceTest::TemporalLayerSettingTest() {
127+void EncoderInterfaceTest::InitializeParamExt() {
128+ pParamExt->iPicWidth = 1280;
129+ pParamExt->iPicHeight = 720;
130+ pParamExt->iTargetBitrate = 50000;
131+ pParamExt->iTemporalLayerNum = 3;
132+ pParamExt->iSpatialLayerNum = 1;
133+ pParamExt->sSpatialLayers[0].iVideoHeight = pParamExt->iPicHeight;
134+ pParamExt->sSpatialLayers[0].iVideoWidth = pParamExt->iPicWidth;
135+ pParamExt->sSpatialLayers[0].iSpatialBitrate = 50000;
136+}
137+
138+TEST_F (EncoderInterfaceTest, TemporalLayerSettingTest) {
124139
125140 pParamExt->iPicWidth = m_iWidth;
126141 pParamExt->iPicHeight = m_iHeight;
@@ -175,27 +190,60 @@ void EncoderInterfaceTest::TemporalLayerSettingTest() { · 48 unmodified lines
175190 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
176191 EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP));
177192
178− pPtrEnc->Uninitialize();
193+ iResult = pPtrEnc->Uninitialize();
194+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
195+ }
196+
197+ InitializeParamExt();
198+ pParamExt->iUsageType = (rand() % 2) ? SCREEN_CONTENT_REAL_TIME : CAMERA_VIDEO_REAL_TIME;
199+ pParamExt->iRCMode = (rand() % 2) ? RC_BITRATE_MODE : RC_QUALITY_MODE;
200+
201+ int iResult = pPtrEnc->InitializeExt (pParamExt);
202+ const int kiFrameNumber = TEST_FRAMES;
203+
204+ m_iWidth = pParamExt->iPicWidth;
205+ m_iHeight = pParamExt->iPicHeight;
206+ m_iPicResSize = m_iWidth * m_iHeight * 3 >> 1;
207+ delete []pYUV;
208+ pYUV = new unsigned char [m_iPicResSize];
209+ ASSERT_TRUE (pYUV != NULL);
210+ PrepareOneSrcFrame();
211+
212+ ENCODER_OPTION eOptionId = ENCODER_OPTION_SVC_ENCODE_PARAM_EXT;
213+ memcpy (pOption, pParamExt, sizeof (SEncParamExt));
214+
215+ for(int i = 0; i < kiFrameNumber; i ++){
216+ if ((i%7) == 0){
217+ if (pOption->iTemporalLayerNum<4){
218+ pOption->iTemporalLayerNum++;
219+ } else {
220+ pOption->iTemporalLayerNum--;
221+ }
222+ iResult = pPtrEnc->SetOption (eOptionId, pOption);
223+ EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
224+ pSrcPic->uiTimeStamp += 30;
225+ }
226+
227+ int iStartX = rand() % (m_iPicResSize >> 1);
228+ int iEndX = (iStartX + (rand() % MEM_VARY_SIZE)) % m_iPicResSize;
229+ for (int j = iStartX; j < iEndX; j++)
230+ pYUV[j] = rand() % 256;
231+
232+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
233+ EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
234+ pSrcPic->uiTimeStamp += 30;
179235 }
180−}
181236
182−TEST_F (EncoderInterfaceTest, TestTemporalLayerSetting) {
183− TemporalLayerSettingTest();
237+ iResult = pPtrEnc->Uninitialize();
238+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
239+
184240 }
185241
186−void EncoderInterfaceTest::MemoryCheckTest() {
187− #define MEM_VARY_SIZE 1024
188− #define IMAGE_VARY_SIZE 512
189− #define TEST_FRAMES 500
242+TEST_F (EncoderInterfaceTest, MemoryCheckTest) {
190243
244+ InitializeParamExt();
191245 pParamExt->iPicWidth = 1280;
192246 pParamExt->iPicHeight = 720;
193− pParamExt->iTargetBitrate = 60000;
194− pParamExt->sSpatialLayers[0].iVideoHeight = pParamExt->iPicHeight;
195− pParamExt->sSpatialLayers[0].iVideoWidth = pParamExt->iPicWidth;
196− pParamExt->sSpatialLayers[0].iSpatialBitrate = 50000;
197− pParamExt->iTemporalLayerNum = 3;
198− pParamExt->iSpatialLayerNum = 1;
199247
200248 int iResult = pPtrEnc->InitializeExt (pParamExt);
201249 const int kiFrameNumber = TEST_FRAMES;
@@ -261,11 +309,9 @@ void EncoderInterfaceTest::MemoryCheckTest() { · 59 unmodified lines
261309 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
262310 pSrcPic->uiTimeStamp += 30;
263311 }
264− pPtrEnc->Uninitialize();
265−}
266312
267−TEST_F (EncoderInterfaceTest, MemoryCheck) {
268− MemoryCheckTest();
313+ iResult = pPtrEnc->Uninitialize();
314+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
269315 }
270316
271317 void GetValidEncParamBase (SEncParamBase* pEncParamBase) {
@@ -498,11 +544,10 @@ TEST_F (EncoderInterfaceTest, EncodeParameterSets) { · 226 unmodified lines
498544 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
499545 EXPECT_NE (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));
500546
501− pPtrEnc->Uninitialize();
547+ iResult = pPtrEnc->Uninitialize();
502548 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
503549 }
504550
505551 TEST_F (EncoderInterfaceTest, BasicReturnTypeTest) {
506552 //TODO
507−}
508−
553+}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t