1 /* license:BSD-3-Clause
2 * copyright-holders:Aaron Giles
3 ***************************************************************************
7 LZMA compression wrappers
9 ***************************************************************************/
13 #ifndef __LIBCHDR_LZMA_H__
14 #define __LIBCHDR_LZMA_H__
21 #include <libchdr/libchdr_zlib.h>
23 /* codec-private data for the LZMA codec */
24 #define MAX_LZMA_ALLOCS 64
26 typedef struct _lzma_allocator lzma_allocator;
27 struct _lzma_allocator
29 void *(*Alloc)(void *p, size_t size);
30 void (*Free)(void *p, void *address); /* address can be 0 */
31 void (*FreeSz)(void *p, void *address, size_t size); /* address can be 0 */
32 uint32_t* allocptr[MAX_LZMA_ALLOCS];
33 uint32_t* allocptr2[MAX_LZMA_ALLOCS];
36 typedef struct _lzma_codec_data lzma_codec_data;
37 struct _lzma_codec_data
40 lzma_allocator allocator;
43 /* codec-private data for the CDLZ codec */
44 typedef struct _cdlz_codec_data cdlz_codec_data;
45 struct _cdlz_codec_data {
47 lzma_codec_data base_decompressor;
49 zlib_codec_data subcode_decompressor;
54 chd_error lzma_codec_init(void* codec, uint32_t hunkbytes);
56 void lzma_codec_free(void* codec);
58 /*-------------------------------------------------
59 * decompress - decompress data using the LZMA
61 *-------------------------------------------------
64 chd_error lzma_codec_decompress(void* codec, const uint8_t *src,
65 uint32_t complen, uint8_t *dest, uint32_t destlen);
67 chd_error cdlz_codec_init(void* codec, uint32_t hunkbytes);
69 void cdlz_codec_free(void* codec);
71 chd_error cdlz_codec_decompress(void *codec, const uint8_t *src, uint32_t complen, uint8_t *dest, uint32_t destlen);
73 #endif /* __LIBCHDR_LZMA_H__ */