X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=lib%2Fh.263%2Fswfvideo.c;h=e8b420dfecd9ac689cdd73df85dd1679abaefdf1;hb=655b9b4e4632624b879940582839c192dc492769;hp=94b3d254d3da8211658226eae960198cb536698f;hpb=6da849f3320df43086c3d3cc01b162ea9c7dc847;p=swftools.git diff --git a/lib/h.263/swfvideo.c b/lib/h.263/swfvideo.c index 94b3d25..e8b420d 100644 --- a/lib/h.263/swfvideo.c +++ b/lib/h.263/swfvideo.c @@ -38,8 +38,9 @@ void swf_SetVideoStreamDefine(TAG*tag, VIDEOSTREAM*stream, U16 frames, U16 width swf_SetU8(tag, 0); /* smoothing off */ swf_SetU8(tag, 2); /* codec = h.263 sorenson spark */ +#ifdef MAIN totalframes = frames; - +#endif memset(stream, 0, sizeof(VIDEOSTREAM)); stream->olinex = width; width+=15;width&=~15; @@ -250,7 +251,10 @@ static void dct2(int*src, int*dest) 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; } } @@ -935,6 +939,9 @@ static void predictmvd(VIDEOSTREAM*s, int bx, int by, int*px, int*py) } else if((x1 <= x3 && x3 <= x2) || (x2 <= x3 && x3 <= x1)) { x4=x3; + } else { + x4=0; + assert(x4); } if((y1 <= y2 && y2 <= y3) || @@ -946,6 +953,9 @@ static void predictmvd(VIDEOSTREAM*s, int bx, int by, int*px, int*py) } else if((y1 <= y3 && y3 <= y2) || (y2 <= y3 && y3 <= y1)) { y4=y3; + } else { + y4=0; + assert(y4); } *px = x4; @@ -1041,8 +1051,8 @@ static int encode_blockP(TAG*tag, VIDEOSTREAM*s, int bx, int by, int*quant) 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;