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
661TEST_F (EncoderInterfaceTest, BasicReturnTypeTest) {661TEST_F (EncoderInterfaceTest, BasicReturnTypeTest) {
662 //TODO662 //TODO
663}663}
664
665TEST_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