Mercurial > libavcodec.hg
comparison vp8.c @ 12369:4787027b74b1 libavcodec
VP8: fix bug in prefetch
Motion vectors in VP8 are qpel, not fullpel.
author | darkshikari |
---|---|
date | Thu, 05 Aug 2010 20:03:54 +0000 |
parents | 7c54834209f6 |
children | 914f484bb476 |
comparison
equal
deleted
inserted
replaced
12368:ba14e3adeccd | 12369:4787027b74b1 |
---|---|
1153 static av_always_inline void prefetch_motion(VP8Context *s, VP8Macroblock *mb, int mb_x, int mb_y, int mb_xy, int ref) | 1153 static av_always_inline void prefetch_motion(VP8Context *s, VP8Macroblock *mb, int mb_x, int mb_y, int mb_xy, int ref) |
1154 { | 1154 { |
1155 /* Don't prefetch refs that haven't been used very often this frame. */ | 1155 /* Don't prefetch refs that haven't been used very often this frame. */ |
1156 if (s->ref_count[ref-1] > (mb_xy >> 5)) { | 1156 if (s->ref_count[ref-1] > (mb_xy >> 5)) { |
1157 int x_off = mb_x << 4, y_off = mb_y << 4; | 1157 int x_off = mb_x << 4, y_off = mb_y << 4; |
1158 int mx = mb->mv.x + x_off + 8; | 1158 int mx = (mb->mv.x>>2) + x_off + 8; |
1159 int my = mb->mv.y + y_off; | 1159 int my = (mb->mv.y>>2) + y_off; |
1160 uint8_t **src= s->framep[ref]->data; | 1160 uint8_t **src= s->framep[ref]->data; |
1161 int off= mx + (my + (mb_x&3)*4)*s->linesize + 64; | 1161 int off= mx + (my + (mb_x&3)*4)*s->linesize + 64; |
1162 s->dsp.prefetch(src[0]+off, s->linesize, 4); | 1162 s->dsp.prefetch(src[0]+off, s->linesize, 4); |
1163 off= (mx>>1) + ((my>>1) + (mb_x&7))*s->uvlinesize + 64; | 1163 off= (mx>>1) + ((my>>1) + (mb_x&7))*s->uvlinesize + 64; |
1164 s->dsp.prefetch(src[1]+off, src[2]-src[1], 2); | 1164 s->dsp.prefetch(src[1]+off, src[2]-src[1], 2); |