If a parent mb is available but is intra coded, then parent_ref_mv is
invalid. Check that the parent is inter coded before trying to access
the parent_ref_mv. Previously the parent_ref_mv was being read from
an uninitialized stack allocation, causing potential OOB reads and
other undefined behavior.
Change-Id: I0c93cd412a19c3a184bcf6decaa145b3a036a6c0
if (cpi->oxcf.mr_encoder_id && !cpi->mr_low_res_mv_avail)
cpi->sf.improved_mv_pred = 0;
- if (cpi->oxcf.mr_encoder_id && cpi->mr_low_res_mv_avail)
+ if (cpi->oxcf.mr_encoder_id && cpi->mr_low_res_mv_avail
+ && parent_ref_frame)
{
/* Use parent MV as predictor. Adjust search range
* accordingly.
#if CONFIG_MULTI_RES_ENCODING
if (cpi->oxcf.mr_encoder_id && cpi->mr_low_res_mv_avail &&
dissim <= 2 &&
+ parent_ref_frame &&
MAX(abs(best_ref_mv.as_mv.row - parent_ref_mv.as_mv.row),
abs(best_ref_mv.as_mv.col - parent_ref_mv.as_mv.col)) <= 4)
{