History

add additional option set test

lyao2 committed 12 years ago

Commit 24bd0b71 parent 0951c8f1 file · +120 −51Browse files

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

Unified · Split

test/encoder/EncUT_EncoderExt.cpp+120−51
@@ -2,6 +2,7 @@ · 1 unmodified line
22 #include <stdlib.h>
33 #include "codec_api.h"
44 #include "codec_app_def.h"
5+#include "svc_enc_slice_segment.h"
56 #include "test_stdint.h"
67 //TODO: consider using BaseEncoderTest class from #include "../BaseEncoderTest.h"
78
@@ -57,6 +58,7 @@ class EncoderInterfaceTest : public ::testing::Test { · 49 unmodified lines
5758 }
5859
5960 void InitializeParamExt();
61+ void SetRandomParams();
6062 void TemporalLayerSettingTest();
6163 void MemoryCheckTest();
6264 void EncodeOneFrame (SEncParamBase* pEncParamBase);
@@ -65,12 +67,10 @@ class EncoderInterfaceTest : public ::testing::Test { · 2 unmodified lines
6567
6668 public:
6769 ISVCEncoder* pPtrEnc;
68−
6970 SEncParamExt* pParamExt;
7071 SSourcePicture* pSrcPic;
7172 SEncParamExt* pOption;
7273 unsigned char* pYUV;
73−
7474 SFrameBSInfo sFbi;
7575
7676 int m_iWidth;
@@ -84,9 +84,13 @@ void EncoderInterfaceTest::PrepareOneSrcFrame() { · 7 unmodified lines
8484 pSrcPic->iPicWidth = pParamExt->iPicWidth;
8585 pSrcPic->iPicHeight = pParamExt->iPicHeight;
8686
87− for (int i = 0; i < m_iPicResSize; i++)
88− pYUV[i] = rand() % 256;
89−
87+ pYUV[0] = rand() % 256;
88+ for (int i = 1; i < m_iPicResSize; i++){
89+ if((i%256) == 0)
90+ pYUV[i] = rand() % 256;
91+ else
92+ pYUV[i] = WELS_CLIP3(pYUV[i-1]+(rand()%3)-1,0,255);
93+ }
9094 pSrcPic->iStride[0] = m_iWidth;
9195 pSrcPic->iStride[1] = pSrcPic->iStride[2] = pSrcPic->iStride[0] >> 1;
9296
@@ -94,7 +98,6 @@ void EncoderInterfaceTest::PrepareOneSrcFrame() { · 1 unmodified line
9498 pSrcPic->pData[1] = pSrcPic->pData[0] + (m_iWidth * m_iHeight);
9599 pSrcPic->pData[2] = pSrcPic->pData[1] + (m_iWidth * m_iHeight >> 2);
96100
97− //clean the output
98101 memset (&sFbi, 0, sizeof (SFrameBSInfo));
99102 }
100103
@@ -136,22 +139,128 @@ void EncoderInterfaceTest::InitializeParamExt() { · 35 unmodified lines
136139 pParamExt->sSpatialLayers[0].iSpatialBitrate = 50000;
137140 }
138141
142+TEST_F (EncoderInterfaceTest, EncoderAdditionalOptionSetTest) {
143+ int iResult, iValue, iReturn;
144+ float fValue, fReturn;
145+
146+ InitializeParamExt();
147+ iResult = pPtrEnc->InitializeExt (pParamExt);
148+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
149+
150+ PrepareOneSrcFrame();
151+
152+ ENCODER_OPTION eOptionId = ENCODER_OPTION_DATAFORMAT;
153+ iValue = rand() % 256;
154+ iResult = pPtrEnc->SetOption (eOptionId, &iValue);
155+
156+ if (iValue ==0)
157+ EXPECT_EQ (iResult, static_cast<int> (cmInitParaError));
158+ else
159+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
160+
161+ iResult = pPtrEnc->GetOption (eOptionId, &iReturn);
162+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
163+ EXPECT_EQ (iValue, iReturn);
164+
165+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
166+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
167+ pSrcPic->uiTimeStamp += 30;
168+
169+ eOptionId = ENCODER_OPTION_IDR_INTERVAL;
170+ iValue = rand() % 256 - 5;
171+ iResult = pPtrEnc->SetOption (eOptionId, &iValue);
172+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
173+
174+ iResult = pPtrEnc->GetOption (eOptionId, &iReturn);
175+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
176+ EXPECT_EQ (iValue, iReturn);
177+
178+ PrepareOneSrcFrame();
179+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
180+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
181+ pSrcPic->uiTimeStamp += 30;
182+
183+ eOptionId = ENCODER_OPTION_FRAME_RATE;
184+ fValue = static_cast<int> (rand() % 60 - 5);
185+ iResult = pPtrEnc->SetOption (eOptionId, &fValue);
186+
187+ if (fValue <=0)
188+ EXPECT_EQ (iResult, static_cast<int> (cmInitParaError));
189+ else{
190+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
191+
192+ iResult = pPtrEnc->GetOption (eOptionId, &fReturn);
193+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
194+ EXPECT_EQ (WELS_CLIP3 (fValue, 1, 30), fReturn);
195+ }
196+ PrepareOneSrcFrame();
197+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
198+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
199+ pSrcPic->uiTimeStamp += 30;
200+
201+ eOptionId = ENCODER_OPTION_BITRATE;
202+ SBitrateInfo sInfo,sReturn;
203+ sInfo.iBitrate = rand() % 100000 - 100;
204+ sInfo.iLayer = static_cast<LAYER_NUM>(pParamExt->iSpatialLayerNum);
205+ iResult = pPtrEnc->SetOption (eOptionId, &sInfo);
206+ if (sInfo.iBitrate <=0)
207+ EXPECT_EQ (iResult, static_cast<int> (cmInitParaError));
208+ else{
209+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
210+ sReturn.iLayer = static_cast<LAYER_NUM>(pParamExt->iSpatialLayerNum);
211+ iResult = pPtrEnc->GetOption (eOptionId, &sReturn);
212+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
213+ EXPECT_EQ (WELS_CLIP3 (sInfo.iBitrate, 1, 2147483647), sReturn.iBitrate);
214+ }
215+ PrepareOneSrcFrame();
216+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
217+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
218+ pSrcPic->uiTimeStamp += 30;
219+
220+ eOptionId = ENCODER_OPTION_MAX_BITRATE;
221+ sInfo.iBitrate = rand() % 100000 - 100;
222+ sInfo.iLayer = static_cast<LAYER_NUM>(pParamExt->iSpatialLayerNum);
223+ iResult = pPtrEnc->SetOption (eOptionId, &sInfo);
224+ if (sInfo.iBitrate <=0)
225+ EXPECT_EQ (iResult, static_cast<int> (cmInitParaError));
226+ else{
227+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
228+ sReturn.iLayer = static_cast<LAYER_NUM>(pParamExt->iSpatialLayerNum);
229+ iResult = pPtrEnc->GetOption (eOptionId, &sReturn);
230+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
231+ EXPECT_EQ (WELS_CLIP3 (sInfo.iBitrate, 1, 2147483647), sReturn.iBitrate);
232+ }
233+ PrepareOneSrcFrame();
234+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
235+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
236+ pSrcPic->uiTimeStamp += 30;
237+
238+ eOptionId = ENCODER_OPTION_RC_MODE;
239+ iValue = (rand() % 4) - 1;
240+ iResult = pPtrEnc->SetOption (eOptionId, &iValue);
241+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
242+
243+ PrepareOneSrcFrame();
244+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
245+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
246+ pSrcPic->uiTimeStamp += 30;
247+}
248+
139249 TEST_F (EncoderInterfaceTest, TemporalLayerSettingTest) {
140250
141− pParamExt->iPicWidth = 1280;
142− pParamExt->iPicHeight = 720;
143− m_iWidth = pParamExt->iPicWidth;
144− m_iHeight = pParamExt->iPicHeight;
251+ pParamExt->iPicWidth = m_iWidth;
252+ pParamExt->iPicHeight = m_iHeight;
145253 pParamExt->iTargetBitrate = 60000;
146254 pParamExt->sSpatialLayers[0].iVideoHeight = pParamExt->iPicHeight;
147255 pParamExt->sSpatialLayers[0].iVideoWidth = pParamExt->iPicWidth;
148256 pParamExt->sSpatialLayers[0].iSpatialBitrate = 50000;
149257 pParamExt->iTemporalLayerNum = 1;
150258 pParamExt->iSpatialLayerNum = 1;
259+ int iResult;
151260
152261 for(int i = 0; i < 2; i++){
153262 pParamExt->iUsageType = (( i == 0 ) ? SCREEN_CONTENT_REAL_TIME : CAMERA_VIDEO_REAL_TIME);
154− int iResult = pPtrEnc->InitializeExt (pParamExt);
263+ iResult = pPtrEnc->InitializeExt (pParamExt);
155264 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
156265
157266 PrepareOneSrcFrame();
@@ -198,46 +307,6 @@ TEST_F (EncoderInterfaceTest, TemporalLayerSettingTest) { · 40 unmodified lines
198307 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
199308 }
200309
201− InitializeParamExt();
202− pParamExt->iUsageType = (rand() % 2) ? SCREEN_CONTENT_REAL_TIME : CAMERA_VIDEO_REAL_TIME;
203− pParamExt->iRCMode = (rand() % 2) ? RC_BITRATE_MODE : RC_QUALITY_MODE;
204−
205− int iResult = pPtrEnc->InitializeExt (pParamExt);
206− const int kiFrameNumber = TEST_FRAMES;
207−
208− m_iWidth = pParamExt->iPicWidth;
209− m_iHeight = pParamExt->iPicHeight;
210− m_iPicResSize = m_iWidth * m_iHeight * 3 >> 1;
211− delete []pYUV;
212− pYUV = new unsigned char [m_iPicResSize];
213− ASSERT_TRUE (pYUV != NULL);
214− PrepareOneSrcFrame();
215−
216− ENCODER_OPTION eOptionId = ENCODER_OPTION_SVC_ENCODE_PARAM_EXT;
217− memcpy (pOption, pParamExt, sizeof (SEncParamExt));
218−
219− for(int i = 0; i < kiFrameNumber; i ++){
220− if ((i%7) == 0){
221− if (pOption->iTemporalLayerNum<4){
222− pOption->iTemporalLayerNum++;
223− } else {
224− pOption->iTemporalLayerNum--;
225− }
226− iResult = pPtrEnc->SetOption (eOptionId, pOption);
227− EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
228− pSrcPic->uiTimeStamp += 30;
229− }
230−
231− int iStartX = rand() % (m_iPicResSize >> 1);
232− int iEndX = (iStartX + (rand() % MEM_VARY_SIZE)) % m_iPicResSize;
233− for (int j = iStartX; j < iEndX; j++)
234− pYUV[j] = rand() % 256;
235−
236− iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
237− EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
238− pSrcPic->uiTimeStamp += 30;
239− }
240−
241310 iResult = pPtrEnc->Uninitialize();
242311 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
243312

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