@@ -8,8 +8,7 @@ size_t Swf::Leanify(size_t size_leanified /*= 0*/)
88{
99 if (!is_recompress && *fp != ' F' )
1010 {
11- Move (size_leanified);
12- return size;
11+ return Move (size_leanified);
1312 }
1413
1514 unsigned char *in_buffer = (unsigned char *)fp + 8 ;
@@ -29,8 +28,7 @@ size_t Swf::Leanify(size_t size_leanified /*= 0*/)
2928 {
3029 std::cout << " SWF file corrupted!" << std::endl;
3130 mz_free (in_buffer);
32- Move (size_leanified);
33- return size;
31+ return Move (size_leanified);
3432 }
3533 }
3634 else if (*fp == ' Z' )
@@ -50,8 +48,7 @@ size_t Swf::Leanify(size_t size_leanified /*= 0*/)
5048 {
5149 std::cout << " SWF file corrupted!" << std::endl;
5250 delete[] dst_buffer;
53- Move (size_leanified);
54- return size;
51+ return Move (size_leanified);
5552 }
5653 in_buffer = dst_buffer;
5754 }
@@ -60,6 +57,7 @@ size_t Swf::Leanify(size_t size_leanified /*= 0*/)
6057 std::cout << " SWF is not compressed." << std::endl;
6158 }
6259
60+ // parsing SWF tags
6361 unsigned char *p = in_buffer + 13 ; // skip FrameSize(9B) + FrameRate(2B) + FrameCount(2B) = 13B
6462 size_t tag_size_leanified = 0 ;
6563 do
@@ -87,6 +85,10 @@ size_t Swf::Leanify(size_t size_leanified /*= 0*/)
8785 {
8886 // move header
8987 size_t header_size = 7 + (p[3 ] == 3 );
88+ if (is_verbose)
89+ {
90+ std::cout << " DefineBitsLossless tag found." << std::endl;
91+ }
9092 if (tag_size_leanified)
9193 {
9294 memmove (p - tag_size_leanified, p, header_size);
@@ -101,6 +103,10 @@ size_t Swf::Leanify(size_t size_leanified /*= 0*/)
101103 }
102104 case 21 : // DefineBitsJPEG2
103105 {
106+ if (is_verbose)
107+ {
108+ std::cout << " DefineBitsJPEG2 tag found." << std::endl;
109+ }
104110 // copy id
105111 *(uint16_t *)(p - tag_size_leanified) = *(uint16_t *)p;
106112
@@ -121,6 +127,10 @@ size_t Swf::Leanify(size_t size_leanified /*= 0*/)
121127 uint32_t img_size = *(uint32_t *)(p + 2 );
122128 size_t header_size = tag_type == 90 ? 8 : 6 ;
123129
130+ if (is_verbose)
131+ {
132+ std::cout << " DefineBitsJPEG" << header_size / 2 << " tag found." << std::endl;
133+ }
124134 // Leanify embedded image
125135 size_t new_img_size = LeanifyFile (p + header_size, img_size, tag_size_leanified);
126136 *(uint32_t *)(p + 2 - tag_size_leanified) = new_img_size;
@@ -138,6 +148,10 @@ size_t Swf::Leanify(size_t size_leanified /*= 0*/)
138148 *p &= ~(1 << 4 ); // set HasMetadata bit to 0
139149 break ;
140150 case 77 : // Metadata
151+ if (is_verbose)
152+ {
153+ std::cout << " Metadata removed." << std::endl;
154+ }
141155 tag_size_leanified += tag_length + tag_header_length;
142156 p += tag_length;
143157 continue ;
@@ -167,7 +181,7 @@ size_t Swf::Leanify(size_t size_leanified /*= 0*/)
167181 return size;
168182 }
169183
170- // recompress
184+ // compress with LZMA
171185 size_t s = in_len, props = LZMA_PROPS_SIZE;
172186 unsigned char *dst = new unsigned char [in_len + LZMA_PROPS_SIZE];
173187 // have to set writeEndMark to true
@@ -221,44 +235,17 @@ size_t Swf::Leanify(size_t size_leanified /*= 0*/)
221235 return size;
222236}
223237
224- void Swf::Move (size_t size_leanified)
238+ size_t Swf::Move (size_t size_leanified)
225239{
226240 if (size_leanified)
227241 {
228242 fp -= size_leanified;
229243 memmove (fp, fp + size_leanified, size);
230244 }
245+ return size;
231246}
232247
233- size_t Swf::ZlibRecompress (unsigned char *src, size_t src_len, size_t size_leanified)
234- {
235- size_t new_size = 0 ;
236- if (is_recompress)
237- {
238- size_t s = 0 ;
239- unsigned char *buffer = (unsigned char *)tinfl_decompress_mem_to_heap (src, src_len, &s, TINFL_FLAG_PARSE_ZLIB_HEADER);
240248
241- unsigned char *out_buffer = NULL ;
242- ZopfliZlibCompress (&zopfli_options, buffer, s, &out_buffer, &new_size);
243- mz_free (buffer);
244- if (new_size < src_len)
245- {
246- memcpy (src - size_leanified, out_buffer, new_size);
247- }
248- else
249- {
250- new_size = src_len;
251- memmove (src - size_leanified, src, src_len);
252- }
253- delete[] out_buffer;
254- }
255- else
256- {
257- new_size = src_len;
258- memmove (src - size_leanified, src, src_len);
259- }
260- return new_size;
261- }
262249
263250void Swf::UpdateTagLength (unsigned char *tag_content, size_t header_length, size_t new_length)
264251{
0 commit comments