mirror of https://git.ffmpeg.org/ffmpeg.git
cliping MVs, i dunno if its correct but it looks better then without it
Originally committed as revision 1543 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
6fa5a56c1b
commit
b739d6762f
|
@ -836,6 +836,18 @@ static int svq1_motion_inter_block (MpegEncContext *s, bit_buffer_t *bitbuf,
|
||||||
motion[(x / 8) + 2].y =
|
motion[(x / 8) + 2].y =
|
||||||
motion[(x / 8) + 3].y = mv.y;
|
motion[(x / 8) + 3].y = mv.y;
|
||||||
|
|
||||||
|
if(y + (mv.y >> 1)<0)
|
||||||
|
mv.y= 0;
|
||||||
|
if(x + (mv.x >> 1)<0)
|
||||||
|
mv.x= 0;
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
int w= (s->width+15)&~15;
|
||||||
|
int h= (s->height+15)&~15;
|
||||||
|
if(x + (mv.x >> 1)<0 || y + (mv.y >> 1)<0 || x + (mv.x >> 1) + 16 > w || y + (mv.y >> 1) + 16> h)
|
||||||
|
printf("%d %d %d %d\n", x, y, x + (mv.x >> 1), y + (mv.y >> 1));
|
||||||
|
#endif
|
||||||
|
|
||||||
src = &previous[(x + (mv.x >> 1)) + (y + (mv.y >> 1))*pitch];
|
src = &previous[(x + (mv.x >> 1)) + (y + (mv.y >> 1))*pitch];
|
||||||
dst = current;
|
dst = current;
|
||||||
|
|
||||||
|
@ -903,18 +915,31 @@ static int svq1_motion_inter_4v_block (MpegEncContext *s, bit_buffer_t *bitbuf,
|
||||||
|
|
||||||
/* form predictions */
|
/* form predictions */
|
||||||
for (i=0; i < 4; i++) {
|
for (i=0; i < 4; i++) {
|
||||||
src = &previous[(x + (pmv[i]->x >> 1)) + (y + (pmv[i]->y >> 1))*pitch];
|
int mvx= pmv[i]->x + (i&1)*16;
|
||||||
|
int mvy= pmv[i]->y + (i>>1)*16;
|
||||||
|
|
||||||
|
///XXX /FIXME cliping or padding?
|
||||||
|
if(y + (mvy >> 1)<0)
|
||||||
|
mvy= 0;
|
||||||
|
if(x + (mvx >> 1)<0)
|
||||||
|
mvx= 0;
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
int w= (s->width+15)&~15;
|
||||||
|
int h= (s->height+15)&~15;
|
||||||
|
if(x + (mvx >> 1)<0 || y + (mvy >> 1)<0 || x + (mvx >> 1) + 8 > w || y + (mvy >> 1) + 8> h)
|
||||||
|
printf("%d %d %d %d\n", x, y, x + (mvx >> 1), y + (mvy >> 1));
|
||||||
|
#endif
|
||||||
|
src = &previous[(x + (mvx >> 1)) + (y + (mvy >> 1))*pitch];
|
||||||
dst = current;
|
dst = current;
|
||||||
|
|
||||||
s->dsp.put_pixels_tab[1][((pmv[i]->y & 1) << 1) | (pmv[i]->x & 1)](dst,src,pitch,8);
|
s->dsp.put_pixels_tab[1][((mvy & 1) << 1) | (mvx & 1)](dst,src,pitch,8);
|
||||||
|
|
||||||
/* select next block */
|
/* select next block */
|
||||||
if (i & 1) {
|
if (i & 1) {
|
||||||
current += 8*(pitch - 1);
|
current += 8*(pitch - 1);
|
||||||
previous += 8*(pitch - 1);
|
|
||||||
} else {
|
} else {
|
||||||
current += 8;
|
current += 8;
|
||||||
previous += 8;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue