X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=inline;f=lib%2Fmodules%2Fswfbits.c;h=70a7729562fdfa3c20f49e891cc4c06a912a556e;hb=aee9de2c6eb23628e54b6896f5b441d9b39317c1;hp=c0c4bb8d73d172eec554ffffbd74e8074b9fde8d;hpb=a2590e760dfe205f937cdb7c652fa3212a8bf32a;p=swftools.git diff --git a/lib/modules/swfbits.c b/lib/modules/swfbits.c index c0c4bb8..70a7729 100644 --- a/lib/modules/swfbits.c +++ b/lib/modules/swfbits.c @@ -7,9 +7,19 @@ Copyright (c) 2000, 2001 Rainer Böhme - This file is distributed under the GPL, see file COPYING for details + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. -*/ + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define OUTBUFFER_SIZE 0x8000 @@ -184,9 +194,8 @@ int swf_SetJPEGBits(TAG * t,char * fname,int quality) int y = js[x*3+0]; int u = js[x*3+1]; int v = js[x*3+1]; - // untested: js[x*3+0] = y + ((360*(v-128))>>8); - js[x*3+1] = y - ((88*(u-128)-183*(v-128))>>8); + js[x*3+1] = y - ((88*(u-128)+183*(v-128))>>8); js[x*3+2] = y + ((455 * (u-128))>>8); } } @@ -419,6 +428,17 @@ int swf_SetLosslessBitsIndexed(TAG * t,U16 width,U16 height,U8 * bitmap,RGBA * p if (!palette) free(pal); + while(t->len < 64) { /* actually, 63 and above is o.k., but let's stay on the safe side */ + + /* Flash players up to MX crash or do strange things if they encounter a + DefineLossless(2) Tag with a payload of less than 63 bytes. They also + substitute the whole bitmap by a red rectangle. + + This loop fills up the tag with zeroes so that this doesn't happen. + */ + swf_SetU8(t, 0); + } + return res; }