Merge pull request #424 from ruil2/encoder_interface

remove inter-deblock related parameters--review request #148
This commit is contained in:
volvet 2014-03-06 13:39:57 +08:00
commit d292179095
5 changed files with 2 additions and 55 deletions

View File

@ -232,10 +232,6 @@ typedef struct TagEncParamExt
int iLoopFilterDisableIdc; // 0: on, 1: off, 2: on except for slice boundaries
int iLoopFilterAlphaC0Offset;// AlphaOffset: valid range [-6, 6], default 0
int iLoopFilterBetaOffset; // BetaOffset: valid range [-6, 6], default 0
int iInterLayerLoopFilterDisableIdc; // Employed based upon inter-layer, same comment as above
int iInterLayerLoopFilterAlphaC0Offset; // InterLayerLoopFilterAlphaC0Offset
int iInterLayerLoopFilterBetaOffset; // InterLayerLoopFilterBetaOffset
/*pre-processing feature*/
bool bEnableDenoise; // denoise control
bool bEnableBackgroundDetection;// background detection control //VAA_BACKGROUND_DETECTION //BGD cmd

View File

@ -164,26 +164,6 @@ int ParseConfig (CReadConfig& cRdCfg, SEncParamExt& pSvcParam, SFilesSet& sFileS
pSvcParam.iLoopFilterBetaOffset = -6;
else if (pSvcParam.iLoopFilterBetaOffset > 6)
pSvcParam.iLoopFilterBetaOffset = 6;
} else if (strTag[0].compare ("InterLayerLoopFilterDisableIDC") == 0) {
pSvcParam.iInterLayerLoopFilterDisableIdc = (int8_t)atoi (strTag[1].c_str());
if (pSvcParam.iInterLayerLoopFilterDisableIdc > 6 || pSvcParam.iInterLayerLoopFilterDisableIdc < 0) {
fprintf (stderr, "Invalid parameter in iInterLayerLoopFilterDisableIdc: %d.\n",
pSvcParam.iInterLayerLoopFilterDisableIdc);
iRet = 1;
break;
}
} else if (strTag[0].compare ("InterLayerLoopFilterAlphaC0Offset") == 0) {
pSvcParam.iInterLayerLoopFilterAlphaC0Offset = (int8_t)atoi (strTag[1].c_str());
if (pSvcParam.iInterLayerLoopFilterAlphaC0Offset < -6)
pSvcParam.iInterLayerLoopFilterAlphaC0Offset = -6;
else if (pSvcParam.iInterLayerLoopFilterAlphaC0Offset > 6)
pSvcParam.iInterLayerLoopFilterAlphaC0Offset = 6;
} else if (strTag[0].compare ("InterLayerLoopFilterBetaOffset") == 0) {
pSvcParam.iInterLayerLoopFilterBetaOffset = (int8_t)atoi (strTag[1].c_str());
if (pSvcParam.iInterLayerLoopFilterBetaOffset < -6)
pSvcParam.iInterLayerLoopFilterBetaOffset = -6;
else if (pSvcParam.iInterLayerLoopFilterBetaOffset > 6)
pSvcParam.iInterLayerLoopFilterBetaOffset = 6;
} else if (strTag[0].compare ("MultipleThreadIdc") == 0) {
// # 0: auto(dynamic imp. internal encoder); 1: multiple threads imp. disabled; > 1: count number of threads;
pSvcParam.iMultipleThreadIdc = atoi (strTag[1].c_str());

View File

@ -169,9 +169,6 @@ static void FillDefault (SEncParamExt& param, const bool kbEnableRc) {
param.iLoopFilterDisableIdc = 1; // 0: on, 1: off, 2: on except for slice boundaries
param.iLoopFilterAlphaC0Offset = 0; // AlphaOffset: valid range [-6, 6], default 0
param.iLoopFilterBetaOffset = 0; // BetaOffset: valid range [-6, 6], default 0
param.iInterLayerLoopFilterDisableIdc = 1; // Employed based upon inter-layer, same comment as above
param.iInterLayerLoopFilterAlphaC0Offset = 0; // InterLayerLoopFilterAlphaC0Offset
param.iInterLayerLoopFilterBetaOffset = 0; // InterLayerLoopFilterBetaOffset
/* Rate Control */
param.bEnableRc = kbEnableRc;
@ -327,9 +324,6 @@ int32_t ParamTranscode (const SEncParamExt& pCodingParam) {
#endif
iLoopFilterAlphaC0Offset = 0; // AlphaOffset: valid range [-6, 6], default 0
iLoopFilterBetaOffset = 0; // BetaOffset: valid range [-6, 6], default 0
iInterLayerLoopFilterDisableIdc = iLoopFilterDisableIdc; // Employed based upon inter-layer, same comment as above
iInterLayerLoopFilterAlphaC0Offset = 0;
iInterLayerLoopFilterBetaOffset = 0;
bEnableFrameCroppingFlag = true;

View File

@ -866,10 +866,6 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx) {
pDqLayer->iLoopFilterDisableIdc = pParam->iLoopFilterDisableIdc;
pDqLayer->iLoopFilterAlphaC0Offset = (pParam->iLoopFilterAlphaC0Offset) << 1;
pDqLayer->iLoopFilterBetaOffset = (pParam->iLoopFilterBetaOffset) << 1;
//inter-layer deblocking
pDqLayer->uiDisableInterLayerDeblockingFilterIdc = pParam->iInterLayerLoopFilterDisableIdc;
pDqLayer->iInterLayerSliceAlphaC0Offset = (pParam->iInterLayerLoopFilterAlphaC0Offset) << 1;
pDqLayer->iInterLayerSliceBetaOffset = (pParam->iInterLayerLoopFilterBetaOffset) << 1;
//parallel deblocking
pDqLayer->bDeblockingParallelFlag = pParam->bDeblockingParallelFlag;
@ -3710,9 +3706,6 @@ int32_t WelsEncoderParamAdjust (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pNewPa
pNewParam->iLoopFilterDisableIdc = WELS_CLIP3 (pNewParam->iLoopFilterDisableIdc, 0, 6);
pNewParam->iLoopFilterAlphaC0Offset = WELS_CLIP3 (pNewParam->iLoopFilterAlphaC0Offset, -6, 6);
pNewParam->iLoopFilterBetaOffset = WELS_CLIP3 (pNewParam->iLoopFilterBetaOffset, -6, 6);
pNewParam->iInterLayerLoopFilterDisableIdc = WELS_CLIP3 (pNewParam->iInterLayerLoopFilterDisableIdc, 0, 6);
pNewParam->iInterLayerLoopFilterAlphaC0Offset = WELS_CLIP3 (pNewParam->iInterLayerLoopFilterAlphaC0Offset, -6, 6);
pNewParam->iInterLayerLoopFilterBetaOffset = WELS_CLIP3 (pNewParam->iInterLayerLoopFilterBetaOffset, -6, 6);
pNewParam->fMaxFrameRate = WELS_CLIP3 (pNewParam->fMaxFrameRate, MIN_FRAME_RATE, MAX_FRAME_RATE);
// we can not use direct struct based memcpy due some fields need keep unchanged as before
@ -3746,12 +3739,6 @@ int32_t WelsEncoderParamAdjust (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pNewPa
pOldParam->iLoopFilterDisableIdc = pNewParam->iLoopFilterDisableIdc; // 0: on, 1: off, 2: on except for slice boundaries
pOldParam->iLoopFilterAlphaC0Offset = pNewParam->iLoopFilterAlphaC0Offset;// AlphaOffset: valid range [-6, 6], default 0
pOldParam->iLoopFilterBetaOffset = pNewParam->iLoopFilterBetaOffset; // BetaOffset: valid range [-6, 6], default 0
pOldParam->iInterLayerLoopFilterDisableIdc =
pNewParam->iInterLayerLoopFilterDisableIdc; // Employed based upon inter-layer, same comment as above
pOldParam->iInterLayerLoopFilterAlphaC0Offset =
pNewParam->iInterLayerLoopFilterAlphaC0Offset; // InterLayerLoopFilterAlphaC0Offset
pOldParam->iInterLayerLoopFilterBetaOffset =
pNewParam->iInterLayerLoopFilterBetaOffset; // InterLayerLoopFilterBetaOffset
/* Rate Control */
pOldParam->bEnableRc = pNewParam->bEnableRc;

View File

@ -23,16 +23,6 @@ LoopFilterDisableIDC 0 # Loop filter idc (0: on, 1: off,
# 6: Luma on in two stage. slice boundries on in second stage, but Chroma off (w.r.t. idc=3)
LoopFilterAlphaC0Offset 0 # AlphaOffset(-6..+6): valid range
LoopFilterBetaOffset 0 # BetaOffset (-6..+6): valid range
InterLayerLoopFilterDisableIDC 0 # filter idc for inter-layer deblocking (0: on, 1: off,
# 2: on except for slice boundaries,
# 3: two stage. slice boundries on in second stage
# 4: Luma on but Chroma off in enh. layer (w.r.t. idc=0)
# 5: Luma on except on slice boundaries, but Chroma off in enh. layer (w.r.t. idc=2)
# 6: Luma on in two stage. slice boundries on in second stage, but Chroma off (w.r.t. idc=3)
InterLayerLoopFilterAlphaC0Offset 0 # AlphaOffset for inter-layer deblocking
InterLayerLoopFilterBetaOffset 0 # BetaOffset for inter-layer deblocking
#============================== SOFTWARE IMPLEMENTATION ==============================
MultipleThreadIdc 1 # 0: auto(dynamic imp. internal encoder); 1: multiple threads imp. disabled; > 1: count number of threads;