History

add interface and basic implementaion and UT for EncoderStatistics

Sijia Chen committed 12 years ago

Commit a7651971 parent d7201228 files · +237 −2Browse files

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

Unified · Split

test/encoder/EncUT_EncoderExt.cpp+80−0
@@ -661,3 +661,83 @@ TEST_F (EncoderInterfaceTest, EncodeParameterSets) { · 660 unmodified lines
661661 TEST_F (EncoderInterfaceTest, BasicReturnTypeTest) {
662662 //TODO
663663 }
664+
665+TEST_F (EncoderInterfaceTest, GetStatistics) {
666+ SEncParamBase sEncParamBase;
667+ GetValidEncParamBase (&sEncParamBase);
668+
669+ int iResult = pPtrEnc->Initialize (&sEncParamBase);
670+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
671+ if (iResult != cmResultSuccess) {
672+ fprintf (stderr, "Unexpected ParamBase? \
673+ iUsageType=%d, Pic=%dx%d, TargetBitrate=%d, iRCMode=%d, fMaxFrameRate=%.1f\n",
674+ sEncParamBase.iUsageType, sEncParamBase.iPicWidth, sEncParamBase.iPicHeight,
675+ sEncParamBase.iTargetBitrate, sEncParamBase.iRCMode, sEncParamBase.fMaxFrameRate);
676+ }
677+
678+ PrepareOneSrcFrame();
679+ EncodeOneIDRandP (pPtrEnc);
680+
681+ SEncoderStatistics sEncoderStatistics;
682+ iResult = pPtrEnc->GetOption (ENCODER_OPTION_GET_STATISTICS, &sEncoderStatistics);
683+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
684+ EXPECT_EQ (sEncoderStatistics.uiInputFrameCount, 2);
685+ EXPECT_EQ (sEncoderStatistics.uIDRSentNum, 1);
686+ EXPECT_EQ (sEncoderStatistics.uiResolutionChangeTimes, 0);
687+
688+ EXPECT_EQ (sEncoderStatistics.uWidth, sEncParamBase.iPicWidth);
689+ EXPECT_EQ (sEncoderStatistics.uHeight, sEncParamBase.iPicHeight);
690+
691+ // try param change
692+ // 1, get the existing
693+ pPtrEnc->GetOption (ENCODER_OPTION_SVC_ENCODE_PARAM_EXT, pParamExt);
694+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
695+
696+ // 2, change the reoslution
697+ GetValidEncParamBase (&sEncParamBase);
698+ int32_t knownResolutionChangeTimes = 0;
699+ if (pParamExt->iPicWidth != sEncParamBase.iPicWidth || pParamExt->iPicHeight != sEncParamBase.iPicHeight) {
700+ knownResolutionChangeTimes = 1;
701+ }
702+ pParamExt->iPicWidth = pParamExt->sSpatialLayers[0].iVideoWidth = sEncParamBase.iPicWidth;
703+ pParamExt->iPicHeight = pParamExt->sSpatialLayers[0].iVideoHeight = sEncParamBase.iPicHeight;
704+ pPtrEnc->SetOption (ENCODER_OPTION_SVC_ENCODE_PARAM_EXT, pParamExt);
705+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
706+
707+ // 3, code one frame
708+ PrepareOneSrcFrame();
709+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
710+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
711+ iResult = pPtrEnc->GetOption (ENCODER_OPTION_GET_STATISTICS, &sEncoderStatistics);
712+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
713+
714+ EXPECT_EQ (sEncoderStatistics.uiInputFrameCount, 3);
715+ EXPECT_EQ (sEncoderStatistics.uIDRSentNum, 2);
716+ EXPECT_EQ (sEncoderStatistics.uiResolutionChangeTimes, knownResolutionChangeTimes);
717+
718+ EXPECT_EQ (sEncoderStatistics.uWidth, sEncParamBase.iPicWidth);
719+ EXPECT_EQ (sEncoderStatistics.uHeight, sEncParamBase.iPicHeight);
720+
721+ // 4, change log interval
722+ int32_t iInterval = 0;
723+ iResult = pPtrEnc->GetOption (ENCODER_OPTION_STATISTICS_LOG_INTERVAL, &iInterval);
724+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
725+ EXPECT_EQ (iInterval, 5000);
726+
727+ int32_t iInterval2 = 2000;
728+ iResult = pPtrEnc->SetOption (ENCODER_OPTION_STATISTICS_LOG_INTERVAL, &iInterval2);
729+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
730+ iResult = pPtrEnc->GetOption (ENCODER_OPTION_STATISTICS_LOG_INTERVAL, &iInterval);
731+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
732+ EXPECT_EQ (iInterval, iInterval2);
733+
734+ iInterval2 = 0;
735+ iResult = pPtrEnc->SetOption (ENCODER_OPTION_STATISTICS_LOG_INTERVAL, &iInterval2);
736+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
737+ iResult = pPtrEnc->GetOption (ENCODER_OPTION_STATISTICS_LOG_INTERVAL, &iInterval);
738+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
739+ EXPECT_EQ (iInterval, iInterval2);
740+
741+ // finish
742+ pPtrEnc->Uninitialize();
743+}

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