diff --git a/codec/encoder/core/inc/au_set.h b/codec/encoder/core/inc/au_set.h index 6ee6843c..075c27a7 100644 --- a/codec/encoder/core/inc/au_set.h +++ b/codec/encoder/core/inc/au_set.h @@ -107,7 +107,7 @@ int32_t WelsWritePpsSyntax (SWelsPPS* pPps, SBitStringAux* pBitStringAux, SParaS int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialLayerInternal* pLayerParamInternal, const uint32_t kuiIntraPeriod, const int32_t kiNumRefFrame, const uint32_t kiSpsId, const bool kbEnableFrameCropping, bool bEnableRc, - const int32_t kiDlayerCount); + const int32_t kiDlayerCount,bool bSVCBaselayer); /*! * \brief initialize subset pSps based on configurable parameters in svc @@ -121,7 +121,8 @@ int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialL int32_t WelsInitSubsetSps (SSubsetSps* pSubsetSps, SSpatialLayerConfig* pLayerParam, SSpatialLayerInternal* pLayerParamInternal, const uint32_t kuiIntraPeriod, const int32_t kiNumRefFrame, - const uint32_t kiSpsId, const bool kbEnableFrameCropping, bool bEnableRc); + const uint32_t kiSpsId, const bool kbEnableFrameCropping, bool bEnableRc, + const int32_t kiDlayerCount); /*! * \brief initialize pPps based on configurable parameters and pSps(subset pSps) in svc @@ -161,6 +162,7 @@ int32_t WelsAdjustLevel (SSpatialLayerConfig* pSpatialLayer); int32_t FindExistingSps (SWelsSvcCodingParam* pParam, const bool kbUseSubsetSps, const int32_t iDlayerIndex, const int32_t iDlayerCount, const int32_t iSpsNumInUse, SWelsSPS* pSpsArray, - SSubsetSps* pSubsetArray); + SSubsetSps* pSubsetArray, + bool bSVCBaselayer); } #endif//WELS_ACCESS_UNIT_PARSER_H__ diff --git a/codec/encoder/core/inc/parameter_sets.h b/codec/encoder/core/inc/parameter_sets.h index e2d0f660..800eee5b 100644 --- a/codec/encoder/core/inc/parameter_sets.h +++ b/codec/encoder/core/inc/parameter_sets.h @@ -68,7 +68,7 @@ uint8_t iLevelIdc; // uint8_t uiBitDepthChroma; //=8 /* TO BE CONTINUE: POC type 1 */ // bool bDeltaPicOrderAlwaysZeroFlag; -// bool bGapsInFrameNumValueAllowedFlag; //=true +bool bGapsInFrameNumValueAllowedFlag; // bool bFrameMbsOnlyFlag; // bool bMbaffFlag; // MB Adapative Frame Field diff --git a/codec/encoder/core/src/au_set.cpp b/codec/encoder/core/src/au_set.cpp index 21b9b9da..e5bc7e90 100644 --- a/codec/encoder/core/src/au_set.cpp +++ b/codec/encoder/core/src/au_set.cpp @@ -267,7 +267,7 @@ int32_t WelsWriteSpsSyntax (SWelsSPS* pSps, SBitStringAux* pBitStringAux, int32_ BsWriteUE (pLocalBitStringAux, pSps->iLog2MaxPocLsb - 4); // log2_max_pic_order_cnt_lsb_minus4 BsWriteUE (pLocalBitStringAux, pSps->iNumRefFrames); // max_num_ref_frames - BsWriteOneBit (pLocalBitStringAux, true/*pSps->bGapsInFrameNumValueAllowedFlag*/); // bGapsInFrameNumValueAllowedFlag + BsWriteOneBit (pLocalBitStringAux, pSps->bGapsInFrameNumValueAllowedFlag); //gaps_in_frame_numvalue_allowed_flag BsWriteUE (pLocalBitStringAux, pSps->iMbWidth - 1); // pic_width_in_mbs_minus1 BsWriteUE (pLocalBitStringAux, pSps->iMbHeight - 1); // pic_height_in_map_units_minus1 BsWriteOneBit (pLocalBitStringAux, true/*pSps->bFrameMbsOnlyFlag*/); // bFrameMbsOnlyFlag @@ -464,7 +464,7 @@ static inline bool WelsGetPaddingOffset (int32_t iActualWidth, int32_t iActualHe int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialLayerInternal* pLayerParamInternal, const uint32_t kuiIntraPeriod, const int32_t kiNumRefFrame, const uint32_t kuiSpsId, const bool kbEnableFrameCropping, bool bEnableRc, - const int32_t kiDlayerCount) { + const int32_t kiDlayerCount, bool bSVCBaselayer) { memset (pSps, 0, sizeof (SWelsSPS)); pSps->uiSpsId = kuiSpsId; pSps->iMbWidth = (pLayerParam->iVideoWidth + 15) >> 4; @@ -483,7 +483,6 @@ int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialL } else { pSps->bFrameCroppingFlag = false; } - pSps->uiProfileIdc = pLayerParam->uiProfileIdc ? pLayerParam->uiProfileIdc : PRO_BASELINE; if (pLayerParam->uiProfileIdc == PRO_BASELINE) { pSps->bConstraintSet0Flag = true; @@ -491,7 +490,7 @@ int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialL if (pLayerParam->uiProfileIdc <= PRO_MAIN) { pSps->bConstraintSet1Flag = true; } - if (kiDlayerCount > 1) { + if ((kiDlayerCount > 1) && bSVCBaselayer) { pSps->bConstraintSet2Flag = true; } @@ -508,6 +507,13 @@ int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialL pLayerParam->uiLevelIdc = uiLevel; } pSps->iLevelIdc = g_kuiLevelMaps[pLayerParam->uiLevelIdc - 1]; + + //bGapsInFrameNumValueAllowedFlag is false when only spatial layer number and temporal layer number is 1, and ltr is 0. + if ((kiDlayerCount == 1) && (pSps->iNumRefFrames == 1)) + pSps->bGapsInFrameNumValueAllowedFlag = false; + else + pSps->bGapsInFrameNumValueAllowedFlag = true; + pSps->bVuiParamPresentFlag = true; return 0; } @@ -516,13 +522,14 @@ int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialL int32_t WelsInitSubsetSps (SSubsetSps* pSubsetSps, SSpatialLayerConfig* pLayerParam, SSpatialLayerInternal* pLayerParamInternal, const uint32_t kuiIntraPeriod, const int32_t kiNumRefFrame, - const uint32_t kuiSpsId, const bool kbEnableFrameCropping, bool bEnableRc) { + const uint32_t kuiSpsId, const bool kbEnableFrameCropping, bool bEnableRc, + const int32_t kiDlayerCount) { SWelsSPS* pSps = &pSubsetSps->pSps; memset (pSubsetSps, 0, sizeof (SSubsetSps)); WelsInitSps (pSps, pLayerParam, pLayerParamInternal, kuiIntraPeriod, kiNumRefFrame, kuiSpsId, kbEnableFrameCropping, - bEnableRc, 1); + bEnableRc, kiDlayerCount, false); pSps->uiProfileIdc = (pLayerParam->uiProfileIdc >= PRO_SCALABLE_BASELINE) ? pLayerParam->uiProfileIdc : PRO_SCALABLE_BASELINE; diff --git a/codec/encoder/core/src/encoder_ext.cpp b/codec/encoder/core/src/encoder_ext.cpp index abb4dbac..cd30423e 100644 --- a/codec/encoder/core/src/encoder_ext.cpp +++ b/codec/encoder/core/src/encoder_ext.cpp @@ -898,7 +898,7 @@ void FreeMbCache (SMbCache* pMbCache, CMemoryAlign* pMa) { static int32_t WelsGenerateNewSps (sWelsEncCtx* pCtx, const bool kbUseSubsetSps, const int32_t iDlayerIndex, const int32_t iDlayerCount, const int32_t kiSpsId, - SWelsSPS*& pSps, SSubsetSps*& pSubsetSps) { + SWelsSPS*& pSps, SSubsetSps*& pSubsetSps, bool bSVCBaselayer) { int32_t iRet = 0; if (!kbUseSubsetSps) { @@ -914,11 +914,12 @@ static int32_t WelsGenerateNewSps (sWelsEncCtx* pCtx, const bool kbUseSubsetSps, if (!kbUseSubsetSps) { iRet = WelsInitSps (pSps, pDlayerParam, &pParam->sDependencyLayers[iDlayerIndex], pParam->uiIntraPeriod, pParam->iMaxNumRefFrame, - kiSpsId, pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE, iDlayerCount); + kiSpsId, pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE, iDlayerCount, + bSVCBaselayer); } else { iRet = WelsInitSubsetSps (pSubsetSps, pDlayerParam, &pParam->sDependencyLayers[iDlayerIndex], pParam->uiIntraPeriod, pParam->iMaxNumRefFrame, - kiSpsId, pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE); + kiSpsId, pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE, iDlayerCount); } return iRet; } @@ -978,7 +979,7 @@ static bool CheckMatchedSubsetSps (SSubsetSps* const pSubsetSps1, SSubsetSps* co int32_t FindExistingSps (SWelsSvcCodingParam* pParam, const bool kbUseSubsetSps, const int32_t iDlayerIndex, const int32_t iDlayerCount, const int32_t iSpsNumInUse, SWelsSPS* pSpsArray, - SSubsetSps* pSubsetArray) { + SSubsetSps* pSubsetArray, bool bSVCBaseLayer) { SSpatialLayerConfig* pDlayerParam = &pParam->sSpatialLayers[iDlayerIndex]; assert (iSpsNumInUse <= MAX_SPS_COUNT); @@ -986,7 +987,8 @@ int32_t FindExistingSps (SWelsSvcCodingParam* pParam, const bool kbUseSubsetSps, SWelsSPS sTmpSps; WelsInitSps (&sTmpSps, pDlayerParam, &pParam->sDependencyLayers[iDlayerIndex], pParam->uiIntraPeriod, pParam->iMaxNumRefFrame, - 0, pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE, iDlayerCount); + 0, pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE, iDlayerCount, + bSVCBaseLayer); for (int32_t iId = 0; iId < iSpsNumInUse; iId++) { if (CheckMatchedSps (&sTmpSps, &pSpsArray[iId])) { return iId; @@ -996,7 +998,7 @@ int32_t FindExistingSps (SWelsSvcCodingParam* pParam, const bool kbUseSubsetSps, SSubsetSps sTmpSubsetSps; WelsInitSubsetSps (&sTmpSubsetSps, pDlayerParam, &pParam->sDependencyLayers[iDlayerIndex], pParam->uiIntraPeriod, pParam->iMaxNumRefFrame, - 0, pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE); + 0, pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE, iDlayerCount); for (int32_t iId = 0; iId < iSpsNumInUse; iId++) { if (CheckMatchedSubsetSps (&sTmpSubsetSps, &pSubsetArray[iId])) { @@ -1258,19 +1260,20 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx, SExistingParasetList* p SDqIdc* pDqIdc = & (*ppCtx)->pDqIdcMap[iDlayerIndex]; const bool bUseSubsetSps = (!pParam->bSimulcastAVC) && (iDlayerIndex > BASE_DEPENDENCY_ID); SSpatialLayerConfig* pDlayerParam = &pParam->sSpatialLayers[iDlayerIndex]; - + bool bSvcBaselayer = (!pParam->bSimulcastAVC) && (iDlayerCount > BASE_DEPENDENCY_ID) + && (iDlayerIndex == BASE_DEPENDENCY_ID); pDqIdc->uiSpatialId = iDlayerIndex; if (! (SPS_LISTING & pParam->eSpsPpsIdStrategy)) { WelsGenerateNewSps (*ppCtx, bUseSubsetSps, iDlayerIndex, - iDlayerCount, iSpsId, pSps, pSubsetSps); + iDlayerCount, iSpsId, pSps, pSubsetSps, bSvcBaselayer); } else { //SPS_LISTING_AND_PPS_INCREASING == pParam->eSpsPpsIdStrategy //check if the current param can fit in an existing SPS const int32_t kiFoundSpsId = FindExistingSps ((*ppCtx)->pSvcParam, bUseSubsetSps, iDlayerIndex, iDlayerCount, bUseSubsetSps ? ((*ppCtx)->sPSOVector.uiInUseSubsetSpsNum) : ((*ppCtx)->sPSOVector.uiInUseSpsNum), (*ppCtx)->pSpsArray, - (*ppCtx)->pSubsetArray); + (*ppCtx)->pSubsetArray, bSvcBaselayer); if (INVALID_ID != kiFoundSpsId) { @@ -1309,7 +1312,7 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx, SExistingParasetList* p } WelsGenerateNewSps (*ppCtx, bUseSubsetSps, iDlayerIndex, - iDlayerCount, iSpsId, pSps, pSubsetSps); + iDlayerCount, iSpsId, pSps, pSubsetSps, bSvcBaselayer); } } diff --git a/test/api/decode_encode_test.cpp b/test/api/decode_encode_test.cpp index 55599894..74731a26 100644 --- a/test/api/decode_encode_test.cpp +++ b/test/api/decode_encode_test.cpp @@ -91,7 +91,7 @@ class DecodeEncodeTest : public ::testing::TestWithParam, BufferedData buf_; }; -void DecEncFileParamToParamExt (DecodeEncodeFileParam * pDecEncFileParam, SEncParamExt* pEnxParamExt) { +void DecEncFileParamToParamExt (DecodeEncodeFileParam* pDecEncFileParam, SEncParamExt* pEnxParamExt) { ASSERT_TRUE (NULL != pDecEncFileParam && NULL != pEnxParamExt); pEnxParamExt->iPicWidth = pDecEncFileParam->width; @@ -107,14 +107,14 @@ void DecEncFileParamToParamExt (DecodeEncodeFileParam * pDecEncFileParam, SEncPa pEnxParamExt->iEntropyCodingModeFlag = 0; for (int i = 0; i < pEnxParamExt->iSpatialLayerNum; i++) { - pEnxParamExt->sSpatialLayers[i].sSliceCfg.uiSliceMode = SM_SINGLE_SLICE; + pEnxParamExt->sSpatialLayers[i].sSliceCfg.uiSliceMode = SM_SINGLE_SLICE; } } TEST_P (DecodeEncodeTest, CompareOutput) { DecodeEncodeFileParam p = GetParam(); SEncParamExt EnxParamExt; - DecEncFileParamToParamExt(&p,&EnxParamExt); + DecEncFileParamToParamExt (&p, &EnxParamExt); #if defined(ANDROID_NDK) std::string filename = std::string ("/sdcard/") + p.fileName; @@ -130,8 +130,8 @@ TEST_P (DecodeEncodeTest, CompareOutput) { } } static const DecodeEncodeFileParam kFileParamArray[] = { - {"res/test_vd_1d.264", "26318fb8f0a9dfb27851d4d95f1743d94673f085", 320, 192, 12.0f}, - {"res/test_vd_rc.264", "39c0b66d769c6050fd87114c7d9e9217ed594e00", 320, 192, 12.0f}, + {"res/test_vd_1d.264", "9d4d682679a0746edda2824687f00ba6db91a2a8", 320, 192, 12.0f}, + {"res/test_vd_rc.264", "23dab419a16c6e894518ca93444666e9336aef63", 320, 192, 12.0f}, }; diff --git a/test/api/encoder_test.cpp b/test/api/encoder_test.cpp index 143e569e..2c436bc4 100644 --- a/test/api/encoder_test.cpp +++ b/test/api/encoder_test.cpp @@ -56,7 +56,7 @@ void EncFileParamToParamExt (EncodeFileParam* pEncFileParam, SEncParamExt* pEnxP pEnxParamExt->iEntropyCodingModeFlag = pEncFileParam->bCabac ? 1 : 0; for (int i = 0; i < pEnxParamExt->iSpatialLayerNum; i++) { - pEnxParamExt->sSpatialLayers[i].sSliceCfg.uiSliceMode = pEncFileParam->eSliceMode; + pEnxParamExt->sSpatialLayers[i].sSliceCfg.uiSliceMode = pEncFileParam->eSliceMode; } } @@ -90,7 +90,7 @@ TEST_P (EncoderOutputTest, CompareOutput) { std::string filename = std::string ("/sdcard/") + p.pkcFileName; EncodeFile (p.pkcFileName, &EnxParamExt, this); #else - EncodeFile (p.pkcFileName, &EnxParamExt, this); + EncodeFile (p.pkcFileName, &EnxParamExt, this); #endif //will remove this after screen content algorithms are ready, //because the bitstream output will vary when the different algorithms are added. @@ -103,23 +103,23 @@ TEST_P (EncoderOutputTest, CompareOutput) { static const EncodeFileParam kFileParamArray[] = { { "res/CiscoVT2people_320x192_12fps.yuv", - "996a3bab4d2f6142f408c24b151e03135bd58681", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, false + "e36b6169dcb5bbb90e64291250ec65995d62c846", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, false }, { "res/CiscoVT2people_160x96_6fps.yuv", - "4df94f5187c5aded3f940e29e5821297262e4862", CAMERA_VIDEO_REAL_TIME, 160, 96, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false + "04c73f202a29befd57ee49d242688f3e6ddfecbc", CAMERA_VIDEO_REAL_TIME, 160, 96, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false }, { "res/Static_152_100.yuv", - "e0c620d732e5b0af53fbbe9c6b83bd79681af89a", CAMERA_VIDEO_REAL_TIME, 152, 100, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false + "c959ae52c5469bfc37bb31870c6a7259a1bb1917", CAMERA_VIDEO_REAL_TIME, 152, 100, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false }, { "res/CiscoVT2people_320x192_12fps.yuv", - "ab8fded9d2a5513cd635118a5ea93cacf24ab82f", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_ROWMB_SLICE, false, 1, false, false, false // One slice per MB row + "f03ca6a679cd12c90542e351eabfce0d902ffad2", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_ROWMB_SLICE, false, 1, false, false, false // One slice per MB row }, { "res/CiscoVT2people_320x192_12fps.yuv", - "c0372e3a02da479eba5552230f56ff6730870d17", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, true, 1, false, false, false + "c7f37486e00c1f18715c7aaf10444f03111418cf", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, true, 1, false, false, false }, { "res/CiscoVT2people_320x192_12fps.yuv", @@ -127,7 +127,7 @@ static const EncodeFileParam kFileParamArray[] = { }, { "res/Cisco_Absolute_Power_1280x720_30fps.yuv", - "ace9511444c022b860abe09ea3ec5884079351aa", CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_DYN_SLICE, false, 1, false, false, false + "6cc7d08b2a80fc2836396808f919f9b5d4ee1d97", CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_DYN_SLICE, false, 1, false, false, false }, { "res/Cisco_Absolute_Power_1280x720_30fps.yuv", @@ -136,19 +136,19 @@ static const EncodeFileParam kFileParamArray[] = { // the following values may be adjusted for times since we start tuning the strategy { "res/CiscoVT2people_320x192_12fps.yuv", - "f1639ba3e71f45b975e39322d61ff2efe3c50c0d", SCREEN_CONTENT_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, false + "9b8ba682313ed9cd0512563859e050942a3e776e", SCREEN_CONTENT_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, false }, { "res/CiscoVT2people_160x96_6fps.yuv", - "fad7e2a9fc012ab356748092650dc40ed2253251", SCREEN_CONTENT_REAL_TIME, 160, 96, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false + "2706c61e9459196b4161f4bbb9444a08308ae8c5", SCREEN_CONTENT_REAL_TIME, 160, 96, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false }, { "res/Static_152_100.yuv", - "4869652f5ed64b840295d03d7be352e8c0504afc", SCREEN_CONTENT_REAL_TIME, 152, 100, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false + "d8457a47946e91b01310d8de9afa21ac00df8edb", SCREEN_CONTENT_REAL_TIME, 152, 100, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false }, { "res/Cisco_Absolute_Power_1280x720_30fps.yuv", - "9303a2e142475c8f8637129ebfed0089a8c8f4a2", SCREEN_CONTENT_REAL_TIME, 1280, 720, 30.0f, SM_DYN_SLICE, false, 1, false, false, false + "116663b5a00f000ab40e95b6202563e3cb4ce488", SCREEN_CONTENT_REAL_TIME, 1280, 720, 30.0f, SM_DYN_SLICE, false, 1, false, false, false }, //for different strategy { @@ -157,11 +157,11 @@ static const EncodeFileParam kFileParamArray[] = { }, { "res/CiscoVT2people_320x192_12fps.yuv", - "dd281aa3857dc69246d5ac4942ccd7baa8cd80e9", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, true //turn on cabac + "7aaab6ef2dc5f95c3a2869979eba59553936e36f", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, true //turn on cabac }, { "res/Cisco_Absolute_Power_1280x720_30fps.yuv", - "15850f7047a65d15a682e3c7ffc88c4bdaea6d15", CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_DYN_SLICE, false, 1, false, false, true + "bb8ee13f829fa593b77760afdeb1215d0a577ee1", CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_DYN_SLICE, false, 1, false, false, true }, }; diff --git a/test/encoder/EncUT_ParameterSetStrategy.cpp b/test/encoder/EncUT_ParameterSetStrategy.cpp index 3b449091..43448f1b 100644 --- a/test/encoder/EncUT_ParameterSetStrategy.cpp +++ b/test/encoder/EncUT_ParameterSetStrategy.cpp @@ -73,18 +73,18 @@ TEST_F (ParameterSetStrategyTest, FindExistingSps) { pDlayerParam = & (sParam1.sSpatialLayers[iDlayerIndex]); iRet = WelsInitSps (m_pSpsArrayPointer, pDlayerParam, &sParam1.sDependencyLayers[iDlayerIndex], sParam1.uiIntraPeriod, sParam1.iMaxNumRefFrame, - iCurSpsId, sParam1.bEnableFrameCroppingFlag, sParam1.iRCMode != RC_OFF_MODE, iDlayerCount); + iCurSpsId, sParam1.bEnableFrameCroppingFlag, sParam1.iRCMode != RC_OFF_MODE, iDlayerCount, false); // try finding #0 iFoundId = FindExistingSps (&sParam1, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse, - m_pSpsArray, m_pSubsetArray); + m_pSpsArray, m_pSubsetArray, false); EXPECT_EQ (iFoundId, iCurSpsId); // try not finding SWelsSvcCodingParam sParam2 = sParam1; sParam2.iMaxNumRefFrame ++; iFoundId = FindExistingSps (&sParam2, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse, - m_pSpsArray, m_pSubsetArray); + m_pSpsArray, m_pSubsetArray, false); EXPECT_EQ (iFoundId, INVALID_ID); // add new sps @@ -93,17 +93,17 @@ TEST_F (ParameterSetStrategyTest, FindExistingSps) { pDlayerParam = & (sParam2.sSpatialLayers[iDlayerIndex]); iRet = WelsInitSps (m_pSpsArrayPointer, pDlayerParam, &sParam2.sDependencyLayers[iDlayerIndex], sParam2.uiIntraPeriod, sParam2.iMaxNumRefFrame, - iCurSpsId, sParam2.bEnableFrameCroppingFlag, sParam2.iRCMode != RC_OFF_MODE, iDlayerCount); + iCurSpsId, sParam2.bEnableFrameCroppingFlag, sParam2.iRCMode != RC_OFF_MODE, iDlayerCount, false); iCurSpsInUse = 2; // try finding #1 iFoundId = FindExistingSps (&sParam2, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse, - m_pSpsArray, m_pSubsetArray); + m_pSpsArray, m_pSubsetArray, false); EXPECT_EQ (iFoundId, iCurSpsId); // try finding #0 iFoundId = FindExistingSps (&sParam1, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse, - m_pSpsArray, m_pSubsetArray); + m_pSpsArray, m_pSubsetArray, false); EXPECT_EQ (iFoundId, 0); // try not finding @@ -115,7 +115,7 @@ TEST_F (ParameterSetStrategyTest, FindExistingSps) { } iFoundId = FindExistingSps (&sParam2, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse, - m_pSpsArray, m_pSubsetArray); + m_pSpsArray, m_pSubsetArray, false); EXPECT_EQ (iFoundId, INVALID_ID); (void) iRet; // Not using iRet at the moment }