History

add interface UT for ForceIntraFrame

Sijia Chen committed 12 years ago

Commit bc76a8f1 parent c36f8641 file · +82 −5Browse files

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

Unified · Split

test/encoder/EncUT_EncoderExt.cpp+82−5
@@ -45,6 +45,7 @@ class EncoderInterfaceTest : public ::testing::Test { · 44 unmodified lines
4545 void TemporalLayerSettingTest();
4646 void EncodeOneFrame (SEncParamBase* pEncParamBase);
4747 void PrepareOneSrcFrame();
48+ void EncodeOneIDRandP (ISVCEncoder* pPtrEnc);
4849
4950 public:
5051 ISVCEncoder* pPtrEnc;
@@ -98,7 +99,17 @@ void EncoderInterfaceTest::EncodeOneFrame (SEncParamBase* pEncParamBase) { · 47 unmodified lines
9899 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
99100 }
100101
102+void EncoderInterfaceTest::EncodeOneIDRandP (ISVCEncoder* pPtrEnc) {
103+ int iResult;
104+
105+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
106+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
107+ EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));
101108
109+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
110+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
111+ EXPECT_NE (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR));
112+}
102113
103114 void EncoderInterfaceTest::TemporalLayerSettingTest() {
104115
@@ -163,13 +174,14 @@ TEST_F (EncoderInterfaceTest, TestTemporalLayerSetting) { · 58 unmodified lines
163174
164175 void GetValidEncParamBase (SEncParamBase* pEncParamBase) {
165176 pEncParamBase->iUsageType = CAMERA_VIDEO_REAL_TIME;
166− pEncParamBase->iPicWidth = abs ((rand() * 2) + MB_SIZE) % (MAX_WIDTH+1);
167− pEncParamBase->iPicHeight = abs ((rand() * 2) + MB_SIZE) % (MAX_HEIGHT+1);
177+ pEncParamBase->iPicWidth = abs ((rand() * 2) + MB_SIZE) % (MAX_WIDTH + 1);
178+ pEncParamBase->iPicHeight = abs ((rand() * 2) + MB_SIZE) % (MAX_HEIGHT + 1);
168179 pEncParamBase->iTargetBitrate = rand() + 1; //!=0
169180 pEncParamBase->iRCMode = RC_BITRATE_MODE; //-1, 0, 1, 2
170181 pEncParamBase->fMaxFrameRate = rand() + 0.5f; //!=0
171182 }
172183
184+
173185 TEST_F (EncoderInterfaceTest, BasicInitializeTest) {
174186 SEncParamBase sEncParamBase;
175187 GetValidEncParamBase (&sEncParamBase);
@@ -178,7 +190,7 @@ TEST_F (EncoderInterfaceTest, BasicInitializeTest) { · 2 unmodified lines
178190 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
179191 if (iResult != cmResultSuccess) {
180192 fprintf (stderr, "Unexpected ParamBase? \
181− iUsageType=%d, Pic=%dx%d, TargetBitrate=%d, iRCMode=%d, fMaxFrameRate=%.1f\n",
193+ iUsageType=%d, Pic=%dx%d, TargetBitrate=%d, iRCMode=%d, fMaxFrameRate=%.1f\n",
182194 sEncParamBase.iUsageType, sEncParamBase.iPicWidth, sEncParamBase.iPicHeight,
183195 sEncParamBase.iTargetBitrate, sEncParamBase.iRCMode, sEncParamBase.fMaxFrameRate);
184196 }
@@ -193,8 +205,6 @@ TEST_F (EncoderInterfaceTest, BasicInitializeTest) { · 8 unmodified lines
193205 EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
194206 }
195207
196−
197−
198208 TEST_F (EncoderInterfaceTest, BasicInitializeTestFalse) {
199209 int iResult;
200210 SEncParamBase sEncParamBase;
@@ -280,3 +290,70 @@ TEST_F (EncoderInterfaceTest, BasicInitializeTestAutoAdjustment) { · 79 unmodified lines
280290 EXPECT_LE (sEncParamBase.fMaxFrameRate, 30.0);
281291 EXPECT_GE (sEncParamBase.fMaxFrameRate, 1.0);
282292 }
293+
294+
295+TEST_F (EncoderInterfaceTest, ForceIntraFrame) {
296+ SEncParamBase sEncParamBase;
297+ GetValidEncParamBase (&sEncParamBase);
298+
299+ int iResult = pPtrEnc->Initialize (&sEncParamBase);
300+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
301+ if (iResult != cmResultSuccess) {
302+ fprintf (stderr, "Unexpected ParamBase? \
303+ iUsageType=%d, Pic=%dx%d, TargetBitrate=%d, iRCMode=%d, fMaxFrameRate=%.1f\n",
304+ sEncParamBase.iUsageType, sEncParamBase.iPicWidth, sEncParamBase.iPicHeight,
305+ sEncParamBase.iTargetBitrate, sEncParamBase.iRCMode, sEncParamBase.fMaxFrameRate);
306+ }
307+
308+ PrepareOneSrcFrame();
309+
310+ bool bIDR = true;
311+ pPtrEnc->ForceIntraFrame (bIDR);
312+ EncodeOneIDRandP (pPtrEnc);
313+
314+ //call next frame to be IDR
315+ pPtrEnc->ForceIntraFrame (bIDR);
316+ EncodeOneIDRandP (pPtrEnc);
317+
318+ pPtrEnc->Uninitialize();
319+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
320+}
321+
322+TEST_F (EncoderInterfaceTest, ForceIntraFrameWithTemporal) {
323+ SEncParamExt sEncParamExt;
324+ pPtrEnc->GetDefaultParams (&sEncParamExt);
325+ sEncParamExt.iUsageType = CAMERA_VIDEO_REAL_TIME;
326+ sEncParamExt.iPicWidth = abs ((rand() * 2) + MB_SIZE) % (MAX_WIDTH + 1);
327+ sEncParamExt.iPicHeight = abs ((rand() * 2) + MB_SIZE) % (MAX_HEIGHT + 1);
328+ sEncParamExt.iTargetBitrate = rand() + 1; //!=0
329+ sEncParamExt.iRCMode = RC_BITRATE_MODE; //-1, 0, 1, 2
330+ sEncParamExt.fMaxFrameRate = rand() + 0.5f; //!=0
331+ sEncParamExt.sSpatialLayers[0].iVideoWidth = sEncParamExt.iPicWidth;
332+ sEncParamExt.sSpatialLayers[0].iVideoHeight = sEncParamExt.iPicHeight;
333+ sEncParamExt.sSpatialLayers[0].iSpatialBitrate = sEncParamExt.iTargetBitrate;
334+
335+ int iTargetTemporalLayerNum = rand() % MAX_TEMPORAL_LAYER_NUM;
336+ sEncParamExt.iTemporalLayerNum = (iTargetTemporalLayerNum > 2) ? iTargetTemporalLayerNum : 2;
337+
338+ int iResult = pPtrEnc->InitializeExt (&sEncParamExt);
339+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
340+ if (iResult != cmResultSuccess) {
341+ fprintf (stderr, "Unexpected ParamBase? \
342+ iUsageType=%d, Pic=%dx%d, TargetBitrate=%d, iRCMode=%d, fMaxFrameRate=%.1f\n",
343+ sEncParamExt.iUsageType, sEncParamExt.iPicWidth, sEncParamExt.iPicHeight,
344+ sEncParamExt.iTargetBitrate, sEncParamExt.iRCMode, sEncParamExt.fMaxFrameRate);
345+ }
346+
347+ PrepareOneSrcFrame();
348+
349+ bool bIDR = true;
350+ EncodeOneIDRandP (pPtrEnc);
351+
352+ //call next frame to be IDR
353+ pPtrEnc->ForceIntraFrame (bIDR);
354+ EncodeOneIDRandP (pPtrEnc);
355+
356+ pPtrEnc->Uninitialize();
357+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
358+}
359+

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