Revision 66f608a6
libavcodec/vp8.c | ||
---|---|---|
471 | 471 |
mb - 1 /* left */, |
472 | 472 |
mb + 1 /* top-left */ }; |
473 | 473 |
enum { CNT_ZERO, CNT_NEAREST, CNT_NEAR, CNT_SPLITMV }; |
474 |
enum { EDGE_TOP, EDGE_LEFT, EDGE_TOPLEFT };
|
|
474 |
enum { VP8_EDGE_TOP, VP8_EDGE_LEFT, VP8_EDGE_TOPLEFT };
|
|
475 | 475 |
int idx = CNT_ZERO; |
476 | 476 |
int cur_sign_bias = s->sign_bias[mb->ref_frame]; |
477 | 477 |
int8_t *sign_bias = s->sign_bias; |
... | ... | |
512 | 512 |
mb->mode = VP8_MVMODE_MV; |
513 | 513 |
|
514 | 514 |
/* If we have three distinct MVs, merge first and last if they're the same */ |
515 |
if (cnt[CNT_SPLITMV] && AV_RN32A(&near_mv[1+EDGE_TOP]) == AV_RN32A(&near_mv[1+EDGE_TOPLEFT]))
|
|
515 |
if (cnt[CNT_SPLITMV] && AV_RN32A(&near_mv[1 + VP8_EDGE_TOP]) == AV_RN32A(&near_mv[1 + VP8_EDGE_TOPLEFT]))
|
|
516 | 516 |
cnt[CNT_NEAREST] += 1; |
517 | 517 |
|
518 | 518 |
/* Swap near and nearest if necessary */ |
... | ... | |
526 | 526 |
|
527 | 527 |
/* Choose the best mv out of 0,0 and the nearest mv */ |
528 | 528 |
clamp_mv(s, &mb->mv, &near_mv[CNT_ZERO + (cnt[CNT_NEAREST] >= cnt[CNT_ZERO])]); |
529 |
cnt[CNT_SPLITMV] = ((mb_edge[EDGE_LEFT]->mode == VP8_MVMODE_SPLIT) + |
|
530 |
(mb_edge[EDGE_TOP]->mode == VP8_MVMODE_SPLIT)) * 2 + |
|
531 |
(mb_edge[EDGE_TOPLEFT]->mode == VP8_MVMODE_SPLIT); |
|
529 |
cnt[CNT_SPLITMV] = ((mb_edge[VP8_EDGE_LEFT]->mode == VP8_MVMODE_SPLIT) +
|
|
530 |
(mb_edge[VP8_EDGE_TOP]->mode == VP8_MVMODE_SPLIT)) * 2 +
|
|
531 |
(mb_edge[VP8_EDGE_TOPLEFT]->mode == VP8_MVMODE_SPLIT);
|
|
532 | 532 |
|
533 | 533 |
if (vp56_rac_get_prob_branchy(c, vp8_mode_contexts[cnt[CNT_SPLITMV]][3])) { |
534 | 534 |
mb->mode = VP8_MVMODE_SPLIT; |
Also available in: Unified diff