update bGapsInFrameNumValueAllowedFlag according to parameters setting
This commit is contained in:
parent
b66703133e
commit
cce966fbba
@ -106,7 +106,7 @@ int32_t WelsWritePpsSyntax (SWelsPPS* pPps, SBitStringAux* pBitStringAux, SParaS
|
|||||||
int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialLayerInternal* pLayerParamInternal,
|
int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialLayerInternal* pLayerParamInternal,
|
||||||
const uint32_t kuiIntraPeriod, const int32_t kiNumRefFrame,
|
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);
|
const int32_t kiDlayerCount,bool bSVCBaselayer);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief initialize subset pSps based on configurable parameters in svc
|
* \brief initialize subset pSps based on configurable parameters in svc
|
||||||
@ -120,7 +120,8 @@ int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialL
|
|||||||
int32_t WelsInitSubsetSps (SSubsetSps* pSubsetSps, SSpatialLayerConfig* pLayerParam,
|
int32_t WelsInitSubsetSps (SSubsetSps* pSubsetSps, SSpatialLayerConfig* pLayerParam,
|
||||||
SSpatialLayerInternal* pLayerParamInternal,
|
SSpatialLayerInternal* pLayerParamInternal,
|
||||||
const uint32_t kuiIntraPeriod, const int32_t kiNumRefFrame,
|
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
|
* \brief initialize pPps based on configurable parameters and pSps(subset pSps) in svc
|
||||||
@ -160,6 +161,7 @@ int32_t WelsAdjustLevel (SSpatialLayerConfig* pSpatialLayer);
|
|||||||
int32_t FindExistingSps (SWelsSvcCodingParam* pParam, const bool kbUseSubsetSps, const int32_t iDlayerIndex,
|
int32_t FindExistingSps (SWelsSvcCodingParam* pParam, const bool kbUseSubsetSps, const int32_t iDlayerIndex,
|
||||||
const int32_t iDlayerCount, const int32_t iSpsNumInUse,
|
const int32_t iDlayerCount, const int32_t iSpsNumInUse,
|
||||||
SWelsSPS* pSpsArray,
|
SWelsSPS* pSpsArray,
|
||||||
SSubsetSps* pSubsetArray);
|
SSubsetSps* pSubsetArray,
|
||||||
|
bool bSVCBaselayer);
|
||||||
}
|
}
|
||||||
#endif//WELS_ACCESS_UNIT_PARSER_H__
|
#endif//WELS_ACCESS_UNIT_PARSER_H__
|
||||||
|
@ -68,7 +68,7 @@ uint8_t iLevelIdc;
|
|||||||
// uint8_t uiBitDepthChroma; //=8
|
// uint8_t uiBitDepthChroma; //=8
|
||||||
/* TO BE CONTINUE: POC type 1 */
|
/* TO BE CONTINUE: POC type 1 */
|
||||||
// bool bDeltaPicOrderAlwaysZeroFlag;
|
// bool bDeltaPicOrderAlwaysZeroFlag;
|
||||||
// bool bGapsInFrameNumValueAllowedFlag; //=true
|
bool bGapsInFrameNumValueAllowedFlag;
|
||||||
|
|
||||||
// bool bFrameMbsOnlyFlag;
|
// bool bFrameMbsOnlyFlag;
|
||||||
// bool bMbaffFlag; // MB Adapative Frame Field
|
// bool bMbaffFlag; // MB Adapative Frame Field
|
||||||
|
@ -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->iLog2MaxPocLsb - 4); // log2_max_pic_order_cnt_lsb_minus4
|
||||||
|
|
||||||
BsWriteUE (pLocalBitStringAux, pSps->iNumRefFrames); // max_num_ref_frames
|
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->iMbWidth - 1); // pic_width_in_mbs_minus1
|
||||||
BsWriteUE (pLocalBitStringAux, pSps->iMbHeight - 1); // pic_height_in_map_units_minus1
|
BsWriteUE (pLocalBitStringAux, pSps->iMbHeight - 1); // pic_height_in_map_units_minus1
|
||||||
BsWriteOneBit (pLocalBitStringAux, true/*pSps->bFrameMbsOnlyFlag*/); // bFrameMbsOnlyFlag
|
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,
|
int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialLayerInternal* pLayerParamInternal,
|
||||||
const uint32_t kuiIntraPeriod, const int32_t kiNumRefFrame,
|
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) {
|
const int32_t kiDlayerCount, bool bSVCBaselayer) {
|
||||||
memset (pSps, 0, sizeof (SWelsSPS));
|
memset (pSps, 0, sizeof (SWelsSPS));
|
||||||
pSps->uiSpsId = kuiSpsId;
|
pSps->uiSpsId = kuiSpsId;
|
||||||
pSps->iMbWidth = (pLayerParam->iVideoWidth + 15) >> 4;
|
pSps->iMbWidth = (pLayerParam->iVideoWidth + 15) >> 4;
|
||||||
@ -483,7 +483,6 @@ int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialL
|
|||||||
} else {
|
} else {
|
||||||
pSps->bFrameCroppingFlag = false;
|
pSps->bFrameCroppingFlag = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
pSps->uiProfileIdc = pLayerParam->uiProfileIdc ? pLayerParam->uiProfileIdc : PRO_BASELINE;
|
pSps->uiProfileIdc = pLayerParam->uiProfileIdc ? pLayerParam->uiProfileIdc : PRO_BASELINE;
|
||||||
if (pLayerParam->uiProfileIdc == PRO_BASELINE) {
|
if (pLayerParam->uiProfileIdc == PRO_BASELINE) {
|
||||||
pSps->bConstraintSet0Flag = true;
|
pSps->bConstraintSet0Flag = true;
|
||||||
@ -491,7 +490,7 @@ int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialL
|
|||||||
if (pLayerParam->uiProfileIdc <= PRO_MAIN) {
|
if (pLayerParam->uiProfileIdc <= PRO_MAIN) {
|
||||||
pSps->bConstraintSet1Flag = true;
|
pSps->bConstraintSet1Flag = true;
|
||||||
}
|
}
|
||||||
if (kiDlayerCount > 1) {
|
if ((kiDlayerCount > 1) && bSVCBaselayer) {
|
||||||
pSps->bConstraintSet2Flag = true;
|
pSps->bConstraintSet2Flag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -508,6 +507,13 @@ int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialL
|
|||||||
pLayerParam->uiLevelIdc = uiLevel;
|
pLayerParam->uiLevelIdc = uiLevel;
|
||||||
}
|
}
|
||||||
pSps->iLevelIdc = g_kuiLevelMaps[pLayerParam->uiLevelIdc - 1];
|
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;
|
pSps->bVuiParamPresentFlag = true;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -516,13 +522,14 @@ int32_t WelsInitSps (SWelsSPS* pSps, SSpatialLayerConfig* pLayerParam, SSpatialL
|
|||||||
int32_t WelsInitSubsetSps (SSubsetSps* pSubsetSps, SSpatialLayerConfig* pLayerParam,
|
int32_t WelsInitSubsetSps (SSubsetSps* pSubsetSps, SSpatialLayerConfig* pLayerParam,
|
||||||
SSpatialLayerInternal* pLayerParamInternal,
|
SSpatialLayerInternal* pLayerParamInternal,
|
||||||
const uint32_t kuiIntraPeriod, const int32_t kiNumRefFrame,
|
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;
|
SWelsSPS* pSps = &pSubsetSps->pSps;
|
||||||
|
|
||||||
memset (pSubsetSps, 0, sizeof (SSubsetSps));
|
memset (pSubsetSps, 0, sizeof (SSubsetSps));
|
||||||
|
|
||||||
WelsInitSps (pSps, pLayerParam, pLayerParamInternal, kuiIntraPeriod, kiNumRefFrame, kuiSpsId, kbEnableFrameCropping,
|
WelsInitSps (pSps, pLayerParam, pLayerParamInternal, kuiIntraPeriod, kiNumRefFrame, kuiSpsId, kbEnableFrameCropping,
|
||||||
bEnableRc, 1);
|
bEnableRc, kiDlayerCount, false);
|
||||||
|
|
||||||
pSps->uiProfileIdc = (pLayerParam->uiProfileIdc >= PRO_SCALABLE_BASELINE) ? pLayerParam->uiProfileIdc :
|
pSps->uiProfileIdc = (pLayerParam->uiProfileIdc >= PRO_SCALABLE_BASELINE) ? pLayerParam->uiProfileIdc :
|
||||||
PRO_SCALABLE_BASELINE;
|
PRO_SCALABLE_BASELINE;
|
||||||
|
@ -898,7 +898,7 @@ void FreeMbCache (SMbCache* pMbCache, CMemoryAlign* pMa) {
|
|||||||
|
|
||||||
static int32_t WelsGenerateNewSps (sWelsEncCtx* pCtx, const bool kbUseSubsetSps, const int32_t iDlayerIndex,
|
static int32_t WelsGenerateNewSps (sWelsEncCtx* pCtx, const bool kbUseSubsetSps, const int32_t iDlayerIndex,
|
||||||
const int32_t iDlayerCount, const int32_t kiSpsId,
|
const int32_t iDlayerCount, const int32_t kiSpsId,
|
||||||
SWelsSPS*& pSps, SSubsetSps*& pSubsetSps) {
|
SWelsSPS*& pSps, SSubsetSps*& pSubsetSps, bool bSVCBaselayer) {
|
||||||
int32_t iRet = 0;
|
int32_t iRet = 0;
|
||||||
|
|
||||||
if (!kbUseSubsetSps) {
|
if (!kbUseSubsetSps) {
|
||||||
@ -914,11 +914,12 @@ static int32_t WelsGenerateNewSps (sWelsEncCtx* pCtx, const bool kbUseSubsetSps,
|
|||||||
if (!kbUseSubsetSps) {
|
if (!kbUseSubsetSps) {
|
||||||
iRet = WelsInitSps (pSps, pDlayerParam, &pParam->sDependencyLayers[iDlayerIndex], pParam->uiIntraPeriod,
|
iRet = WelsInitSps (pSps, pDlayerParam, &pParam->sDependencyLayers[iDlayerIndex], pParam->uiIntraPeriod,
|
||||||
pParam->iMaxNumRefFrame,
|
pParam->iMaxNumRefFrame,
|
||||||
kiSpsId, pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE, iDlayerCount);
|
kiSpsId, pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE, iDlayerCount,
|
||||||
|
bSVCBaselayer);
|
||||||
} else {
|
} else {
|
||||||
iRet = WelsInitSubsetSps (pSubsetSps, pDlayerParam, &pParam->sDependencyLayers[iDlayerIndex], pParam->uiIntraPeriod,
|
iRet = WelsInitSubsetSps (pSubsetSps, pDlayerParam, &pParam->sDependencyLayers[iDlayerIndex], pParam->uiIntraPeriod,
|
||||||
pParam->iMaxNumRefFrame,
|
pParam->iMaxNumRefFrame,
|
||||||
kiSpsId, pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE);
|
kiSpsId, pParam->bEnableFrameCroppingFlag, pParam->iRCMode != RC_OFF_MODE, iDlayerCount);
|
||||||
}
|
}
|
||||||
return iRet;
|
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,
|
int32_t FindExistingSps (SWelsSvcCodingParam* pParam, const bool kbUseSubsetSps, const int32_t iDlayerIndex,
|
||||||
const int32_t iDlayerCount, const int32_t iSpsNumInUse,
|
const int32_t iDlayerCount, const int32_t iSpsNumInUse,
|
||||||
SWelsSPS* pSpsArray,
|
SWelsSPS* pSpsArray,
|
||||||
SSubsetSps* pSubsetArray) {
|
SSubsetSps* pSubsetArray, bool bSVCBaseLayer) {
|
||||||
SSpatialLayerConfig* pDlayerParam = &pParam->sSpatialLayers[iDlayerIndex];
|
SSpatialLayerConfig* pDlayerParam = &pParam->sSpatialLayers[iDlayerIndex];
|
||||||
|
|
||||||
assert (iSpsNumInUse <= MAX_SPS_COUNT);
|
assert (iSpsNumInUse <= MAX_SPS_COUNT);
|
||||||
@ -986,7 +987,8 @@ int32_t FindExistingSps (SWelsSvcCodingParam* pParam, const bool kbUseSubsetSps,
|
|||||||
SWelsSPS sTmpSps;
|
SWelsSPS sTmpSps;
|
||||||
WelsInitSps (&sTmpSps, pDlayerParam, &pParam->sDependencyLayers[iDlayerIndex], pParam->uiIntraPeriod,
|
WelsInitSps (&sTmpSps, pDlayerParam, &pParam->sDependencyLayers[iDlayerIndex], pParam->uiIntraPeriod,
|
||||||
pParam->iMaxNumRefFrame,
|
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++) {
|
for (int32_t iId = 0; iId < iSpsNumInUse; iId++) {
|
||||||
if (CheckMatchedSps (&sTmpSps, &pSpsArray[iId])) {
|
if (CheckMatchedSps (&sTmpSps, &pSpsArray[iId])) {
|
||||||
return iId;
|
return iId;
|
||||||
@ -996,7 +998,7 @@ int32_t FindExistingSps (SWelsSvcCodingParam* pParam, const bool kbUseSubsetSps,
|
|||||||
SSubsetSps sTmpSubsetSps;
|
SSubsetSps sTmpSubsetSps;
|
||||||
WelsInitSubsetSps (&sTmpSubsetSps, pDlayerParam, &pParam->sDependencyLayers[iDlayerIndex], pParam->uiIntraPeriod,
|
WelsInitSubsetSps (&sTmpSubsetSps, pDlayerParam, &pParam->sDependencyLayers[iDlayerIndex], pParam->uiIntraPeriod,
|
||||||
pParam->iMaxNumRefFrame,
|
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++) {
|
for (int32_t iId = 0; iId < iSpsNumInUse; iId++) {
|
||||||
if (CheckMatchedSubsetSps (&sTmpSubsetSps, &pSubsetArray[iId])) {
|
if (CheckMatchedSubsetSps (&sTmpSubsetSps, &pSubsetArray[iId])) {
|
||||||
@ -1258,19 +1260,20 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx, SExistingParasetList* p
|
|||||||
SDqIdc* pDqIdc = & (*ppCtx)->pDqIdcMap[iDlayerIndex];
|
SDqIdc* pDqIdc = & (*ppCtx)->pDqIdcMap[iDlayerIndex];
|
||||||
const bool bUseSubsetSps = (!pParam->bSimulcastAVC) && (iDlayerIndex > BASE_DEPENDENCY_ID);
|
const bool bUseSubsetSps = (!pParam->bSimulcastAVC) && (iDlayerIndex > BASE_DEPENDENCY_ID);
|
||||||
SSpatialLayerConfig* pDlayerParam = &pParam->sSpatialLayers[iDlayerIndex];
|
SSpatialLayerConfig* pDlayerParam = &pParam->sSpatialLayers[iDlayerIndex];
|
||||||
|
bool bSvcBaselayer = (!pParam->bSimulcastAVC) && (iDlayerCount > BASE_DEPENDENCY_ID)
|
||||||
|
&& (iDlayerIndex == BASE_DEPENDENCY_ID);
|
||||||
pDqIdc->uiSpatialId = iDlayerIndex;
|
pDqIdc->uiSpatialId = iDlayerIndex;
|
||||||
|
|
||||||
if (! (SPS_LISTING & pParam->eSpsPpsIdStrategy)) {
|
if (! (SPS_LISTING & pParam->eSpsPpsIdStrategy)) {
|
||||||
WelsGenerateNewSps (*ppCtx, bUseSubsetSps, iDlayerIndex,
|
WelsGenerateNewSps (*ppCtx, bUseSubsetSps, iDlayerIndex,
|
||||||
iDlayerCount, iSpsId, pSps, pSubsetSps);
|
iDlayerCount, iSpsId, pSps, pSubsetSps, bSvcBaselayer);
|
||||||
} else {
|
} else {
|
||||||
//SPS_LISTING_AND_PPS_INCREASING == pParam->eSpsPpsIdStrategy
|
//SPS_LISTING_AND_PPS_INCREASING == pParam->eSpsPpsIdStrategy
|
||||||
//check if the current param can fit in an existing SPS
|
//check if the current param can fit in an existing SPS
|
||||||
const int32_t kiFoundSpsId = FindExistingSps ((*ppCtx)->pSvcParam, bUseSubsetSps, iDlayerIndex, iDlayerCount,
|
const int32_t kiFoundSpsId = FindExistingSps ((*ppCtx)->pSvcParam, bUseSubsetSps, iDlayerIndex, iDlayerCount,
|
||||||
bUseSubsetSps ? ((*ppCtx)->sPSOVector.uiInUseSubsetSpsNum) : ((*ppCtx)->sPSOVector.uiInUseSpsNum),
|
bUseSubsetSps ? ((*ppCtx)->sPSOVector.uiInUseSubsetSpsNum) : ((*ppCtx)->sPSOVector.uiInUseSpsNum),
|
||||||
(*ppCtx)->pSpsArray,
|
(*ppCtx)->pSpsArray,
|
||||||
(*ppCtx)->pSubsetArray);
|
(*ppCtx)->pSubsetArray, bSvcBaselayer);
|
||||||
|
|
||||||
|
|
||||||
if (INVALID_ID != kiFoundSpsId) {
|
if (INVALID_ID != kiFoundSpsId) {
|
||||||
@ -1309,7 +1312,7 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx, SExistingParasetList* p
|
|||||||
}
|
}
|
||||||
|
|
||||||
WelsGenerateNewSps (*ppCtx, bUseSubsetSps, iDlayerIndex,
|
WelsGenerateNewSps (*ppCtx, bUseSubsetSps, iDlayerIndex,
|
||||||
iDlayerCount, iSpsId, pSps, pSubsetSps);
|
iDlayerCount, iSpsId, pSps, pSubsetSps, bSvcBaselayer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ class DecodeEncodeTest : public ::testing::TestWithParam<DecodeEncodeFileParam>,
|
|||||||
BufferedData buf_;
|
BufferedData buf_;
|
||||||
};
|
};
|
||||||
|
|
||||||
void DecEncFileParamToParamExt (DecodeEncodeFileParam * pDecEncFileParam, SEncParamExt* pEnxParamExt) {
|
void DecEncFileParamToParamExt (DecodeEncodeFileParam* pDecEncFileParam, SEncParamExt* pEnxParamExt) {
|
||||||
ASSERT_TRUE (NULL != pDecEncFileParam && NULL != pEnxParamExt);
|
ASSERT_TRUE (NULL != pDecEncFileParam && NULL != pEnxParamExt);
|
||||||
|
|
||||||
pEnxParamExt->iPicWidth = pDecEncFileParam->width;
|
pEnxParamExt->iPicWidth = pDecEncFileParam->width;
|
||||||
@ -107,14 +107,14 @@ void DecEncFileParamToParamExt (DecodeEncodeFileParam * pDecEncFileParam, SEncPa
|
|||||||
pEnxParamExt->iEntropyCodingModeFlag = 0;
|
pEnxParamExt->iEntropyCodingModeFlag = 0;
|
||||||
|
|
||||||
for (int i = 0; i < pEnxParamExt->iSpatialLayerNum; i++) {
|
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) {
|
TEST_P (DecodeEncodeTest, CompareOutput) {
|
||||||
DecodeEncodeFileParam p = GetParam();
|
DecodeEncodeFileParam p = GetParam();
|
||||||
SEncParamExt EnxParamExt;
|
SEncParamExt EnxParamExt;
|
||||||
DecEncFileParamToParamExt(&p,&EnxParamExt);
|
DecEncFileParamToParamExt (&p, &EnxParamExt);
|
||||||
|
|
||||||
#if defined(ANDROID_NDK)
|
#if defined(ANDROID_NDK)
|
||||||
std::string filename = std::string ("/sdcard/") + p.fileName;
|
std::string filename = std::string ("/sdcard/") + p.fileName;
|
||||||
@ -130,8 +130,8 @@ TEST_P (DecodeEncodeTest, CompareOutput) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
static const DecodeEncodeFileParam kFileParamArray[] = {
|
static const DecodeEncodeFileParam kFileParamArray[] = {
|
||||||
{"res/test_vd_1d.264", "26318fb8f0a9dfb27851d4d95f1743d94673f085", 320, 192, 12.0f},
|
{"res/test_vd_1d.264", "9d4d682679a0746edda2824687f00ba6db91a2a8", 320, 192, 12.0f},
|
||||||
{"res/test_vd_rc.264", "39c0b66d769c6050fd87114c7d9e9217ed594e00", 320, 192, 12.0f},
|
{"res/test_vd_rc.264", "23dab419a16c6e894518ca93444666e9336aef63", 320, 192, 12.0f},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ void EncFileParamToParamExt (EncodeFileParam* pEncFileParam, SEncParamExt* pEnxP
|
|||||||
pEnxParamExt->iEntropyCodingModeFlag = pEncFileParam->bCabac ? 1 : 0;
|
pEnxParamExt->iEntropyCodingModeFlag = pEncFileParam->bCabac ? 1 : 0;
|
||||||
|
|
||||||
for (int i = 0; i < pEnxParamExt->iSpatialLayerNum; i++) {
|
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;
|
std::string filename = std::string ("/sdcard/") + p.pkcFileName;
|
||||||
EncodeFile (p.pkcFileName, &EnxParamExt, this);
|
EncodeFile (p.pkcFileName, &EnxParamExt, this);
|
||||||
#else
|
#else
|
||||||
EncodeFile (p.pkcFileName, &EnxParamExt, this);
|
EncodeFile (p.pkcFileName, &EnxParamExt, this);
|
||||||
#endif
|
#endif
|
||||||
//will remove this after screen content algorithms are ready,
|
//will remove this after screen content algorithms are ready,
|
||||||
//because the bitstream output will vary when the different algorithms are added.
|
//because the bitstream output will vary when the different algorithms are added.
|
||||||
@ -103,23 +103,23 @@ TEST_P (EncoderOutputTest, CompareOutput) {
|
|||||||
static const EncodeFileParam kFileParamArray[] = {
|
static const EncodeFileParam kFileParamArray[] = {
|
||||||
{
|
{
|
||||||
"res/CiscoVT2people_320x192_12fps.yuv",
|
"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",
|
"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",
|
"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",
|
"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",
|
"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",
|
"res/CiscoVT2people_320x192_12fps.yuv",
|
||||||
@ -127,7 +127,7 @@ static const EncodeFileParam kFileParamArray[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
"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",
|
"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
|
// the following values may be adjusted for times since we start tuning the strategy
|
||||||
{
|
{
|
||||||
"res/CiscoVT2people_320x192_12fps.yuv",
|
"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",
|
"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",
|
"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",
|
"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
|
//for different strategy
|
||||||
{
|
{
|
||||||
@ -157,11 +157,11 @@ static const EncodeFileParam kFileParamArray[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/CiscoVT2people_320x192_12fps.yuv",
|
"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",
|
"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
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -73,18 +73,18 @@ TEST_F (ParameterSetStrategyTest, FindExistingSps) {
|
|||||||
pDlayerParam = & (sParam1.sSpatialLayers[iDlayerIndex]);
|
pDlayerParam = & (sParam1.sSpatialLayers[iDlayerIndex]);
|
||||||
iRet = WelsInitSps (m_pSpsArrayPointer, pDlayerParam, &sParam1.sDependencyLayers[iDlayerIndex], sParam1.uiIntraPeriod,
|
iRet = WelsInitSps (m_pSpsArrayPointer, pDlayerParam, &sParam1.sDependencyLayers[iDlayerIndex], sParam1.uiIntraPeriod,
|
||||||
sParam1.iMaxNumRefFrame,
|
sParam1.iMaxNumRefFrame,
|
||||||
iCurSpsId, sParam1.bEnableFrameCroppingFlag, sParam1.iRCMode != RC_OFF_MODE, iDlayerCount);
|
iCurSpsId, sParam1.bEnableFrameCroppingFlag, sParam1.iRCMode != RC_OFF_MODE, iDlayerCount, false);
|
||||||
|
|
||||||
// try finding #0
|
// try finding #0
|
||||||
iFoundId = FindExistingSps (&sParam1, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse,
|
iFoundId = FindExistingSps (&sParam1, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse,
|
||||||
m_pSpsArray, m_pSubsetArray);
|
m_pSpsArray, m_pSubsetArray, false);
|
||||||
EXPECT_EQ (iFoundId, iCurSpsId);
|
EXPECT_EQ (iFoundId, iCurSpsId);
|
||||||
|
|
||||||
// try not finding
|
// try not finding
|
||||||
SWelsSvcCodingParam sParam2 = sParam1;
|
SWelsSvcCodingParam sParam2 = sParam1;
|
||||||
sParam2.iMaxNumRefFrame ++;
|
sParam2.iMaxNumRefFrame ++;
|
||||||
iFoundId = FindExistingSps (&sParam2, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse,
|
iFoundId = FindExistingSps (&sParam2, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse,
|
||||||
m_pSpsArray, m_pSubsetArray);
|
m_pSpsArray, m_pSubsetArray, false);
|
||||||
EXPECT_EQ (iFoundId, INVALID_ID);
|
EXPECT_EQ (iFoundId, INVALID_ID);
|
||||||
|
|
||||||
// add new sps
|
// add new sps
|
||||||
@ -93,17 +93,17 @@ TEST_F (ParameterSetStrategyTest, FindExistingSps) {
|
|||||||
pDlayerParam = & (sParam2.sSpatialLayers[iDlayerIndex]);
|
pDlayerParam = & (sParam2.sSpatialLayers[iDlayerIndex]);
|
||||||
iRet = WelsInitSps (m_pSpsArrayPointer, pDlayerParam, &sParam2.sDependencyLayers[iDlayerIndex], sParam2.uiIntraPeriod,
|
iRet = WelsInitSps (m_pSpsArrayPointer, pDlayerParam, &sParam2.sDependencyLayers[iDlayerIndex], sParam2.uiIntraPeriod,
|
||||||
sParam2.iMaxNumRefFrame,
|
sParam2.iMaxNumRefFrame,
|
||||||
iCurSpsId, sParam2.bEnableFrameCroppingFlag, sParam2.iRCMode != RC_OFF_MODE, iDlayerCount);
|
iCurSpsId, sParam2.bEnableFrameCroppingFlag, sParam2.iRCMode != RC_OFF_MODE, iDlayerCount, false);
|
||||||
iCurSpsInUse = 2;
|
iCurSpsInUse = 2;
|
||||||
|
|
||||||
// try finding #1
|
// try finding #1
|
||||||
iFoundId = FindExistingSps (&sParam2, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse,
|
iFoundId = FindExistingSps (&sParam2, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse,
|
||||||
m_pSpsArray, m_pSubsetArray);
|
m_pSpsArray, m_pSubsetArray, false);
|
||||||
EXPECT_EQ (iFoundId, iCurSpsId);
|
EXPECT_EQ (iFoundId, iCurSpsId);
|
||||||
|
|
||||||
// try finding #0
|
// try finding #0
|
||||||
iFoundId = FindExistingSps (&sParam1, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse,
|
iFoundId = FindExistingSps (&sParam1, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse,
|
||||||
m_pSpsArray, m_pSubsetArray);
|
m_pSpsArray, m_pSubsetArray, false);
|
||||||
EXPECT_EQ (iFoundId, 0);
|
EXPECT_EQ (iFoundId, 0);
|
||||||
|
|
||||||
// try not finding
|
// try not finding
|
||||||
@ -115,7 +115,7 @@ TEST_F (ParameterSetStrategyTest, FindExistingSps) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
iFoundId = FindExistingSps (&sParam2, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse,
|
iFoundId = FindExistingSps (&sParam2, bUseSubsetSps, iDlayerIndex, iDlayerCount, iCurSpsInUse,
|
||||||
m_pSpsArray, m_pSubsetArray);
|
m_pSpsArray, m_pSubsetArray, false);
|
||||||
EXPECT_EQ (iFoundId, INVALID_ID);
|
EXPECT_EQ (iFoundId, INVALID_ID);
|
||||||
(void) iRet; // Not using iRet at the moment
|
(void) iRet; // Not using iRet at the moment
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user