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
2#include <stdlib.h>2#include <stdlib.h>
3#include "codec_api.h"3#include "codec_api.h"
4#include "codec_app_def.h"4#include "codec_app_def.h"
5#include "svc_enc_slice_segment.h"
5#include "test_stdint.h"6#include "test_stdint.h"
6//TODO: consider using BaseEncoderTest class from #include "../BaseEncoderTest.h"7//TODO: consider using BaseEncoderTest class from #include "../BaseEncoderTest.h"
7 8
@@ -57,6 +58,7 @@ class EncoderInterfaceTest : public ::testing::Test { · 49 unmodified lines
57 }58 }
58 59
59 void InitializeParamExt();60 void InitializeParamExt();
61 void SetRandomParams();
60 void TemporalLayerSettingTest();62 void TemporalLayerSettingTest();
61 void MemoryCheckTest();63 void MemoryCheckTest();
62 void EncodeOneFrame (SEncParamBase* pEncParamBase);64 void EncodeOneFrame (SEncParamBase* pEncParamBase);
@@ -65,12 +67,10 @@ class EncoderInterfaceTest : public ::testing::Test { · 2 unmodified lines
65 67
66 public:68 public:
67 ISVCEncoder* pPtrEnc;69 ISVCEncoder* pPtrEnc;
68
69 SEncParamExt* pParamExt;70 SEncParamExt* pParamExt;
70 SSourcePicture* pSrcPic;71 SSourcePicture* pSrcPic;
71 SEncParamExt* pOption;72 SEncParamExt* pOption;
72 unsigned char* pYUV;73 unsigned char* pYUV;
73
74 SFrameBSInfo sFbi;74 SFrameBSInfo sFbi;
75 75
76 int m_iWidth;76 int m_iWidth;
@@ -84,9 +84,13 @@ void EncoderInterfaceTest::PrepareOneSrcFrame() { · 7 unmodified lines
84 pSrcPic->iPicWidth = pParamExt->iPicWidth;84 pSrcPic->iPicWidth = pParamExt->iPicWidth;
85 pSrcPic->iPicHeight = pParamExt->iPicHeight;85 pSrcPic->iPicHeight = pParamExt->iPicHeight;
86 86
87 for (int i = 0; i < m_iPicResSize; i++)87 pYUV[0] = rand() % 256;
88 pYUV[i] = rand() % 256;88 for (int i = 1; i < m_iPicResSize; i++){
89 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 }
90 pSrcPic->iStride[0] = m_iWidth;94 pSrcPic->iStride[0] = m_iWidth;
91 pSrcPic->iStride[1] = pSrcPic->iStride[2] = pSrcPic->iStride[0] >> 1;95 pSrcPic->iStride[1] = pSrcPic->iStride[2] = pSrcPic->iStride[0] >> 1;
92 96
@@ -94,7 +98,6 @@ void EncoderInterfaceTest::PrepareOneSrcFrame() { · 1 unmodified line
94 pSrcPic->pData[1] = pSrcPic->pData[0] + (m_iWidth * m_iHeight);98 pSrcPic->pData[1] = pSrcPic->pData[0] + (m_iWidth * m_iHeight);
95 pSrcPic->pData[2] = pSrcPic->pData[1] + (m_iWidth * m_iHeight >> 2);99 pSrcPic->pData[2] = pSrcPic->pData[1] + (m_iWidth * m_iHeight >> 2);
96 100
97 //clean the output
98 memset (&sFbi, 0, sizeof (SFrameBSInfo));101 memset (&sFbi, 0, sizeof (SFrameBSInfo));
99}102}
100 103
@@ -136,22 +139,128 @@ void EncoderInterfaceTest::InitializeParamExt() { · 35 unmodified lines
136 pParamExt->sSpatialLayers[0].iSpatialBitrate = 50000;139 pParamExt->sSpatialLayers[0].iSpatialBitrate = 50000;
137}140}
138 141
142TEST_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
139TEST_F (EncoderInterfaceTest, TemporalLayerSettingTest) {249TEST_F (EncoderInterfaceTest, TemporalLayerSettingTest) {
140 250
141 pParamExt->iPicWidth = 1280;251 pParamExt->iPicWidth = m_iWidth;
142 pParamExt->iPicHeight = 720;252 pParamExt->iPicHeight = m_iHeight;
143 m_iWidth = pParamExt->iPicWidth;
144 m_iHeight = pParamExt->iPicHeight;
145 pParamExt->iTargetBitrate = 60000;253 pParamExt->iTargetBitrate = 60000;
146 pParamExt->sSpatialLayers[0].iVideoHeight = pParamExt->iPicHeight;254 pParamExt->sSpatialLayers[0].iVideoHeight = pParamExt->iPicHeight;
147 pParamExt->sSpatialLayers[0].iVideoWidth = pParamExt->iPicWidth;255 pParamExt->sSpatialLayers[0].iVideoWidth = pParamExt->iPicWidth;
148 pParamExt->sSpatialLayers[0].iSpatialBitrate = 50000;256 pParamExt->sSpatialLayers[0].iSpatialBitrate = 50000;
149 pParamExt->iTemporalLayerNum = 1;257 pParamExt->iTemporalLayerNum = 1;
150 pParamExt->iSpatialLayerNum = 1;258 pParamExt->iSpatialLayerNum = 1;
259 int iResult;
151 260
152 for(int i = 0; i < 2; i++){261 for(int i = 0; i < 2; i++){
153 pParamExt->iUsageType = (( i == 0 ) ? SCREEN_CONTENT_REAL_TIME : CAMERA_VIDEO_REAL_TIME);262 pParamExt->iUsageType = (( i == 0 ) ? SCREEN_CONTENT_REAL_TIME : CAMERA_VIDEO_REAL_TIME);
154 int iResult = pPtrEnc->InitializeExt (pParamExt);263 iResult = pPtrEnc->InitializeExt (pParamExt);
155 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));264 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
156 265
157 PrepareOneSrcFrame();266 PrepareOneSrcFrame();
@@ -198,46 +307,6 @@ TEST_F (EncoderInterfaceTest, TemporalLayerSettingTest) { · 40 unmodified lines
198 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));307 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
199 }308 }
200 309
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
241 iResult = pPtrEnc->Uninitialize();310 iResult = pPtrEnc->Uninitialize();
242 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));311 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
243 312

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