History

1, fix a potential overflow 2, remove some unnecessary multiplier and add input check of spatial BR

Sijia Chen committed 11 years ago

Commit 57528881 parent a00dd567 files · +7810 −7737Browse files

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

Unified · Split

test/encoder/EncUT_EncoderExt.cpp+69−0
@@ -886,3 +886,72 @@ TEST_F (EncoderInterfaceTest, FrameSizeCheck) { · 885 unmodified lines
886886 // finish
887887 pPtrEnc->Uninitialize();
888888 }
889+
890+TEST_F (EncoderInterfaceTest, SkipFrameCheck) {
891+ SEncParamExt sEncParamExt;
892+ int iResult = pPtrEnc->GetDefaultParams (&sEncParamExt);
893+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
894+
895+ //actual encode param: iUsageType = 0, spatial_layer_num = 1, temporal_layer_num = 3, frame_rate = 28.248587, target_bitrate = 573000, denoise =0, background_detection = 1, adaptive_quant = 1, enable_crop_pic = 1, scenechange_detection = 0, enable_long_term_reference = 0, ltr_mark_period = 30, ltr_ref_num = 0, enable_multiple_slice = 1, padding = 0, rc_mode = 1, enable_frame_skip = 1, max_bitrate = 573000, max_nalu_size = 0s
896+ //actual encode param: spatial 0: width=360, height=640, frame_rate=28.248587, spatial_bitrate=573000, max_layer_bitrate =895839855, max_nalu_size=0, slice_mode=1,this=0x7c62ee48
897+ sEncParamExt.iUsageType = CAMERA_VIDEO_REAL_TIME;
898+ sEncParamExt.iPicWidth = 360;
899+ sEncParamExt.iPicHeight = 640;
900+ sEncParamExt.iTargetBitrate = 573000;
901+ sEncParamExt.iRCMode = RC_BITRATE_MODE;
902+ sEncParamExt.fMaxFrameRate = 28.248587;
903+
904+ sEncParamExt.iTemporalLayerNum = 3;
905+ sEncParamExt.iSpatialLayerNum = 1;
906+ sEncParamExt.bEnableLongTermReference = 0;
907+ sEncParamExt.bEnableSceneChangeDetect = 0;
908+ sEncParamExt.bEnableFrameSkip = 1;
909+ sEncParamExt.iMaxBitrate = 895839855;
910+ sEncParamExt.uiMaxNalSize = 0;
911+
912+ sEncParamExt.sSpatialLayers[0].uiLevelIdc = LEVEL_5_0;
913+ sEncParamExt.sSpatialLayers[0].iVideoWidth = 360;
914+ sEncParamExt.sSpatialLayers[0].iVideoHeight = 640;
915+ sEncParamExt.sSpatialLayers[0].fFrameRate = 28.248587;
916+ sEncParamExt.sSpatialLayers[0].iSpatialBitrate = 573000;
917+ sEncParamExt.sSpatialLayers[0].iMaxSpatialBitrate = 895839855;
918+ sEncParamExt.sSpatialLayers[0].sSliceCfg.uiSliceMode = SM_FIXEDSLCNUM_SLICE;
919+
920+ pParamExt->iPicWidth = sEncParamExt.sSpatialLayers[0].iVideoWidth;
921+ pParamExt->iPicHeight = sEncParamExt.sSpatialLayers[0].iVideoHeight;
922+
923+ iResult = pPtrEnc->InitializeExt (&sEncParamExt);
924+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
925+ if (iResult != cmResultSuccess) {
926+ fprintf (stderr, "Unexpected sEncParamExt? \
927+ iUsageType=%d, Pic=%dx%d, TargetBitrate=%d, iRCMode=%d, fMaxFrameRate=%.1f\n",
928+ sEncParamExt.iUsageType, sEncParamExt.iPicWidth, sEncParamExt.iPicHeight,
929+ sEncParamExt.iTargetBitrate, sEncParamExt.iRCMode, sEncParamExt.fMaxFrameRate);
930+ }
931+
932+ int iInterval = 300;
933+ iResult = pPtrEnc->SetOption (ENCODER_OPTION_STATISTICS_LOG_INTERVAL, &iInterval);
934+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
935+
936+ SEncoderStatistics sEncoderStatistics;
937+ for (int i = 0; i < 50; i++) {
938+ PrepareOneSrcFrame();
939+ pSrcPic->uiTimeStamp = i * 33;
940+ iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
941+
942+ if (i == 25) {
943+ sEncParamExt.fMaxFrameRate = 28;
944+ sEncParamExt.sSpatialLayers[0].fFrameRate = 28;
945+ sEncParamExt.sSpatialLayers[0].iSpatialBitrate = 500000;
946+ iResult = pPtrEnc->SetOption (ENCODER_OPTION_SVC_ENCODE_PARAM_EXT, &sEncParamExt);
947+ EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess));
948+ }
949+
950+ }
951+ iResult = pPtrEnc->GetOption (ENCODER_OPTION_GET_STATISTICS, &sEncoderStatistics);
952+ EXPECT_TRUE ((sEncoderStatistics.uiInputFrameCount - sEncoderStatistics.uiSkippedFrameCount) > 2)
953+ << "uiInputFrameCount = " << sEncoderStatistics.uiInputFrameCount << ", uiSkippedFrameCount = " <<
954+ sEncoderStatistics.uiSkippedFrameCount;
955+ // finish
956+ pPtrEnc->Uninitialize();
957+}

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