Lines Matching refs:mb_y
1003 static int vp7_calculate_mb_offset(int mb_x, int mb_y, int mb_width,
1008 int new = (mb_y + yoffset) * vwidth + mb_x + xoffset;
1023 int mb_x, int mb_y, int layout)
1042 if (vp7_calculate_mb_offset(mb_x, mb_y, s->mb_width, pred->xoffset,
1114 int mb_x, int mb_y, int layout)
1249 VP8Macroblock *mb, int mb_x, int mb_y,
1311 vp7_decode_mvs(s, mb, mb_x, mb_y, layout);
1313 vp8_decode_mvs(s, mv_bounds, mb, mb_x, mb_y, layout);
1563 int mb_y, int mb_width, int simple, int xchg)
1586 if (!simple || !mb_y) {
1595 int check_dc_pred8x8_mode(int mode, int mb_x, int mb_y)
1598 return mb_y ? TOP_DC_PRED8x8 : DC_128_PRED8x8;
1600 return mb_y ? mode : LEFT_DC_PRED8x8;
1604 int check_tm_pred8x8_mode(int mode, int mb_x, int mb_y, int vp7)
1607 return mb_y ? VERT_PRED8x8 : (vp7 ? DC_128_PRED8x8 : DC_129_PRED8x8);
1609 return mb_y ? mode : HOR_PRED8x8;
1613 int check_intra_pred8x8_mode_emuedge(int mode, int mb_x, int mb_y, int vp7)
1617 return check_dc_pred8x8_mode(mode, mb_x, mb_y);
1619 return !mb_y ? (vp7 ? DC_128_PRED8x8 : DC_127_PRED8x8) : mode;
1623 return check_tm_pred8x8_mode(mode, mb_x, mb_y, vp7);
1629 int check_tm_pred4x4_mode(int mode, int mb_x, int mb_y, int vp7)
1632 return mb_y ? VERT_VP8_PRED : (vp7 ? DC_128_PRED : DC_129_PRED);
1634 return mb_y ? mode : HOR_VP8_PRED;
1639 int check_intra_pred4x4_mode_emuedge(int mode, int mb_x, int mb_y,
1644 if (!mb_x && mb_y) {
1651 return !mb_y ? (vp7 ? DC_128_PRED : DC_127_PRED) : mode;
1653 if (!mb_y) {
1661 return check_tm_pred4x4_mode(mode, mb_x, mb_y, vp7);
1667 if (!mb_y || !mb_x)
1676 VP8Macroblock *mb, int mb_x, int mb_y, int is_vp7)
1683 if (mb_y && (s->deblock_filter || !mb_y) && td->thread_nr == 0)
1685 s->linesize, s->uvlinesize, mb_x, mb_y, s->mb_width,
1689 mode = check_intra_pred8x8_mode_emuedge(mb->mode, mb_x, mb_y, is_vp7);
1704 if (mb_y && mb_x == s->mb_width - 1) {
1720 if ((y == 0 || x == 3) && mb_y == 0) {
1726 mb_y + y, ©, is_vp7);
1730 if (!(mb_y + y)) {
1779 mb_x, mb_y, is_vp7);
1783 if (mb_y && (s->deblock_filter || !mb_y) && td->thread_nr == 0)
1785 s->linesize, s->uvlinesize, mb_x, mb_y, s->mb_width,
1959 void prefetch_motion(VP8Context *s, VP8Macroblock *mb, int mb_x, int mb_y,
1964 int x_off = mb_x << 4, y_off = mb_y << 4;
1983 VP8Macroblock *mb, int mb_x, int mb_y)
1985 int x_off = mb_x << 4, y_off = mb_y << 4;
2162 int mb_x, int mb_y, int is_vp7)
2221 if (mb_y) {
2249 int mb_x, int mb_y)
2271 if (mb_y)
2286 int mb_x, mb_y;
2290 for (mb_y = 0; mb_y < s->mb_height; mb_y++) {
2292 ((s->mb_width + 1) * (mb_y + 1) + 1);
2293 int mb_xy = mb_y * s->mb_width;
2304 if (mb_y == 0)
2307 decode_mb_mode(s, &s->mv_bounds, mb, mb_x, mb_y, curframe->seg_map->data + mb_xy,
2348 #define update_pos(td, mb_y, mb_x) \
2350 int pos = (mb_y << 16) | (mb_x & 0xFFFF); \
2366 #define update_pos(td, mb_y, mb_x) while(0)
2374 int mb_y = atomic_load(&td->thread_mb_pos) >> 16;
2375 int mb_x, mb_xy = mb_y * s->mb_width;
2378 VP56RangeCoder *c = &s->coeff_partition[mb_y & (s->num_coeff_partitions - 1)];
2381 curframe->tf.f->data[0] + 16 * mb_y * s->linesize,
2382 curframe->tf.f->data[1] + 8 * mb_y * s->uvlinesize,
2383 curframe->tf.f->data[2] + 8 * mb_y * s->uvlinesize
2389 if (mb_y == 0)
2393 if (mb_y == s->mb_height - 1)
2398 mb = s->macroblocks_base + ((s->mb_width + 1) * (mb_y + 1) + 1);
2404 ff_thread_await_progress(&prev_frame->tf, mb_y, 0);
2405 mb = s->macroblocks + (s->mb_height - mb_y - 1) * 2;
2410 if (!is_vp7 || mb_y == 0)
2419 // Wait for previous thread to read mb_x+2, and reach mb_y-1.
2424 mb_y - (is_vp7 ? 2 : 1));
2428 mb_y - (is_vp7 ? 2 : 1));
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);
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);
2480 prefetch_motion(s, mb, mb_x, mb_y, mb_xy, VP56_FRAME_GOLDEN2);
2489 update_pos(td, mb_y, s->mb_width + 3);
2491 update_pos(td, mb_y, mb_x);
2514 int mb_x, mb_y = atomic_load(&td->thread_mb_pos) >> 16, num_jobs = s->num_jobs;
2519 curframe->data[0] + 16 * mb_y * s->linesize,
2520 curframe->data[1] + 8 * mb_y * s->uvlinesize,
2521 curframe->data[2] + 8 * mb_y * s->uvlinesize
2525 mb = s->macroblocks_base + ((s->mb_width + 1) * (mb_y + 1) + 1);
2527 mb = s->macroblocks + (s->mb_height - mb_y - 1) * 2;
2529 if (mb_y == 0)
2533 if (mb_y == s->mb_height - 1)
2542 (mb_x + 1) + (s->mb_width + 3), mb_y - 1);
2545 check_thread_pos(td, next_td, mb_x + 1, mb_y + 1);
2557 filter_mb_simple(s, dst[0], f, mb_x, mb_y);
2559 filter_mb(s, dst, f, mb_x, mb_y, is_vp7);
2564 update_pos(td, mb_y, (s->mb_width + 3) + mb_x);
2588 int mb_y, num_jobs = s->num_jobs;
2594 for (mb_y = jobnr; mb_y < s->mb_height; mb_y += num_jobs) {
2595 atomic_store(&td->thread_mb_pos, mb_y << 16);
2603 update_pos(td, mb_y, INT_MAX & 0xFFFF);
2609 ff_thread_report_progress(&curframe->tf, mb_y, 0);