Lines Matching refs:mb

921 int decode_splitmvs(VP8Context *s, VP56RangeCoder *c, VP8Macroblock *mb,
927 VP8Macroblock *left_mb = &mb[-1];
932 VP56mv *cur_mv = mb->bmv;
935 top_mb = &mb[2];
937 top_mb = &mb[-s->mb_width - 1];
953 mb->partitioning = part_idx;
974 mb->bmv[n].y = mb->mv.y +
976 mb->bmv[n].x = mb->mv.x +
979 AV_ZERO32(&mb->bmv[n]);
982 AV_WN32A(&mb->bmv[n], above);
985 AV_WN32A(&mb->bmv[n], left);
1016 static const VP56mv *get_bmv_ptr(const VP8Macroblock *mb, int subblock)
1018 return &mb->bmv[mb->mode == VP8_MVMODE_SPLIT ? vp8_mbsplits[mb->partitioning][subblock] : 0];
1022 void vp7_decode_mvs(VP8Context *s, VP8Macroblock *mb,
1075 mb->partitioning = VP8_SPLITMVMODE_NONE;
1078 mb->mode = VP8_MVMODE_MV;
1085 AV_WN32A(&mb->mv, cnt[CNT_ZERO] > cnt[CNT_NEAREST] ? 0 : AV_RN32A(&near_mv[CNT_NEAREST]));
1087 AV_WN32A(&mb->mv, cnt[CNT_ZERO] > cnt[CNT_NEAR] ? 0 : AV_RN32A(&near_mv[CNT_NEAR]));
1090 mb->mode = VP8_MVMODE_SPLIT;
1091 mb->mv = mb->bmv[decode_splitmvs(s, c, mb, layout, IS_VP7) - 1];
1093 mb->mv.y += vp7_read_mv_component(c, s->prob->mvc[0]);
1094 mb->mv.x += vp7_read_mv_component(c, s->prob->mvc[1]);
1095 mb->bmv[0] = mb->mv;
1098 mb->mv = near_mv[CNT_NEAR];
1099 mb->bmv[0] = mb->mv;
1102 mb->mv = near_mv[CNT_NEAREST];
1103 mb->bmv[0] = mb->mv;
1106 mb->mode = VP8_MVMODE_ZERO;
1107 AV_ZERO32(&mb->mv);
1108 mb->bmv[0] = mb->mv;
1113 void vp8_decode_mvs(VP8Context *s, VP8mvbounds *mv_bounds, VP8Macroblock *mb,
1117 mb - 1 /* left */,
1122 int cur_sign_bias = s->sign_bias[mb->ref_frame];
1129 mb_edge[0] = mb + 2;
1130 mb_edge[2] = mb + 1;
1132 mb_edge[0] = mb - s->mb_width - 1;
1133 mb_edge[2] = mb - s->mb_width - 2;
1166 mb->partitioning = VP8_SPLITMVMODE_NONE;
1168 mb->mode = VP8_MVMODE_MV;
1184 clamp_mv(mv_bounds, &mb->mv, &near_mv[CNT_ZERO + (cnt[CNT_NEAREST] >= cnt[CNT_ZERO])]);
1190 mb->mode = VP8_MVMODE_SPLIT;
1191 mb->mv = mb->bmv[decode_splitmvs(s, c, mb, layout, IS_VP8) - 1];
1193 mb->mv.y += vp8_read_mv_component(c, s->prob->mvc[0]);
1194 mb->mv.x += vp8_read_mv_component(c, s->prob->mvc[1]);
1195 mb->bmv[0] = mb->mv;
1198 clamp_mv(mv_bounds, &mb->mv, &near_mv[CNT_NEAR]);
1199 mb->bmv[0] = mb->mv;
1202 clamp_mv(mv_bounds, &mb->mv, &near_mv[CNT_NEAREST]);
1203 mb->bmv[0] = mb->mv;
1206 mb->mode = VP8_MVMODE_ZERO;
1207 AV_ZERO32(&mb->mv);
1208 mb->bmv[0] = mb->mv;
1213 void decode_intra4x4_modes(VP8Context *s, VP56RangeCoder *c, VP8Macroblock *mb,
1216 uint8_t *intra4x4 = mb->intra4x4_pred_mode_mb;
1219 VP8Macroblock *mb_top = mb - s->mb_width - 1;
1220 memcpy(mb->intra4x4_pred_mode_top, mb_top->intra4x4_pred_mode_top, 4);
1227 top = mb->intra4x4_pred_mode_top;
1249 VP8Macroblock *mb, int mb_x, int mb_y,
1276 mb->segment = *segment;
1278 mb->skip = s->mbskip_enabled ? vp56_rac_get_prob(c, s->prob->mbskip) : 0;
1281 mb->mode = vp8_rac_get_tree(c, vp8_pred16x16_tree_intra,
1284 if (mb->mode == MODE_I4x4) {
1285 decode_intra4x4_modes(s, c, mb, mb_x, 1, layout);
1288 : vp8_pred4x4_mode)[mb->mode] * 0x01010101u;
1290 AV_WN32A(mb->intra4x4_pred_mode_top, modes);
1296 mb->chroma_pred_mode = vp8_rac_get_tree(c, vp8_pred8x8c_tree,
1298 mb->ref_frame = VP56_FRAME_CURRENT;
1302 mb->ref_frame =
1306 mb->ref_frame = VP56_FRAME_PREVIOUS;
1307 s->ref_count[mb->ref_frame - 1]++;
1311 vp7_decode_mvs(s, mb, mb_x, mb_y, layout);
1313 vp8_decode_mvs(s, mv_bounds, mb, mb_x, mb_y, layout);
1316 mb->mode = vp8_rac_get_tree(c, vp8_pred16x16_tree_inter, s->prob->pred16x16);
1318 if (mb->mode == MODE_I4x4)
1319 decode_intra4x4_modes(s, c, mb, mb_x, 0, layout);
1321 mb->chroma_pred_mode = vp8_rac_get_tree(c, vp8_pred8x8c_tree,
1323 mb->ref_frame = VP56_FRAME_CURRENT;
1324 mb->partitioning = VP8_SPLITMVMODE_NONE;
1325 AV_ZERO32(&mb->bmv[0]);
1475 VP8Macroblock *mb, uint8_t t_nnz[9], uint8_t l_nnz[9],
1480 int segment = mb->segment;
1483 if (mb->mode != MODE_I4x4 && (is_vp7 || mb->mode != VP8_MVMODE_SPLIT)) {
1492 if (is_vp7 && mb->mode > MODE_I4x4) {
1494 s->inter_dc_pred[mb->ref_frame - 1]);
1545 mb->skip = 1;
1676 VP8Macroblock *mb, int mb_x, int mb_y, int is_vp7)
1688 if (mb->mode < MODE_I4x4) {
1689 mode = check_intra_pred8x8_mode_emuedge(mb->mode, mb_x, mb_y, is_vp7);
1693 uint8_t *intra4x4 = mb->intra4x4_pred_mode_mb;
1709 if (mb->skip)
1778 mode = check_intra_pred8x8_mode_emuedge(mb->chroma_pred_mode,
1959 void prefetch_motion(VP8Context *s, VP8Macroblock *mb, int mb_x, int mb_y,
1965 int mx = (mb->mv.x >> 2) + x_off + 8;
1966 int my = (mb->mv.y >> 2) + y_off;
1983 VP8Macroblock *mb, int mb_x, int mb_y)
1987 ThreadFrame *ref = &s->framep[mb->ref_frame]->tf;
1988 VP56mv *bmv = mb->bmv;
1990 switch (mb->partitioning) {
1993 0, 0, 16, 16, width, height, &mb->mv);
2017 uvmv.x = mb->bmv[2 * y * 4 + 2 * x ].x +
2018 mb->bmv[2 * y * 4 + 2 * x + 1].x +
2019 mb->bmv[(2 * y + 1) * 4 + 2 * x ].x +
2020 mb->bmv[(2 * y + 1) * 4 + 2 * x + 1].x;
2021 uvmv.y = mb->bmv[2 * y * 4 + 2 * x ].y +
2022 mb->bmv[2 * y * 4 + 2 * x + 1].y +
2023 mb->bmv[(2 * y + 1) * 4 + 2 * x ].y +
2024 mb->bmv[(2 * y + 1) * 4 + 2 * x + 1].y;
2066 void idct_mb(VP8Context *s, VP8ThreadData *td, uint8_t *dst[3], VP8Macroblock *mb)
2070 if (mb->mode != MODE_I4x4) {
2128 void filter_level_for_mb(VP8Context *s, VP8Macroblock *mb,
2134 filter_level = s->segmentation.filter_level[mb->segment];
2141 filter_level += s->lf_delta.ref[mb->ref_frame];
2142 filter_level += s->lf_delta.mode[mb->mode];
2156 f->inner_filter = is_vp7 || !mb->skip || mb->mode == MODE_I4x4 ||
2157 mb->mode == VP8_MVMODE_SPLIT;
2291 VP8Macroblock *mb = s->macroblocks_base +
2300 for (mb_x = 0; mb_x < s->mb_width; mb_x++, mb_xy++, mb++) {
2305 AV_WN32A((mb - s->mb_width - 1)->intra4x4_pred_mode_top,
2307 decode_mb_mode(s, &s->mv_bounds, mb, mb_x, mb_y, curframe->seg_map->data + mb_xy,
2379 VP8Macroblock *mb;
2398 mb = s->macroblocks_base + ((s->mb_width + 1) * (mb_y + 1) + 1);
2405 mb = s->macroblocks + (s->mb_height - mb_y - 1) * 2;
2406 memset(mb - 1, 0, sizeof(*mb)); // zero left macroblock
2416 for (mb_x = 0; mb_x < s->mb_width; mb_x++, mb_xy++, mb++) {
2438 decode_mb_mode(s, &td->mv_bounds, mb, mb_x, mb_y, curframe->seg_map->data + mb_xy,
2442 prefetch_motion(s, mb, mb_x, mb_y, mb_xy, VP56_FRAME_PREVIOUS);
2444 if (!mb->skip)
2445 decode_mb_coeffs(s, td, c, mb, s->top_nnz[mb_x], td->left_nnz, is_vp7);
2447 if (mb->mode <= MODE_I4x4)
2448 intra_predict(s, td, dst, mb, mb_x, mb_y, is_vp7);
2450 inter_predict(s, td, dst, mb, mb_x, mb_y);
2452 prefetch_motion(s, mb, mb_x, mb_y, mb_xy, VP56_FRAME_GOLDEN);
2454 if (!mb->skip) {
2455 idct_mb(s, td, dst, mb);
2461 * if the mb had coefficients */
2462 if (mb->mode != MODE_I4x4 && mb->mode != VP8_MVMODE_SPLIT) {
2469 filter_level_for_mb(s, mb, &td->filter_strength[mb_x], is_vp7);
2480 prefetch_motion(s, mb, mb_x, mb_y, mb_xy, VP56_FRAME_GOLDEN2);
2516 VP8Macroblock *mb;
2525 mb = s->macroblocks_base + ((s->mb_width + 1) * (mb_y + 1) + 1);
2527 mb = s->macroblocks + (s->mb_height - mb_y - 1) * 2;
2538 for (mb_x = 0; mb_x < s->mb_width; mb_x++, mb++) {