31 |
ddx = dx / 2; |
ddx = dx / 2; |
32 |
ddy = dy / 2; |
ddy = dy / 2; |
33 |
transfer_8to16sub(dct_codes, cur + y * stride + x, |
transfer_8to16sub(dct_codes, cur + y * stride + x, |
34 |
ref + (y + ddy) * stride + x + ddx, stride); |
ref + (int) ((y + ddy) * stride + x + ddx), stride); |
35 |
break; |
break; |
36 |
|
|
37 |
case 1: |
case 1: |
38 |
ddx = dx / 2; |
ddx = dx / 2; |
39 |
ddy = (dy - 1) / 2; |
ddy = (dy - 1) / 2; |
40 |
transfer_8to16sub(dct_codes, cur + y * stride + x, |
transfer_8to16sub(dct_codes, cur + y * stride + x, |
41 |
refv + (y + ddy) * stride + x + ddx, stride); |
refv + (int) ((y + ddy) * stride + x + ddx), stride); |
42 |
break; |
break; |
43 |
|
|
44 |
case 2: |
case 2: |
45 |
ddx = (dx - 1) / 2; |
ddx = (dx - 1) / 2; |
46 |
ddy = dy / 2; |
ddy = dy / 2; |
47 |
transfer_8to16sub(dct_codes, cur + y * stride + x, |
transfer_8to16sub(dct_codes, cur + y * stride + x, |
48 |
refh + (y + ddy) * stride + x + ddx, stride); |
refh + (int) ((y + ddy) * stride + x + ddx), stride); |
49 |
break; |
break; |
50 |
|
|
51 |
default: // case 3: |
default: // case 3: |
52 |
ddx = (dx - 1) / 2; |
ddx = (dx - 1) / 2; |
53 |
ddy = (dy - 1) / 2; |
ddy = (dy - 1) / 2; |
54 |
transfer_8to16sub(dct_codes, cur + y * stride + x, |
transfer_8to16sub(dct_codes, cur + y * stride + x, |
55 |
refhv + (y + ddy) * stride + x + ddx, stride); |
refhv + (int) ((y + ddy) * stride + x + ddx), stride); |
56 |
break; |
break; |
57 |
} |
} |
58 |
} |
} |
99 |
dy = (dy & 3) ? (dy >> 1) | 1 : dy / 2; |
dy = (dy & 3) ? (dy >> 1) | 1 : dy / 2; |
100 |
|
|
101 |
/* uv-image-based compensation */ |
/* uv-image-based compensation */ |
102 |
#ifdef BFRAMES |
#ifdef BUGGY_BFRAMES |
103 |
|
/* was #ifdef BFRAMES, but that's not possible because non-halfpel is _allowed_ |
104 |
|
if max_bframes<=0 . We should better check for XVID_HALFPEL flag */ |
105 |
|
|
106 |
compensate8x8_halfpel(&dct_codes[4 * 64], cur->u, ref->u, refh->u, |
compensate8x8_halfpel(&dct_codes[4 * 64], cur->u, ref->u, refh->u, |
107 |
refv->u, refhv->u, 8 * i, 8 * j, dx, dy, |
refv->u, refhv->u, 8 * i, 8 * j, dx, dy, |
108 |
edged_width / 2); |
edged_width / 2); |
110 |
refv->v, refhv->v, 8 * i, 8 * j, dx, dy, |
refv->v, refhv->v, 8 * i, 8 * j, dx, dy, |
111 |
edged_width / 2); |
edged_width / 2); |
112 |
#else |
#else |
113 |
|
|
114 |
|
|
115 |
/* uv-block-based compensation */ |
/* uv-block-based compensation */ |
116 |
interpolate8x8_switch(refv->u, ref->u, 8 * i, 8 * j, dx, dy, |
interpolate8x8_switch(refv->u, ref->u, 8 * i, 8 * j, dx, dy, |
117 |
edged_width / 2, rounding); |
edged_width / 2, rounding); |