Hi everyone,
no success yet with this zlib code below... maybe someone will
understand what is wrong ?
see also
http://groups.google.com/group/ml-devel/browse_frm/thread/9a122f7afb94490b#
/* 550d 109 */
int (*zlib_uncompress)(uint8_t *dest, int *destLen, uint8_t *src, int
srcLen)=(void*)0xFF2D817C;
int (*zlib_compress)(uint8_t *dest, unsigned long *destLen, uint8_t
*src, int srcLen, int level)=(void*)0xFF2D80b0;
// look for the "1.1.f-LZC.1.1.2" string for zlib_(de)compress()
/* 60d 109: zlib_uncompress=FF32E388, compress=FF32E2BC */
/* 5dm2 208: (by order of screen appearance)
FFA8D5A8 zlib_compress_maybe
FFB24968 zlib_deflate_init2_maybe
FFB24EB4 zlib_deflate_maybe
FFB246EC zlib_deflateEnd_maybe
FFA8D674 zlib_uncompress_maybe
FF9A1C00 zlib_inflateInit2
FF9A3A24 zlib_inflate
FF9A1CFC zlib_inflateEnd
*/
// Credit goes to Sztupak for 60d funcs addresses and Alex for 550d
// try decompression
uint8_t srcbuf[100];
uint8_t dstbuf[100];
int destLen, zliberr;
destLen = 30;
FILE * zfile = FIO_Open( "B:/zlibtext.gz", O_RDONLY | O_SYNC );
// compressed using gzip. tried -1, -9 and default levels
if (zfile) {
unsigned rc = FIO_ReadFile( zfile, srcbuf, 51 );
bmp_printf( FONT_SMALL, x, y+10, "rc=%d ", rc );
FIO_CloseFile( zfile );
dstbuf[0] = '\0';
zliberr = zlib_uncompress( dstbuf, &destLen, srcbuf, rc);
// returns 0, but nothing happens, destLen is not updated
}
// try compression
uint8_t dstbuf[100];
unsigned long destLen, zliberr;
FILE * zfile ;
destLen = 30;
if (dstbuf) {
zliberr = zlib_compress( dstbuf, &destLen, 0xff010000, 32, 9); //
level 9 in in code
//zliberr is 0, but destLen is not updated with compressed length
zfile = FIO_CreateFile( "B:/compr.dat" ); // freezes if compress is
asked
FIO_WriteFile(zfile, dstbuf, destLen);
FIO_CloseFile(zfile);
}
Indy