From d6f0dee0c4d53edd7b347a34917414f8ff818d18 Mon Sep 17 00:00:00 2001 From: ruil2 Date: Tue, 26 Aug 2014 11:06:30 +0800 Subject: [PATCH] add more LTR parameters --- codec/api/svc/codec_app_def.h | 6 +++++- codec/encoder/plus/src/welsEncoderExt.cpp | 14 +++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/codec/api/svc/codec_app_def.h b/codec/api/svc/codec_app_def.h index 0002bbd0..a0fe87f8 100644 --- a/codec/api/svc/codec_app_def.h +++ b/codec/api/svc/codec_app_def.h @@ -89,7 +89,7 @@ typedef enum { 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 @@ typedef struct { 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; diff --git a/codec/encoder/plus/src/welsEncoderExt.cpp b/codec/encoder/plus/src/welsEncoderExt.cpp index f3b76a5e..68b20e2c 100644 --- a/codec/encoder/plus/src/welsEncoderExt.cpp +++ b/codec/encoder/plus/src/welsEncoderExt.cpp @@ -818,16 +818,20 @@ int CWelsH264SVCEncoder::SetOption (ENCODER_OPTION eOptionId, void* pOption) { 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: {