Sub-PU based Motion Vector Prediction

  • HEVC
    • PU can have at most one set of motion for each prediction direction
  • JEM
    • PU will be splitted by sub-PUs
    • Adds 2 merge modes from sub-PUs, including ATMVP and STMVP. So, do not need to encode other mvs, just enlarge the number of merge candidates.
    • each PU has multiple sets of motion information from multiple blocks using ATMVP(advanced temporal motion vector prediction)
    • STMVP(spatial-temporal motion vector prediction), mvs of sub-PUs are derived recursively by using the temporal motion vector predictor and spatial neighboring mv

  • ATMVP
    • Fisrt, get motion source picture and corresponding block
    • Second, get converted mv and reference indices from corresponding blocks(not very clear)
  • STMVP
    • For each sub-PU, first, get all the spatial(2) and temporal(1) mvs with scaling and retrieving; then, average all the mvs for each reference list, and this averaged mv is assigned as the mv of this sub-PU
  • code
    • #define COM16_C806_VCEG_AZ10_SUB_PU_TMVP
    • ATMVP
      • abstain the temporal vector, to find the motion sourve picture and corresponding block -> check function: get1stTvFromSpatialNeighbor(use spatial neighboring[left/top/topleft/topright/leftbottom & refList0/refList1] mvs)
      • get the ATMVP merge candidate, with the given temporal vector -> check function:getInterMergeSubPUTmvpCandidate(1.use 1st temporal vector to derive the centor cu for all the refPics in all refList[do search till find the first available], 2. if the predMode of these centor cus is not equal to MODE_INTRA, derive the colMv using scale operations according to the distance between colPic & curPic with function of deriveScaledMotionTemporalForOneDirection -> xGetDistScaleFactor[colPicPoc, colPicRefPoc, curPicPoc, curPicPoc], 3. if the centor cu has motion, then the advanced TMVP candidate is considered, for each sub PU in current PU, we should derive its col-cu in the colPic, when the col-cu is not intraCU, then deriveScaledMotionTemporalForOneDirection for each sub PU)
    • if Enable ATMVP, then get the STMVP
      • get extend temporal and spatial merge candidates with the function:getInterMergeSubPURecursiveCandidate(for each sub PU, get the extend left and top neighboring block mvs & temporal neighboring mvs, then, generate the STMVP for this sub PU with function: generateMvField)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值