Mercurial > libavcodec.hg
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]; |