X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Frfxswf.c;h=b986c838610c8c691aac62f769ba473099a9be50;hb=14bda0e9c2ceecb14bce0710a92e033e5727a94b;hp=28c665d342cfa231f50b0d57b8e8e03eaa5d3044;hpb=ebb24001da96131b6d05134dc2683c03337a7917;p=swftools.git diff --git a/lib/rfxswf.c b/lib/rfxswf.c index 28c665d..b986c83 100644 --- a/lib/rfxswf.c +++ b/lib/rfxswf.c @@ -224,10 +224,10 @@ S32 swf_GetSBits(TAG * t,int nbits) return (S32)res; } -U32 reader_GetBits(struct reader_t*reader, int nbits) +U32 reader_GetBits(reader_t*reader, int nbits) { return reader_readbits(reader, nbits); } -S32 reader_GetSBits(struct reader_t*reader, int nbits) +S32 reader_GetSBits(reader_t*reader, int nbits) { U32 res = reader_readbits(reader, nbits); if (res&(1<<(nbits-1))) res|=(0xffffffff< no output { U16 raw[3]; @@ -934,7 +934,7 @@ int swf_WriteTag2(struct writer_t*writer, TAG * t) int swf_WriteTag(int handle, TAG * t) { - struct writer_t writer; + writer_t writer; int len = 0; if(handle<0) return swf_WriteTag2(0, t); @@ -1173,7 +1173,7 @@ void swf_OptimizeTagOrder(SWF*swf) // Movie Functions -int swf_ReadSWF2(struct reader_t*reader, SWF * swf) // Reads SWF to memory (malloc'ed), returns length or <0 if fails +int swf_ReadSWF2(reader_t*reader, SWF * swf) // Reads SWF to memory (malloc'ed), returns length or <0 if fails { if (!swf) return -1; memset(swf,0x00,sizeof(SWF)); @@ -1182,7 +1182,7 @@ int swf_ReadSWF2(struct reader_t*reader, SWF * swf) // Reads SWF to memory (ma int len; TAG * t; TAG t1; - struct reader_t zreader; + reader_t zreader; if ((len = reader->read(reader ,b,8))<8) return -1; @@ -1216,16 +1216,16 @@ int swf_ReadSWF2(struct reader_t*reader, SWF * swf) // Reads SWF to memory (ma int swf_ReadSWF(int handle, SWF * swf) { - struct reader_t reader; + reader_t reader; reader_init_filereader(&reader, handle); return swf_ReadSWF2(&reader, swf); } -int swf_WriteSWF2(struct writer_t*writer, SWF * swf) // Writes SWF to file, returns length or <0 if fails +int swf_WriteSWF2(writer_t*writer, SWF * swf) // Writes SWF to file, returns length or <0 if fails { U32 len; TAG * t; int frameCount=0; - struct writer_t zwriter; + writer_t zwriter; int fileSize = 0; int inSprite = 0; int writer_lastpos = 0; @@ -1236,6 +1236,15 @@ int swf_WriteSWF2(struct writer_t*writer, SWF * swf) // Writes SWF to file, if(writer) writer_lastpos = writer->pos; + if(swf->fileVersion >= 8) { + if ((swf->firstTag && swf->firstTag->id != ST_FILEATTRIBUTES) && + (!swf->firstTag->next || swf->firstTag->next->id != ST_FILEATTRIBUTES)) + { + U32 flags = 0; // | 128 = usenetwork, | 8 = hasmetadata + swf_SetU32(swf_InsertTagBefore(swf, swf->firstTag,ST_FILEATTRIBUTES),flags); + } + } + // Insert REFLEX Tag #ifdef INSERT_RFX_TAG @@ -1355,7 +1364,7 @@ int swf_WriteSWF2(struct writer_t*writer, SWF * swf) // Writes SWF to file, int swf_WriteSWF(int handle, SWF * swf) // Writes SWF to file, returns length or <0 if fails { - struct writer_t writer; + writer_t writer; int len = 0; swf->compressed = 0; @@ -1372,7 +1381,7 @@ int swf_WriteSWF(int handle, SWF * swf) // Writes SWF to file, returns leng int swf_WriteSWC(int handle, SWF * swf) // Writes SWF to file, returns length or <0 if fails { - struct writer_t writer; + writer_t writer; int len = 0; swf->compressed = 1; @@ -1386,7 +1395,7 @@ int swf_WriteSWC(int handle, SWF * swf) // Writes SWF to file, returns leng return len; } -int swf_WriteHeader2(struct writer_t*writer,SWF * swf) +int swf_WriteHeader2(writer_t*writer,SWF * swf) { SWF myswf; memcpy(&myswf,swf,sizeof(SWF));