Sub-PU based Motion Vector Prediction

来源:互联网 发布:淘宝加入购物车没反应 编辑:程序博客网 时间:2024/03/28 22:23
  • 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)
阅读全文
0 0
原创粉丝点击