X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Frfxswf.c;h=e7cb0d845ee038bddf78286db33fba628aa73a03;hb=a6f4bf74f964e101e25f0234ebcb3c3dde175df4;hp=cd2e0b6c4f58439f9a8381a3d986499e318fa9e6;hpb=29bd38f41bd1ade654941453d76c029f275edc28;p=swftools.git diff --git a/lib/rfxswf.c b/lib/rfxswf.c index cd2e0b6..e7cb0d8 100644 --- a/lib/rfxswf.c +++ b/lib/rfxswf.c @@ -65,11 +65,6 @@ U32 swf_GetTagLen(TAG * t) { return t->len; } U8* swf_GetTagLenPtr(TAG * t) { return &(t->data[t->len]); } U32 swf_GetTagPos(TAG * t) { return t->pos; } -// Basic Data Access Functions - -#define swf_ResetReadBits(tag) if (tag->readBit) { tag->pos++; tag->readBit = 0; } -#define swf_ResetWriteBits(tag) if (tag->writeBit) { tag->writeBit = 0; } - // for future purpose: avoid high level lib functions to change tagpos/bitpos #define swf_SaveTagPos(tag) @@ -865,7 +860,7 @@ int swf_WriteTag2(struct writer_t*writer, TAG * t) len = (t->id==ST_DEFINESPRITE)?swf_DefineSprite_GetRealSize(t):t->len; - short_tag = len<0x3f; + short_tag = len<0x3f&&(t->id!=ST_DEFINEBITSLOSSLESS&&t->id!=ST_DEFINEBITSLOSSLESS2); if (writer) { if (short_tag) @@ -1042,7 +1037,7 @@ void swf_FoldSprite(TAG * t) do { - if(t->len<0x3f) { + if(t->len<0x3f&&t->id!=ST_DEFINEBITSLOSSLESS&&t->id!=ST_DEFINEBITSLOSSLESS2) { swf_SetU16(sprtag,t->len|(t->id<<6)); } else { swf_SetU16(sprtag,0x3f|(t->id<<6)); @@ -1207,6 +1202,7 @@ int swf_WriteSWF2(struct writer_t*writer, SWF * swf) // Writes SWF to file, int fileSize = 0; int inSprite = 0; int writer_lastpos = 0; + int ret; if (!swf) return -1; if (!writer) return -1; // the caller should provide a nullwriter, not 0, for querying SWF size @@ -1296,7 +1292,7 @@ int swf_WriteSWF2(struct writer_t*writer, SWF * swf) // Writes SWF to file, swf_SetU16(&t1,swf->frameRate); swf_SetU16(&t1,swf->frameCount); - int ret = writer->write(writer,b,swf_GetTagLen(&t1)); + ret = writer->write(writer,b,swf_GetTagLen(&t1)); if (ret!=swf_GetTagLen(&t1)) { #ifdef DEBUG_RFXSWF