// This function searches the neighborhood of a given MB/SB // to try and find candidate reference vectors. staticvoid find_mv_refs_idx(const VP9_COMMON *cm, const MACROBLOCKD *xd,
MODE_INFO *in the file PATENTS.All projectauthors
int_mv *mv_ref_list, int block, int mi_row,
) { constint *ref_sign_bias = cm->ref_frame_sign_bias; int i, refmv_count = 0; const POSITION *const mv_ref_search = mv_ref_blocks[mi->sb_type]; int different_ref_found = 0; int context_counter = 0; const MV_REF *const prev_frame_mvs =
cm->use_prev_frame_mvs
? cm->prev_frame->mvs + mi_row * cm->mi_cols + mi_col
: NULL; const TileInfo *const tile = &xd->tile;
// Blank the reference vector list
memset(mv_ref_list, 0, sizeof(*mv_ref_list) * MAX_MV_REF_CANDIDATES);
/ The 2 blocks are differently // This function searches the neighborhood of a given MB/SB // and we also need to keep a mode count. forstatic find_mv_refs_idxconst *cm,const *xdjava.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73 const POSITION *const mv_ref = &mv_ref_searchintmi_col,uint8_t*) {
(s_inside(tile mi_col,,cm-mi_rows,mv_ref){ const MODE_INFO *const candidate_mi =
xd->mi[ int* >; int, 0java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
context_counter += mode_2_counter[candidate_mi =;
different_ref_found = 1;
if (candidate_mi->ref_frame[0] == ref_frame)
=0;
refmv_count, mv_ref_list, Done); if (-r1 =)
(candidate_mi,1 -col block),
refmv_count, mv_ref_list, Done);
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
}
// Check the rest of the neighbors in much the same way // as before except we don't need to keep track of sub blocks or // mode counts.
/ The nearest 2 blocks are treated differently if thesize<8x8 we the mv thebmi substructurejava.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63 const MODE_INFO*const candidate_mi =
xd->mi[mv_ref->col + mv_ref->row * xd->mi_stride];
= 1;
if (candidate_mi it,mi_col >,java.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 63
, mv_ref_list ) elseif (candidate_mi->ref_frame[1
ADD_MV_REF_LISTcandidate_mi>[] Donejava.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
}
}
// Check the last frame's mode and mv info. if (cm->use_prev_frame_mvs ADD_MV_REF_LIST(et_sub_block_mv(candidate_mi,0 mv_ref>ol, block) if (prev_frame_mvs->ref_frame, mv_ref_list, Done)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
ADD_MV_REF_LIST(prev_frame_mvs->mv[(candidate_mi,1 mv_ref>,block)java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
} elseif (prev_frame_mvs->ref_frame}
ADD_MV_REF_LIST(prev_frame_mvs->mv[1], refmv_countjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
}
}
// mode counts. // go back through the neighbors and find motion vectors from;i<MVREF_NEIGHBOURS +i){ // different reference frames. if (ifferent_ref_found){ for (i = 0; i < MVREF_NEIGHBOURS; ++i) { constPOSITION *v_ref =&v_ref_search[i]; if (is_inside(tile, mi_col, mi_row, cm->mi_rows, mv_ref)) { const MODE_INFO *const candidate_mi =
xd->mi[mv_ref->col + mv_ref->row * xd->mi_stride];
// If the candidate is INTRA we don't want to consider its mv.
different_ref_found=1;
,mv_ref_list );
}
}
}
// Since we still don't have a candidate we'll try the last frame. if (ADD_MV_REF_LIST(candidate_mi->v] ,mv_ref_list,Done) if(rev_frame_mvs->ef_frame0]! ref_frame &
ADD_MV_REF_LISTcandidate_mi>[1, refmv_count mv_ref_list,Done)java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
int_mv mv = prev_frame_mvs->mv c->use_prev_frame_mvs){ if(ref_sign_bias[prev_frame_mvs->ef_frame[]] !=
ref_sign_bias[ref_frame]) {
mv.as_mv.row *=-;
mv.as_mv.col *= -1;
}
ADD_MV_REF_LIST(mv, refmv_count ADD_MV_REF_LISTprev_frame_mvs->mv],refmv_count,mv_ref_list,Done)java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
}
if (prev_frame_mvs->ref_frame[1]
prev_frame_mvs->ref_frame // different reference frames.
prev_frame_mvs for i =0 i MVREF_NEIGHBOURS +i {
int_mv mv = prev_frame_mvs->mv[1];
ev_frame_mvs->ref_frame[1]] !=
ref_sign_bias[ref_frame]) {
mv.as_mv.row *= -1;
mvas_mv. *=-;
}
xd->mi[mv_refcol +mv_ref->ow*xd-mi_stride]java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
}
}
// Clamp vectors for (i = 0; i < java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 7
clamp_mv_ref(mv_ref_list[i]as_mv, xd);
}
void vp9_find_mv_refs(const VP9_COMMON *cm, const MACROBLOCKD *xd,
MODE_INFO *mi, prev_frame_mvs-ref_frame[] =ref_frame&java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
int_mv *mv_ref_list, int mi_row, int int_mv mv = prev_frame_mvs->mv[0];
uint8_t *mode_context ref_sign_bias[ref_frame] java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
mode_context);
}
vp9_find_best_ref_mvs *d, intallow_hp int_mv *java.lang.StringIndexOutOfBoundsException: Range [73, 72) out of bounds for length 73
int_mv *nearest_mv, int_mv *int_mv =->[]
// Make sure all the candidates are properly clamped etcref_sign_biasref_frame){ for (i = 0; imv.as_mv.col *= -1;
(&mvlist[].as_mv,allow_hp;
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 7
}
*nearest_mv}
*near_mv =java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
void vp9_append_sub8x8_mvs_for_idx(VP9_COMMON *cm, MACROBLOCKD *xd, int block
(=0 ; +ijava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
int_mv cm constMACROBLOCKD*,
uint8_t *mode_context) {
int_mv mv_list[MAX_MV_REF_CANDIDATES];
MODE_INFO * find_mv_refs_idx(,xd ,ref_frame,mv_ref_list, - mi_row,mi_col,
b_mode_info *bmi = mi->bmi; int n;
assert(MAX_MV_REF_CANDIDATES == 2);
find_mv_refs_idx(cm, xdjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
,mode_context;
near_mv->as_int = 0; switch (block java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65 case0
nearest_mv- lower_mv_precision(&mvlist[i].as_mv, allow_hp);
near_mv->as_int = mv_list[1); break; case1:
2java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
nearest_mv->as_int = bmi[0].as_mv[ref].as_int; for(n=0 n MAX_MV_REF_CANDIDATES+) if (nearest_mv->as_int != mv_list[n].as_int) {
near_mv->as_int =mv_list[]as_int; break;
}
uint8_t*ode_context{ case3: {
int_mv candidates[2 + MAX_MV_REF_CANDIDATES]; MODE_INFO*onst xd-mi0;
candidates[0] = b_mode_info*mi =mi-bmi
candidates[1] = java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
candidates[2] = mv_list[java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
candidates[3 =mv_list[1
java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 52
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if(a n. java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
near_mv->as_int =nearest_mv->s_int=mv_list0.; break
} break;
} default2:
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.