Open
Description
At higher level, ex in encode_tile(), frame_pmv[ ] stores the coarse initial MVs, which serves as search center (or seed) for ME.
However, later in subsequent functions, like motion_estimation(), it is the ref_mv specified by AV1 spec and stored atmv_stack[ ].
The cmv is used as search center (or seed) for ME.
To eliminate any confusions, let's not use pmv for the context of coarse MVs for ME search center or seed. For ex, we probably need to avoid sth line this in in rdo_mode_decision() :
if !mv_stack.is_empty() { pmv[0] = mv_stack[0].this_mv; } --> pmv[ ] corresponds to av1 spec
if mv_stack.len() > 1 { pmv[1] = mv_stack[1].this_mv; }
...
let cmv = pmvs[ref_slot].unwrap(); --> pmvs[ ] propagate from initial coarse M Vs in encode_tile()
let b_me = motion_estimation(fi, fs, bsize, bo, ref_frames[0], cmv, pmv);
Activity