History

add interface UT for memory align check

lyao2 committed 12 years ago

Commit d633f851 parent 010e4231 file · +118 −30Browse files

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

Unified · Split

test/encoder/EncUT_EncoderExt.cpp+118−30
@@ -53,6 +53,7 @@ class EncoderInterfaceTest : public ::testing::Test { · 52 unmodified lines
5353 }
5454
5555 void TemporalLayerSettingTest();
56+ void MemoryCheckTest();
5657 void EncodeOneFrame (SEncParamBase* pEncParamBase);
5758 void PrepareOneSrcFrame();
5859 void EncodeOneIDRandP (ISVCEncoder* pPtrEnc);
@@ -130,54 +131,141 @@ void EncoderInterfaceTest::TemporalLayerSettingTest() { · 71 unmodified lines
130131 pParamExt->iTemporalLayerNum = 1;
131132 pParamExt->iSpatialLayerNum = 1;
132133
134+ for(int i = 0; i < 2; i++){
135+ pParamExt->iUsageType = (( i == 0 ) ? SCREEN_CONTENT_REAL_TIME : CAMERA_VIDEO_REAL_TIME);
136+ int iResult = pPtrEnc->InitializeExt (pParamExt);
137+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
138+
139+ PrepareOneSrcFrame();
140+
141+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
142+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
143+ EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));
144+
145+ pSrcPic->uiTimeStamp = 30;
146+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
147+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
148+ EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP));
149+
150+ memcpy (pOption, pParamExt, sizeof (SEncParamExt));
151+ pOption ->iTemporalLayerNum = 4;
152+
153+ ENCODER_OPTION eOptionId = ENCODER_OPTION_SVC_ENCODE_PARAM_EXT;
154+ iResult = pPtrEnc->SetOption (eOptionId, pOption);
155+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
156+
157+ pSrcPic->uiTimeStamp = 60;
158+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
159+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
160+ EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));
161+
162+ pOption ->iTemporalLayerNum = 2;
163+ iResult = pPtrEnc->SetOption (eOptionId, pOption);
164+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
165+ pSrcPic->uiTimeStamp = 90;
166+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
167+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
168+ EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP));
169+
170+ pOption ->iTemporalLayerNum = 4;
171+ iResult = pPtrEnc->SetOption (eOptionId, pOption);
172+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
173+ pSrcPic->uiTimeStamp = 120;
174+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
175+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
176+ EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP));
177+
178+ pPtrEnc->Uninitialize();
179+ }
180+}
181+
182+TEST_F (EncoderInterfaceTest, TestTemporalLayerSetting) {
183+ TemporalLayerSettingTest();
184+}
185+
186+void EncoderInterfaceTest::MemoryCheckTest() {
187+ #define MEM_VARY_SIZE 1024
188+ #define IMAGE_VARY_SIZE 512
189+ #define TEST_FRAMES 500
190+
191+ pParamExt->iPicWidth = 1280;
192+ 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+
133200 int iResult = pPtrEnc->InitializeExt (pParamExt);
134− EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
201+ const int kiFrameNumber = TEST_FRAMES;
135202
203+ m_iWidth = pParamExt->iPicWidth;
204+ m_iHeight = pParamExt->iPicHeight;
205+ m_iPicResSize = m_iWidth * m_iHeight * 3 >> 1;
206+ delete []pYUV;
207+ pYUV = new unsigned char [m_iPicResSize];
136208 PrepareOneSrcFrame();
137209
138− iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
139− EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
140− EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));
210+ for(int i = 0; i < kiFrameNumber; i ++){
211+ int iStartX = rand() % (m_iPicResSize >> 1);
212+ int iEndX = (iStartX + (rand() % MEM_VARY_SIZE)) % m_iPicResSize;
213+ for (int j = iStartX; j < iEndX; j++)
214+ pYUV[j] = rand() % 256;
141215
142− pSrcPic->uiTimeStamp = 30;
143− iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
144− EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
145− EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP));
216+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
217+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
218+ pSrcPic->uiTimeStamp += 30;
219+ }
146220
147− memcpy (pOption, pParamExt, sizeof (SEncParamExt));
148− pOption ->iTemporalLayerNum = 4;
221+ pParamExt->iPicWidth += (rand() << 1) % IMAGE_VARY_SIZE;
222+ pParamExt->iPicHeight += (rand() << 1) % IMAGE_VARY_SIZE;
223+ m_iWidth = pParamExt->iPicWidth;
224+ m_iHeight = pParamExt->iPicHeight;
225+ m_iPicResSize = m_iWidth * m_iHeight * 3 >> 1;
226+ delete []pYUV;
227+ pYUV = new unsigned char [m_iPicResSize];
228+
229+ iResult = pPtrEnc->InitializeExt (pParamExt);
230+ PrepareOneSrcFrame();
149231
150232 ENCODER_OPTION eOptionId = ENCODER_OPTION_SVC_ENCODE_PARAM_EXT;
233+ memcpy (pOption, pParamExt, sizeof (SEncParamExt));
234+ pOption ->iPicWidth = m_iWidth;
235+ pOption ->iPicHeight = m_iHeight;
151236 iResult = pPtrEnc->SetOption (eOptionId, pOption);
152237 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
153238
154− pSrcPic->uiTimeStamp = 60;
155− iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
156− EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
157− EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));
239+ for(int i = 0; i < kiFrameNumber; i ++){
240+ int iStartX = rand() % (m_iPicResSize >> 1);
241+ int iEndX = (iStartX + (rand() % MEM_VARY_SIZE)) % m_iPicResSize;
242+ for (int j = iStartX; j < iEndX; j++)
243+ pYUV[j] = rand() % 256;
158244
159− pOption ->iTemporalLayerNum = 2;
160− iResult = pPtrEnc->SetOption (eOptionId, pOption);
161− EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
162− pSrcPic->uiTimeStamp = 90;
163− iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
164− EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
165− EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP));
245+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
246+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
247+ pSrcPic->uiTimeStamp += 30;
248+ }
166249
167− pOption ->iTemporalLayerNum = 4;
250+ pOption ->iLTRRefNum += rand() % 8 + 1;
168251 iResult = pPtrEnc->SetOption (eOptionId, pOption);
169252 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
170− pSrcPic->uiTimeStamp = 120;
171− iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
172− EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
173− EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP));
174253
175− pPtrEnc->Uninitialize();
254+ for(int i = 0; i < kiFrameNumber; i ++){
255+ int iStartX = rand() % (m_iPicResSize >> 1);
256+ int iEndX = (iStartX + (rand() % MEM_VARY_SIZE)) % m_iPicResSize;
257+ for (int j = iStartX; j < iEndX; j++)
258+ pYUV[j] = rand() % 256;
176259
260+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
261+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
262+ pSrcPic->uiTimeStamp += 30;
263+ }
264+ pPtrEnc->Uninitialize();
177265 }
178266
179−TEST_F (EncoderInterfaceTest, TestTemporalLayerSetting) {
180− TemporalLayerSettingTest();
267+TEST_F (EncoderInterfaceTest, MemoryCheck) {
268+ MemoryCheckTest();
181269 }
182270
183271 void GetValidEncParamBase (SEncParamBase* pEncParamBase) {
@@ -210,7 +298,7 @@ TEST_F (EncoderInterfaceTest, BasicInitializeTest) { · 26 unmodified lines
210298 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
211299 EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));
212300
213− pPtrEnc->Uninitialize();
301+ iResult = pPtrEnc->Uninitialize();
214302 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
215303 }
216304

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