diff options
author | Mathis Rosenhauer <rosenhauer@dkrz.de> | 2012-08-06 18:01:03 +0200 |
---|---|---|
committer | Mathis Rosenhauer <rosenhauer@dkrz.de> | 2012-08-06 18:01:03 +0200 |
commit | 7b90370fb6b528ddeea0d9b4d5d977bf1e71bddb (patch) | |
tree | b761250eaae81572e71c6ae4a98727f9834556a0 /src/sz_compat.c | |
parent | 053ffc5703e151d37409345e24cf6e28e027f4fb (diff) | |
download | libaec-7b90370fb6b528ddeea0d9b4d5d977bf1e71bddb.tar.gz libaec-7b90370fb6b528ddeea0d9b4d5d977bf1e71bddb.tar.bz2 libaec-7b90370fb6b528ddeea0d9b4d5d977bf1e71bddb.zip |
imitate szlib for gribex
Diffstat (limited to 'src/sz_compat.c')
-rw-r--r-- | src/sz_compat.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/sz_compat.c b/src/sz_compat.c new file mode 100644 index 0000000..f88e9ff --- /dev/null +++ b/src/sz_compat.c @@ -0,0 +1,50 @@ +#include <stddef.h> +#include "szlib.h" + +int SZ_BufftoBuffCompress(void *dest, size_t *destLen, const void *source, size_t sourceLen, SZ_com_t *param) +{ + int status; + ae_stream strm; + + strm.bit_per_sample = param->bits_per_pixel; + strm.block_size = param->pixels_per_block; + strm.segment_size = param->pixels_per_scanline / param->pixels_per_block; + strm.flags = param->options_mask; + strm.avail_in = sourceLen; + strm.avail_out = *destLen; + strm.next_out = dest; + strm.next_in = source; + + if ((status = ae_encode_init(&strm)) != AE_OK) + return status; + + if ((status = ae_encode(&strm, AE_FLUSH)) != AE_OK) + return status; + + *destLen = strm.total_out; + return SZ_OK; +} + +int SZ_BufftoBuffDecompress(void *dest, size_t *destLen, const void *source, size_t sourceLen, SZ_com_t *param) +{ + int status; + ae_stream strm; + + strm.bit_per_sample = param->bits_per_pixel; + strm.block_size = param->pixels_per_block; + strm.segment_size = param->pixels_per_scanline / param->pixels_per_block; + strm.flags = param->options_mask; + strm.avail_in = sourceLen; + strm.avail_out = *destLen; + strm.next_out = dest; + strm.next_in = source; + + if ((status = ae_decode_init(&strm)) != AE_OK) + return status; + + if ((status = ae_decode(&strm, AE_FLUSH)) != AE_OK) + return status; + + *destLen = strm.total_out; + return SZ_OK; +} |