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 | SEncParamExt sParam; | 3738 | SEncParamExt sParam; |
| 3739 | encoder_->GetDefaultParams (&sParam); | 3739 | encoder_->GetDefaultParams (&sParam); |
| 3740 | prepareParamDefault (iSpatialLayerNum, 1, iWidth, iHeight, fFrameRate, &sParam); | 3740 | prepareParamDefault (iSpatialLayerNum, 1, iWidth, iHeight, fFrameRate, &sParam); |
| 3741 | sParam.iMultipleThreadIdc = (rand()%4) + 1; | 3741 | sParam.iMultipleThreadIdc = (rand() % 4) + 1; |
| 3742 | sParam.bSimulcastAVC = 1; | 3742 | sParam.bSimulcastAVC = 1; |
| 3743 | sParam.sSpatialLayers[0].iVideoWidth = (iWidth >> 2); | 3743 | sParam.sSpatialLayers[0].iVideoWidth = (iWidth >> 2); |
| 3744 | sParam.sSpatialLayers[0].iVideoHeight = (iHeight >> 2); | 3744 | sParam.sSpatialLayers[0].iVideoHeight = (iHeight >> 2); |
| @@ -3753,7 +3753,7 @@ TEST_F (EncodeDecodeTestAPI, DiffSlicingInDlayer) { · 8 unmodified lines | |||
| 3753 | sParam.sSpatialLayers[2].iVideoWidth = iWidth; | 3753 | sParam.sSpatialLayers[2].iVideoWidth = iWidth; |
| 3754 | sParam.sSpatialLayers[2].iVideoHeight = iHeight; | 3754 | sParam.sSpatialLayers[2].iVideoHeight = iHeight; |
| 3755 | sParam.sSpatialLayers[2].sSliceCfg.uiSliceMode = SM_FIXEDSLCNUM_SLICE; | 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 | int rv = encoder_->InitializeExt (&sParam); | 3758 | int rv = encoder_->InitializeExt (&sParam); |
| 3759 | ASSERT_TRUE (rv == cmResultSuccess) << "Init Failed sParam: rv = " << rv;; | 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 | |||