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);