| 80 | } |
| 81 | |
| 82 | static inline void comp_block(MadContext *t, int mb_x, int mb_y, |
| 83 | int j, int mv_x, int mv_y, int add) |
| 84 | { |
| 85 | MpegEncContext *s = &t->s; |
| 86 | if (j < 4) { |
| 87 | comp(t->frame.data[0] + (mb_y*16 + ((j&2)<<2))*t->frame.linesize[0] + mb_x*16 + ((j&1)<<3), |
| 88 | t->frame.linesize[0], |
| 89 | t->last_frame.data[0] + (mb_y*16 + ((j&2)<<2) + mv_y)*t->last_frame.linesize[0] + mb_x*16 + ((j&1)<<3) + mv_x, |
| 90 | t->last_frame.linesize[0], add); |
| 91 | } else if (!(s->avctx->flags & CODEC_FLAG_GRAY)) { |
| 92 | int index = j - 3; |
| 93 | comp(t->frame.data[index] + (mb_y*8)*t->frame.linesize[index] + mb_x * 8, |
| 94 | t->frame.linesize[index], |
| 95 | t->last_frame.data[index] + (mb_y * 8 + (mv_y/2))*t->last_frame.linesize[index] + mb_x * 8 + (mv_x/2), |
| 96 | t->last_frame.linesize[index], add); |
| 97 | } |
| 98 | } |
| 99 | |
| 100 | static inline void idct_put(MadContext *t, DCTELEM *block, int mb_x, int mb_y, int j) |
| 101 | { |