On 10/23, Nicolas Morey-Chaisemartin wrote: > --- > source/Lib/TLibCommon/TComDataCU.cpp | 5 +++-- > source/common/param.cpp | 2 ++ > source/common/slice.h | 1 + > source/encoder/encoder.cpp | 1 + > source/encoder/entropy.cpp | 9 +++++---- > source/x265.h | 3 +++ > 6 files changed, 15 insertions(+), 6 deletions(-) > > diff --git a/source/Lib/TLibCommon/TComDataCU.cpp > b/source/Lib/TLibCommon/TComDataCU.cpp > index 799b88a..38b5eed 100644 > --- a/source/Lib/TLibCommon/TComDataCU.cpp > +++ b/source/Lib/TLibCommon/TComDataCU.cpp > @@ -1823,7 +1823,8 @@ void TComDataCU::getInterMergeCandidates(uint32_t > absPartIdx, uint32_t puIdx, TC > return; > } > }
TComDataCU.cpp no longer exists (nor does the rest of Lib/ now), sorry for all the churn. It should be trivial to apply these to cudata.cpp > - // TMVP always enabled > + > + if (m_slice->m_sps->bTemporalMVPEnabled) > { > //>> MTK colocated-RightBottom > uint32_t partIdxRB; > @@ -2092,7 +2093,7 @@ int TComDataCU::fillMvpCand(uint32_t partIdx, uint32_t > partAddr, int picList, in > return numMvc; > } > - // TMVP always enabled > + if (m_slice->m_sps->bTemporalMVPEnabled) > { > // Get Temporal Motion Predictor > int refIdxCol = refIdx; > diff --git a/source/common/param.cpp b/source/common/param.cpp > index 004f5a8..ce3f56e 100644 > --- a/source/common/param.cpp > +++ b/source/common/param.cpp > @@ -150,6 +150,7 @@ void x265_param_default(x265_param *param) > param->bEnableTransformSkip = 0; > param->bEnableTSkipFast = 0; > param->maxNumReferences = 3; > + param->bEnableTemporalMvp = 1; > /* Loop Filter */ > param->bEnableLoopFilter = 1; > @@ -1174,6 +1175,7 @@ void x265_print_params(x265_param *param) > TOOLOPT(param->bEnableSignHiding, "signhide"); > TOOLOPT(param->bCULossless, "cu-lossless"); > TOOLOPT(param->bEnableFastIntra, "fast-intra"); > + TOOLOPT(param->bEnableTemporalMvp, "tmvp"); > if (param->bEnableTransformSkip) > { > if (param->bEnableTSkipFast) > diff --git a/source/common/slice.h b/source/common/slice.h > index 59487f6..394e02a 100644 > --- a/source/common/slice.h > +++ b/source/common/slice.h > @@ -211,6 +211,7 @@ struct SPS > int numReorderPics; > bool bUseStrongIntraSmoothing; // use param > + bool bTemporalMVPEnabled; > Window conformanceWindow; > VUI vuiParameters; > diff --git a/source/encoder/encoder.cpp b/source/encoder/encoder.cpp > index b2fbc44..6560dbe 100644 > --- a/source/encoder/encoder.cpp > +++ b/source/encoder/encoder.cpp > @@ -1115,6 +1115,7 @@ void Encoder::initSPS(SPS *sps) > sps->numReorderPics = m_vps.numReorderPics; > sps->bUseStrongIntraSmoothing = m_param->bEnableStrongIntraSmoothing; > + sps->bTemporalMVPEnabled = m_param->bEnableTemporalMvp; there's a tab-stop here > VUI& vui = sps->vuiParameters; > vui.aspectRatioInfoPresentFlag = !!m_param->vui.aspectRatioIdc; > diff --git a/source/encoder/entropy.cpp b/source/encoder/entropy.cpp > index 7085c14..ee89a5b 100644 > --- a/source/encoder/entropy.cpp > +++ b/source/encoder/entropy.cpp > @@ -117,7 +117,7 @@ void Entropy::codeSPS(SPS* sps, ScalingList *scalingList, > ProfileTierLevel *ptl) > WRITE_UVLC(0, "num_short_term_ref_pic_sets"); > WRITE_FLAG(0, "long_term_ref_pics_present_flag"); > - WRITE_FLAG(1, "sps_temporal_mvp_enable_flag"); > + WRITE_FLAG(sps->bTemporalMVPEnabled, "sps_temporal_mvp_enable_flag"); > WRITE_FLAG(sps->bUseStrongIntraSmoothing, > "sps_strong_intra_smoothing_enable_flag"); > WRITE_FLAG(1, "vui_parameters_present_flag"); > @@ -377,7 +377,8 @@ void Entropy::codeSliceHeader(Slice* slice) > WRITE_FLAG(0, "short_term_ref_pic_set_sps_flag"); > codeShortTermRefPicSet(&slice->m_rps); > - WRITE_FLAG(1, "slice_temporal_mvp_enable_flag"); > + if(slice->m_sps->bTemporalMVPEnabled) > + WRITE_FLAG(1, "slice_temporal_mvp_enable_flag"); > } > SAOParam *saoParam = slice->m_pic->getPicSym()->getSaoParam(); > if (slice->m_sps->bUseSAO) > @@ -412,8 +413,8 @@ void Entropy::codeSliceHeader(Slice* slice) > if (slice->isInterB()) > WRITE_FLAG(0, "mvd_l1_zero_flag"); > - // TMVP always enabled > - { > + if(slice->m_sps->bTemporalMVPEnabled) > + { and another here, mind the space between if and ( > if (slice->m_sliceType == B_SLICE) > WRITE_FLAG(slice->m_colFromL0Flag, "collocated_from_l0_flag"); > diff --git a/source/x265.h b/source/x265.h > index 2c40ee7..bd2c578 100644 > --- a/source/x265.h > +++ b/source/x265.h > @@ -568,6 +568,9 @@ typedef struct x265_param > * the performance but the less compression efficiency. Default is 3 */ > uint32_t maxNumMergeCand; > + /* Disable availability of temporal motion vector for AMVP */ > + int bEnableTemporalMvp; any API change to x265.h needs to be accompanied by a bump in X265_BUILD in the main CMakeLists.txt. > /* Enable weighted prediction in P slices. This enables weighting > analysis > * in the lookahead, which influences slice decisions, and enables > weighting > * analysis in the main encoder which allows P reference samples to have > a ignoring the white-space and rebase issues, I'm fine with the patch. I was actually considering doing this myself just this week. -- Steve Borho _______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel