History

adjust encoder tasks, add ut and enable new thread pool under some slice modes

Sijia Chen committed 11 years ago

Commit 054a2971 parent 1a7a3e215 files · +330 −44Browse files

Showing the changes to test/api/encode_decode_api_test.cpp (1 of 15 files). Show all

Unified · Split

test/api/encode_decode_api_test.cpp+67−0
@@ -3727,4 +3727,71 @@ TEST_F (EncodeDecodeTestAPI, SimulcastAVCDiffFps) { · 3726 unmodified lines
37273727 #endif
37283728 }
37293729
3730+TEST_F (EncodeDecodeTestAPI, DiffSlicingInDlayer) {
3731+ int iSpatialLayerNum = 3;
3732+ int iWidth = WelsClip3 ((((rand() % MAX_WIDTH) >> 1) + 1) << 1, (64 << 2), MAX_WIDTH);
3733+ int iHeight = WelsClip3 ((((rand() % MAX_HEIGHT) >> 1) + 1) << 1, (64 << 2), 2240);//TODO: use MAX_HEIGHT after the limit is removed
3734+ float fFrameRate = rand() + 0.5f;
3735+ int iEncFrameNum = WelsClip3 ((rand() % ENCODE_FRAME_NUM) + 1, 1, ENCODE_FRAME_NUM);
3736+
3737+ // prepare params
3738+ SEncParamExt sParam;
3739+ encoder_->GetDefaultParams (&sParam);
3740+ prepareParamDefault (iSpatialLayerNum, 1, iWidth, iHeight, fFrameRate, &sParam);
3741+ sParam.iMultipleThreadIdc = (rand()%4) + 1;
3742+ sParam.bSimulcastAVC = 1;
3743+ sParam.sSpatialLayers[0].iVideoWidth = (iWidth >> 2);
3744+ sParam.sSpatialLayers[0].iVideoHeight = (iHeight >> 2);
3745+ sParam.sSpatialLayers[0].sSliceCfg.uiSliceMode = SM_ROWMB_SLICE;
3746+
3747+ sParam.sSpatialLayers[1].iVideoWidth = (iWidth >> 1);
3748+ sParam.sSpatialLayers[1].iVideoHeight = (iHeight >> 1);
3749+ sParam.sSpatialLayers[1].sSliceCfg.uiSliceMode = SM_RASTER_SLICE;
3750+ sParam.sSpatialLayers[1].sSliceCfg.sSliceArgument.uiSliceMbNum[0] = 30;
3751+ sParam.sSpatialLayers[1].sSliceCfg.sSliceArgument.uiSliceMbNum[1] = 32;
3752+
3753+ sParam.sSpatialLayers[2].iVideoWidth = iWidth;
3754+ sParam.sSpatialLayers[2].iVideoHeight = iHeight;
3755+ sParam.sSpatialLayers[2].sSliceCfg.uiSliceMode = SM_FIXEDSLCNUM_SLICE;
3756+ sParam.sSpatialLayers[2].sSliceCfg.sSliceArgument.uiSliceNum = 4;
3757+
3758+ int rv = encoder_->InitializeExt (&sParam);
3759+ ASSERT_TRUE (rv == cmResultSuccess) << "Init Failed sParam: rv = " << rv;;
3760+
3761+ unsigned char* pBsBuf[MAX_SPATIAL_LAYER_NUM];
3762+ ISVCDecoder* decoder[MAX_SPATIAL_LAYER_NUM];
3763+
3764+ int iIdx = 0;
3765+
3766+ //create decoder
3767+ for (iIdx = 0; iIdx < iSpatialLayerNum; iIdx++) {
3768+ pBsBuf[iIdx] = static_cast<unsigned char*> (malloc (iWidth * iHeight * 3 * sizeof (unsigned char) / 2));
3769+ EXPECT_TRUE (pBsBuf[iIdx] != NULL);
3770+
3771+ long rv = WelsCreateDecoder (&decoder[iIdx]);
3772+ ASSERT_EQ (0, rv);
3773+ EXPECT_TRUE (decoder[iIdx] != NULL);
3774+
3775+ SDecodingParam decParam;
3776+ memset (&decParam, 0, sizeof (SDecodingParam));
3777+ decParam.eOutputColorFormat = videoFormatI420;
3778+ decParam.uiTargetDqLayer = UCHAR_MAX;
3779+ decParam.eEcActiveIdc = ERROR_CON_SLICE_COPY;
3780+ decParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT;
3781+
3782+ rv = decoder[iIdx]->Initialize (&decParam);
3783+ ASSERT_EQ (0, rv);
3784+ }
3785+
3786+ TestOneSimulcastAVC (&sParam, decoder, pBsBuf, iSpatialLayerNum, iEncFrameNum, 0);
37303787
3788+ for (iIdx = 0; iIdx < iSpatialLayerNum; iIdx++) {
3789+ free (pBsBuf[iIdx]);
3790+
3791+ if (decoder[iIdx] != NULL) {
3792+ decoder[iIdx]->Uninitialize();
3793+ WelsDestroyDecoder (decoder[iIdx]);
3794+ }
3795+
3796+ }
3797+}

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