Showing the changes to test/api/encode_decode_api_test.cpp (1 of 1 file). Show all
Unified · Split
| @@ -3738,7 +3738,7 @@ TEST_F (EncodeDecodeTestAPI, DiffSlicingInDlayer) { · 3737 unmodified lines | ||
| 3738 | 3738 | SEncParamExt sParam; |
| 3739 | 3739 | encoder_->GetDefaultParams (&sParam); |
| 3740 | 3740 | prepareParamDefault (iSpatialLayerNum, 1, iWidth, iHeight, fFrameRate, &sParam); |
| 3741 | − sParam.iMultipleThreadIdc = (rand()%4) + 1; | |
| 3741 | + sParam.iMultipleThreadIdc = (rand() % 4) + 1; | |
| 3742 | 3742 | sParam.bSimulcastAVC = 1; |
| 3743 | 3743 | sParam.sSpatialLayers[0].iVideoWidth = (iWidth >> 2); |
| 3744 | 3744 | sParam.sSpatialLayers[0].iVideoHeight = (iHeight >> 2); |
| @@ -3753,7 +3753,7 @@ TEST_F (EncodeDecodeTestAPI, DiffSlicingInDlayer) { · 8 unmodified lines | ||
| 3753 | 3753 | sParam.sSpatialLayers[2].iVideoWidth = iWidth; |
| 3754 | 3754 | sParam.sSpatialLayers[2].iVideoHeight = iHeight; |
| 3755 | 3755 | sParam.sSpatialLayers[2].sSliceCfg.uiSliceMode = SM_FIXEDSLCNUM_SLICE; |
| 3756 | − sParam.sSpatialLayers[2].sSliceCfg.sSliceArgument.uiSliceNum = 4; | |
| 3756 | + sParam.sSpatialLayers[2].sSliceCfg.sSliceArgument.uiSliceNum = (rand() % 30) + 1; | |
| 3757 | 3757 | |
| 3758 | 3758 | int rv = encoder_->InitializeExt (&sParam); |
| 3759 | 3759 | ASSERT_TRUE (rv == cmResultSuccess) << "Init Failed sParam: rv = " << rv;; |
| @@ -3795,3 +3795,65 @@ TEST_F (EncodeDecodeTestAPI, DiffSlicingInDlayer) { · 35 unmodified lines | ||
| 3795 | 3795 | |
| 3796 | 3796 | } |
| 3797 | 3797 | } |
| 3798 | + | |
| 3799 | +TEST_F (EncodeDecodeTestAPI, ThreadNumAndSliceNum) { | |
| 3800 | + int iSpatialLayerNum = 1; | |
| 3801 | + int iWidth = WelsClip3 ((((rand() % MAX_WIDTH) >> 1) + 1) << 1, (64 << 2), MAX_WIDTH); | |
| 3802 | + int iHeight = WelsClip3 ((((rand() % MAX_HEIGHT) >> 1) + 1) << 1, (64 << 2), | |
| 3803 | + 2240);//TODO: use MAX_HEIGHT after the limit is removed | |
| 3804 | + float fFrameRate = rand() + 0.5f; | |
| 3805 | + int iEncFrameNum = WelsClip3 ((rand() % ENCODE_FRAME_NUM) + 1, 1, ENCODE_FRAME_NUM); | |
| 3806 | + | |
| 3807 | + // prepare params | |
| 3808 | + SEncParamExt sParam; | |
| 3809 | + encoder_->GetDefaultParams (&sParam); | |
| 3810 | + prepareParamDefault (iSpatialLayerNum, 1, iWidth, iHeight, fFrameRate, &sParam); | |
| 3811 | + sParam.iMultipleThreadIdc = (rand() % 3) + 2; | |
| 3812 | + sParam.bSimulcastAVC = 1; | |
| 3813 | + sParam.sSpatialLayers[0].iVideoWidth = iWidth; | |
| 3814 | + sParam.sSpatialLayers[0].iVideoHeight = iHeight; | |
| 3815 | + sParam.sSpatialLayers[0].sSliceCfg.uiSliceMode = SM_FIXEDSLCNUM_SLICE; | |
| 3816 | + sParam.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceNum = (rand() % 2) ? (sParam.iMultipleThreadIdc + 1) : | |
| 3817 | + (sParam.iMultipleThreadIdc - 1); | |
| 3818 | + | |
| 3819 | + int rv = encoder_->InitializeExt (&sParam); | |
| 3820 | + ASSERT_TRUE (rv == cmResultSuccess) << "Init Failed sParam: rv = " << rv;; | |
| 3821 | + | |
| 3822 | + unsigned char* pBsBuf[MAX_SPATIAL_LAYER_NUM]; | |
| 3823 | + ISVCDecoder* decoder[MAX_SPATIAL_LAYER_NUM]; | |
| 3824 | + | |
| 3825 | + int iIdx = 0; | |
| 3826 | + | |
| 3827 | + //create decoder | |
| 3828 | + for (iIdx = 0; iIdx < iSpatialLayerNum; iIdx++) { | |
| 3829 | + pBsBuf[iIdx] = static_cast<unsigned char*> (malloc (iWidth * iHeight * 3 * sizeof (unsigned char) / 2)); | |
| 3830 | + EXPECT_TRUE (pBsBuf[iIdx] != NULL); | |
| 3831 | + | |
| 3832 | + long rv = WelsCreateDecoder (&decoder[iIdx]); | |
| 3833 | + ASSERT_EQ (0, rv); | |
| 3834 | + EXPECT_TRUE (decoder[iIdx] != NULL); | |
| 3835 | + | |
| 3836 | + SDecodingParam decParam; | |
| 3837 | + memset (&decParam, 0, sizeof (SDecodingParam)); | |
| 3838 | + decParam.eOutputColorFormat = videoFormatI420; | |
| 3839 | + decParam.uiTargetDqLayer = UCHAR_MAX; | |
| 3840 | + decParam.eEcActiveIdc = ERROR_CON_SLICE_COPY; | |
| 3841 | + decParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT; | |
| 3842 | + | |
| 3843 | + rv = decoder[iIdx]->Initialize (&decParam); | |
| 3844 | + ASSERT_EQ (0, rv); | |
| 3845 | + } | |
| 3846 | + | |
| 3847 | + TestOneSimulcastAVC (&sParam, decoder, pBsBuf, iSpatialLayerNum, iEncFrameNum, 0); | |
| 3848 | + | |
| 3849 | + for (iIdx = 0; iIdx < iSpatialLayerNum; iIdx++) { | |
| 3850 | + free (pBsBuf[iIdx]); | |
| 3851 | + | |
| 3852 | + if (decoder[iIdx] != NULL) { | |
| 3853 | + decoder[iIdx]->Uninitialize(); | |
| 3854 | + WelsDestroyDecoder (decoder[iIdx]); | |
| 3855 | + } | |
| 3856 | + | |
| 3857 | + } | |
| 3858 | +} | |
| 3859 | + | |