History

add interface UT for RC and code refactor

lyao2 committed 12 years ago

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

Showing the changes to test/encoder/EncUT_EncoderExt.cpp (1 of 1 file). Show all

Unified · Split

test/encoder/EncUT_EncoderExt.cpp+67−22
@@ -9,6 +9,9 @@ class EncoderInterfaceTest : public ::testing::Test { · 8 unmodified lines
9#define MAX_WIDTH (3840)9#define MAX_WIDTH (3840)
10#define MAX_HEIGHT (2160)10#define MAX_HEIGHT (2160)
11#define VALID_SIZE(iSize) (((iSize)>1)?(iSize):1)11#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)
12 15
13#define NAL_HEADER_BYTES (4)16#define NAL_HEADER_BYTES (4)
14#define NAL_TYPE (0x0F)17#define NAL_TYPE (0x0F)
@@ -52,6 +55,7 @@ class EncoderInterfaceTest : public ::testing::Test { · 37 unmodified lines
52 }55 }
53 }56 }
54 57
58 void InitializeParamExt();
55 void TemporalLayerSettingTest();59 void TemporalLayerSettingTest();
56 void MemoryCheckTest();60 void MemoryCheckTest();
57 void EncodeOneFrame (SEncParamBase* pEncParamBase);61 void EncodeOneFrame (SEncParamBase* pEncParamBase);
@@ -120,7 +124,18 @@ void EncoderInterfaceTest::EncodeOneIDRandP (ISVCEncoder* pPtrEnc) { · 62 unmodified lines
120 EXPECT_NE (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));124 EXPECT_NE (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));
121}125}
122 126
123void EncoderInterfaceTest::TemporalLayerSettingTest() {127void 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
138TEST_F (EncoderInterfaceTest, TemporalLayerSettingTest) {
124 139
125 pParamExt->iPicWidth = m_iWidth;140 pParamExt->iPicWidth = m_iWidth;
126 pParamExt->iPicHeight = m_iHeight;141 pParamExt->iPicHeight = m_iHeight;
@@ -175,27 +190,60 @@ void EncoderInterfaceTest::TemporalLayerSettingTest() { · 48 unmodified lines
175 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));190 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
176 EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP));191 EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP));
177 192
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;
179 }235 }
180}
181 236
182TEST_F (EncoderInterfaceTest, TestTemporalLayerSetting) {237 iResult = pPtrEnc->Uninitialize();
183 TemporalLayerSettingTest();238 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
239
184}240}
185 241
186void EncoderInterfaceTest::MemoryCheckTest() {242TEST_F (EncoderInterfaceTest, MemoryCheckTest) {
187 #define MEM_VARY_SIZE 1024
188 #define IMAGE_VARY_SIZE 512
189 #define TEST_FRAMES 500
190 243
244 InitializeParamExt();
191 pParamExt->iPicWidth = 1280;245 pParamExt->iPicWidth = 1280;
192 pParamExt->iPicHeight = 720;246 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;
199 247
200 int iResult = pPtrEnc->InitializeExt (pParamExt);248 int iResult = pPtrEnc->InitializeExt (pParamExt);
201 const int kiFrameNumber = TEST_FRAMES;249 const int kiFrameNumber = TEST_FRAMES;
@@ -261,11 +309,9 @@ void EncoderInterfaceTest::MemoryCheckTest() { · 59 unmodified lines
261 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));309 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
262 pSrcPic->uiTimeStamp += 30;310 pSrcPic->uiTimeStamp += 30;
263 }311 }
264 pPtrEnc->Uninitialize();
265}
266 312
267TEST_F (EncoderInterfaceTest, MemoryCheck) {313 iResult = pPtrEnc->Uninitialize();
268 MemoryCheckTest();314 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
269}315}
270 316
271void GetValidEncParamBase (SEncParamBase* pEncParamBase) {317void GetValidEncParamBase (SEncParamBase* pEncParamBase) {
@@ -498,11 +544,10 @@ TEST_F (EncoderInterfaceTest, EncodeParameterSets) { · 226 unmodified lines
498 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));544 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
499 EXPECT_NE (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));545 EXPECT_NE (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));
500 546
501 pPtrEnc->Uninitialize();547 iResult = pPtrEnc->Uninitialize();
502 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));548 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
503}549}
504 550
505TEST_F (EncoderInterfaceTest, BasicReturnTypeTest) {551TEST_F (EncoderInterfaceTest, BasicReturnTypeTest) {
506 //TODO552 //TODO
507}553}
508

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