#endif
memset(stream, 0, sizeof(VIDEOSTREAM));
stream->olinex = width;
+ stream->owidth = width;
+ stream->oheight = height;
width+=15;width&=~15;
height+=15;height&=~15;
stream->linex = width;
innerdct(a,b,cc);
}
for(t=0;t<64;t++) {
- dest[zigzagtable[t]] = (int)(tmp2[t]);
+ int v = (int)(tmp2[t]);
+ if(v>127) v=127;
+ if(v<-127) v=-127;
+ dest[zigzagtable[t]] = v;
}
}
} else if((x1 <= x3 && x3 <= x2) ||
(x2 <= x3 && x3 <= x1)) {
x4=x3;
+ } else {
+ x4=0;
+ assert(x4);
}
if((y1 <= y2 && y2 <= y3) ||
} else if((y1 <= y3 && y3 <= y2) ||
(y2 <= y3 && y3 <= y1)) {
y4=y3;
+ } else {
+ y4=0;
+ assert(y4);
}
*px = x4;
if(s->do_motion) {
int hx,hy;
int bestx=0,besty=0,bestbits=65536;
- int startx=-2,endx=2;
- int starty=-2,endy=2;
+ int startx=-31,endx=32;
+ int starty=-31,endy=32;
if(!bx) startx=0;
if(!by) starty=0;
writeHeader(tag, s->width, s->height, s->frame, quant, TYPE_IFRAME);
- rgb2yuv(s->current, pic, s->linex, s->olinex, s->width, s->height);
+ memset(s->current, 0, s->linex*s->height*sizeof(YUV));
+ rgb2yuv(s->current, pic, s->linex, s->olinex, s->owidth, s->oheight);
//dostat(s);
writeHeader(tag, s->width, s->height, s->frame, quant, TYPE_PFRAME);
- rgb2yuv(s->current, pic, s->linex, s->olinex, s->width, s->height);
+ memset(s->current, 0, s->linex*s->height*sizeof(YUV));
+ rgb2yuv(s->current, pic, s->linex, s->olinex, s->owidth, s->oheight);
memset(s->mvdx, 0, s->bbx*s->bby*sizeof(int));
memset(s->mvdy, 0, s->bbx*s->bby*sizeof(int));