comparison motion_est.c @ 651:45e8f39fda50 libavcodec

put/avg_pixels16 fixing 2 small qpel bugs
author michaelni
date Wed, 11 Sep 2002 12:39:53 +0000
parents a5aa53b6e648
children 00a882f626bd
comparison
equal deleted inserted replaced
650:ef4a33aad86e 651:45e8f39fda50
1335 dxy = ((motion_fy & 1) << 1) | (motion_fx & 1); 1335 dxy = ((motion_fy & 1) << 1) | (motion_fx & 1);
1336 src_x = mb_x * 16 + (motion_fx >> 1); 1336 src_x = mb_x * 16 + (motion_fx >> 1);
1337 src_y = mb_y * 16 + (motion_fy >> 1); 1337 src_y = mb_y * 16 + (motion_fy >> 1);
1338 1338
1339 ptr = s->last_picture[0] + (src_y * s->linesize) + src_x; 1339 ptr = s->last_picture[0] + (src_y * s->linesize) + src_x;
1340 put_pixels_tab[dxy](dest_y , ptr , s->linesize, 16); 1340 put_pixels_tab[0][dxy](dest_y , ptr , s->linesize, 16);
1341 put_pixels_tab[dxy](dest_y + 8, ptr + 8, s->linesize, 16);
1342 1341
1343 fbmin += (mv_penalty[motion_bx-pred_bx] + mv_penalty[motion_by-pred_by])*s->qscale; 1342 fbmin += (mv_penalty[motion_bx-pred_bx] + mv_penalty[motion_by-pred_by])*s->qscale;
1344 1343
1345 dxy = ((motion_by & 1) << 1) | (motion_bx & 1); 1344 dxy = ((motion_by & 1) << 1) | (motion_bx & 1);
1346 src_x = mb_x * 16 + (motion_bx >> 1); 1345 src_x = mb_x * 16 + (motion_bx >> 1);
1347 src_y = mb_y * 16 + (motion_by >> 1); 1346 src_y = mb_y * 16 + (motion_by >> 1);
1348 1347
1349 ptr = s->next_picture[0] + (src_y * s->linesize) + src_x; 1348 ptr = s->next_picture[0] + (src_y * s->linesize) + src_x;
1350 avg_pixels_tab[dxy](dest_y , ptr , s->linesize, 16); 1349 avg_pixels_tab[0][dxy](dest_y , ptr , s->linesize, 16);
1351 avg_pixels_tab[dxy](dest_y + 8, ptr + 8, s->linesize, 16);
1352 1350
1353 fbmin += pix_abs16x16(s->new_picture[0] + mb_x*16 + mb_y*16*s->linesize, dest_y, s->linesize); 1351 fbmin += pix_abs16x16(s->new_picture[0] + mb_x*16 + mb_y*16*s->linesize, dest_y, s->linesize);
1354 return fbmin; 1352 return fbmin;
1355 } 1353 }
1356 1354
1431 if (src_x == width) dxy &= ~1; 1429 if (src_x == width) dxy &= ~1;
1432 src_y = clip(src_y, -16, height); 1430 src_y = clip(src_y, -16, height);
1433 if (src_y == height) dxy &= ~2; 1431 if (src_y == height) dxy &= ~2;
1434 1432
1435 ptr = s->last_picture[0] + (src_y * s->linesize) + src_x; 1433 ptr = s->last_picture[0] + (src_y * s->linesize) + src_x;
1436 put_pixels_tab[dxy](dest_y , ptr , s->linesize, 16); 1434 put_pixels_tab[0][dxy](dest_y , ptr , s->linesize, 16);
1437 put_pixels_tab[dxy](dest_y + 8, ptr + 8, s->linesize, 16);
1438 1435
1439 dxy = ((motion_by & 1) << 1) | (motion_bx & 1); 1436 dxy = ((motion_by & 1) << 1) | (motion_bx & 1);
1440 src_x = (mb_x + bx) * 16 + (motion_bx >> 1); 1437 src_x = (mb_x + bx) * 16 + (motion_bx >> 1);
1441 src_y = (mb_y + by) * 16 + (motion_by >> 1); 1438 src_y = (mb_y + by) * 16 + (motion_by >> 1);
1442 src_x = clip(src_x, -16, width); 1439 src_x = clip(src_x, -16, width);
1443 if (src_x == width) dxy &= ~1; 1440 if (src_x == width) dxy &= ~1;
1444 src_y = clip(src_y, -16, height); 1441 src_y = clip(src_y, -16, height);
1445 if (src_y == height) dxy &= ~2; 1442 if (src_y == height) dxy &= ~2;
1446 1443
1447 avg_pixels_tab[dxy](dest_y , ptr , s->linesize, 16); 1444 avg_pixels_tab[0][dxy](dest_y , ptr , s->linesize, 16);
1448 avg_pixels_tab[dxy](dest_y + 8, ptr + 8, s->linesize, 16);
1449 } 1445 }
1450 } 1446 }
1451 1447
1452 P_LAST[0] = mv_table[mot_xy ][0]; 1448 P_LAST[0] = mv_table[mot_xy ][0];
1453 P_LAST[1] = mv_table[mot_xy ][1]; 1449 P_LAST[1] = mv_table[mot_xy ][1];