ref: d6f0dee0c4d53edd7b347a34917414f8ff818d18
parent: a4eea4c64dd4ea8f31794a47ffc6f69eec970f91
author: ruil2 <[email protected]>
date: Tue Aug 26 07:06:30 EDT 2014
add more LTR parameters
--- a/codec/api/svc/codec_app_def.h
+++ b/codec/api/svc/codec_app_def.h
@@ -89,7 +89,7 @@
ENCODER_LTR_RECOVERY_REQUEST,
ENCODER_LTR_MARKING_FEEDBACK,
- ENCOCER_LTR_MARKING_PERIOD,
+ ENCODER_LTR_MARKING_PERIOD,
ENCODER_OPTION_LTR,
ENCODER_OPTION_COMPLEXITY,
@@ -177,6 +177,10 @@
int iLTRFrameNum; //specify current decoder frame_num
} SLTRMarkingFeedback;
+typedef struct {
+ bool bEnableLongTermReference; // 1: on, 0: off
+ int iLTRRefNum;
+}SLTRConfig;
typedef struct {
unsigned int
uiSliceMbNum[MAX_SLICES_NUM_TMP]; //here we use a tmp fixed value since MAX_SLICES_NUM is not defined here and its definition may be changed;
--- a/codec/encoder/plus/src/welsEncoderExt.cpp
+++ b/codec/encoder/plus/src/welsEncoderExt.cpp
@@ -818,16 +818,20 @@
FilterLTRMarkingFeedback (m_pEncContext, fb);
}
break;
- case ENCOCER_LTR_MARKING_PERIOD: {
+ case ENCODER_LTR_MARKING_PERIOD: {
uint32_t iValue = * ((uint32_t*) (pOption));
m_pEncContext->pSvcParam->iLtrMarkPeriod = iValue;
}
break;
case ENCODER_OPTION_LTR: {
- uint32_t iValue = * ((uint32_t*) (pOption));
- m_pEncContext->pSvcParam->bEnableLongTermReference = iValue ? true : false;
- WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_WARNING, " CWelsH264SVCEncoder::SetOption enable LTR = %d",
- m_pEncContext->pSvcParam->bEnableLongTermReference);
+ SLTRConfig* pLTRValue = ((SLTRConfig*) (pOption));
+ SWelsSvcCodingParam sConfig;
+ memcpy (&sConfig, m_pEncContext->pSvcParam, sizeof (SWelsSvcCodingParam));
+ sConfig.bEnableLongTermReference = pLTRValue->bEnableLongTermReference;
+ sConfig.iLTRRefNum = pLTRValue->iLTRRefNum;
+ WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_WARNING, " CWelsH264SVCEncoder::SetOption enable LTR = %d,ltrnum = %d",
+ sConfig.bEnableLongTermReference, sConfig.iLTRRefNum);
+ WelsEncoderParamAdjust (&m_pEncContext, &sConfig);
}
break;
case ENCODER_OPTION_ENABLE_SSEI: {