[svn] / branches / dev-api-3 / xvidcore / src / motion / motion_comp.c Repository:
ViewVC logotype

Diff of /branches/dev-api-3/xvidcore/src/motion/motion_comp.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 705, Wed Dec 11 10:47:43 2002 UTC revision 706, Wed Dec 11 11:03:37 2002 UTC
# Line 214  Line 214 
214                  dx = (dx >> 1) + roundtab_79[dx & 0x3];                  dx = (dx >> 1) + roundtab_79[dx & 0x3];
215                  dy = (dy >> 1) + roundtab_79[dy & 0x3];                  dy = (dy >> 1) + roundtab_79[dy & 0x3];
216    
217                  /* uv-block-based compensation                  /* uv-block-based compensation */
                         XXX: rrv doesnt work with 16x16 block-based intepolation.  
                         we need to use 18x18-block interpolation */  
218                  if (reduced_resolution)                  if (reduced_resolution)
219                  {                  {
220                          const stride = edged_width/2;                          const stride = edged_width/2;
# Line 224  Line 222 
222    
223                          current = cur->u + 16*j*stride + 16*i;                          current = cur->u + 16*j*stride + 16*i;
224                          reference = refv->u + 16*j*stride + 16*i;                          reference = refv->u + 16*j*stride + 16*i;
                         //interpolate16x16_switch(refv->u, ref->u, 16*i, 16*j, dx, dy, stride, rounding);  
225                          interpolate18x18_switch(refv->u, ref->u, 16*i, 16*j, dx, dy, stride, rounding);                          interpolate18x18_switch(refv->u, ref->u, 16*i, 16*j, dx, dy, stride, rounding);
226                          filter_18x18_to_8x8(dct_codes + 4*64, current, stride);                          filter_18x18_to_8x8(dct_codes + 4*64, current, stride);
227                          filter_diff_18x18_to_8x8(dct_codes + 4*64, reference, stride);                          filter_diff_18x18_to_8x8(dct_codes + 4*64, reference, stride);
# Line 232  Line 229 
229    
230                          current = cur->v + 16*j*stride + 16*i;                          current = cur->v + 16*j*stride + 16*i;
231                          reference = refv->v + 16*j*stride + 16*i;                          reference = refv->v + 16*j*stride + 16*i;
                         //interpolate16x16_switch(refv->v, ref->v, 16*i, 16*j, dx, dy, stride, rounding);  
232                          interpolate18x18_switch(refv->v, ref->v, 16*i, 16*j, dx, dy, stride, rounding);                          interpolate18x18_switch(refv->v, ref->v, 16*i, 16*j, dx, dy, stride, rounding);
233                          filter_18x18_to_8x8(dct_codes + 5*64, current, stride);                          filter_18x18_to_8x8(dct_codes + 5*64, current, stride);
234                          filter_diff_18x18_to_8x8(dct_codes + 5*64, reference, stride);                          filter_diff_18x18_to_8x8(dct_codes + 5*64, reference, stride);
# Line 252  Line 248 
248                  }                  }
249    
250          } else {                                        // mode == MODE_INTER4V          } else {                                        // mode == MODE_INTER4V
251                  int i;                  int k;
252                  int32_t sum, dx, dy;                  int32_t sum, dx, dy;
253                  VECTOR mvs[4];                  VECTOR mvs[4];
254    
255                  if(quarterpel)                  if(quarterpel)
256                          for (i = 0; i < 4; i++) mvs[i] = mb->qmvs[i];                          for (k = 0; k < 4; k++) mvs[k] = mb->qmvs[k];
257                  else                  else
258                          for (i = 0; i < 4; i++) mvs[i] = mb->mvs[i];                          for (k = 0; k < 4; k++) mvs[k] = mb->mvs[k];
259    
260                  if (reduced_resolution)                  if (reduced_resolution)
261                  {                  {
262                          for (i = 0; i < 4; i++)                          for (k = 0; k < 4; k++)
263                          {                          {
264                                  mvs[i].x = RRV_MV_SCALEUP(mvs[i].x);                                  mvs[k].x = RRV_MV_SCALEUP(mvs[k].x);
265                                  mvs[i].y = RRV_MV_SCALEUP(mvs[i].y);                                  mvs[k].y = RRV_MV_SCALEUP(mvs[k].y);
266                          }                          }
267                  }                  }
268    
# Line 298  Line 294 
294                  dy = (sum >> 3) + roundtab_76[sum & 0xf];                  dy = (sum >> 3) + roundtab_76[sum & 0xf];
295    
296    
297                  /* uv-block-based compensation                  /* uv-block-based compensation */
                         XXX: rrv doesnt work with 16x16 block-based intepolation.  
                         we need to use 18x18-block interpolation */  
298                  if (reduced_resolution)                  if (reduced_resolution)
299                  {                  {
300                          const stride = edged_width/2;                          const stride = edged_width/2;
# Line 308  Line 302 
302    
303                          current = cur->u + 16*j*stride + 16*i;                          current = cur->u + 16*j*stride + 16*i;
304                          reference = refv->u + 16*j*stride + 16*i;                          reference = refv->u + 16*j*stride + 16*i;
305                          interpolate16x16_switch(refv->u, ref->u, 16*i, 16*j, dx, dy, stride, rounding);                          interpolate18x18_switch(refv->u, ref->u, 16*i, 16*j, dx, dy, stride, rounding);
306                          filter_18x18_to_8x8(dct_codes + 4*64, current, stride);                          filter_18x18_to_8x8(dct_codes + 4*64, current, stride);
307                          filter_diff_18x18_to_8x8(dct_codes + 4*64, reference, stride);                          filter_diff_18x18_to_8x8(dct_codes + 4*64, reference, stride);
308                          transfer16x16_copy(current, reference, stride);                          transfer16x16_copy(current, reference, stride);
309    
310                          current = cur->v + 16*j*stride + 16*i;                          current = cur->v + 16*j*stride + 16*i;
311                          reference = refv->v + 16*j*stride + 16*i;                          reference = refv->v + 16*j*stride + 16*i;
312                          interpolate16x16_switch(refv->v, ref->v, 16*i, 16*j, dx, dy, stride, rounding);                          interpolate18x18_switch(refv->v, ref->v, 16*i, 16*j, dx, dy, stride, rounding);
313                          filter_18x18_to_8x8(dct_codes + 5*64, current, stride);                          filter_18x18_to_8x8(dct_codes + 5*64, current, stride);
314                          filter_diff_18x18_to_8x8(dct_codes + 5*64, reference, stride);                          filter_diff_18x18_to_8x8(dct_codes + 5*64, reference, stride);
315                          transfer16x16_copy(current, reference, stride);                          transfer16x16_copy(current, reference, stride);

Legend:
Removed from v.705  
changed lines
  Added in v.706

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4