git subrepo pull --force deps/lightrec
[pcsx_rearmed.git] / deps / libretro-common / include / libchdr / lzma.h
CommitLineData
3719602c
PC
1/* license:BSD-3-Clause
2 * copyright-holders:Aaron Giles
3 ***************************************************************************
4
5 lzma.h
6
7 LZMA compression wrappers
8
9***************************************************************************/
10
11#pragma once
12
13#ifndef __LIBCHDR_LZMA_H__
14#define __LIBCHDR_LZMA_H__
15
16#include <stdint.h>
17
18#include <LzmaEnc.h>
19#include <LzmaDec.h>
20
21#include <libchdr/libchdr_zlib.h>
22
23/* codec-private data for the LZMA codec */
24#define MAX_LZMA_ALLOCS 64
25
26typedef struct _lzma_allocator lzma_allocator;
27struct _lzma_allocator
28{
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];
34};
35
36typedef struct _lzma_codec_data lzma_codec_data;
37struct _lzma_codec_data
38{
39 CLzmaDec decoder;
40 lzma_allocator allocator;
41};
42
43/* codec-private data for the CDLZ codec */
44typedef struct _cdlz_codec_data cdlz_codec_data;
45struct _cdlz_codec_data {
46 /* internal state */
47 lzma_codec_data base_decompressor;
48#ifdef WANT_SUBCODE
49 zlib_codec_data subcode_decompressor;
50#endif
51 uint8_t* buffer;
52};
53
54chd_error lzma_codec_init(void* codec, uint32_t hunkbytes);
55
56void lzma_codec_free(void* codec);
57
58/*-------------------------------------------------
59 * decompress - decompress data using the LZMA
60 * codec
61 *-------------------------------------------------
62 */
63
64chd_error lzma_codec_decompress(void* codec, const uint8_t *src,
65 uint32_t complen, uint8_t *dest, uint32_t destlen);
66
67chd_error cdlz_codec_init(void* codec, uint32_t hunkbytes);
68
69void cdlz_codec_free(void* codec);
70
71chd_error cdlz_codec_decompress(void *codec, const uint8_t *src, uint32_t complen, uint8_t *dest, uint32_t destlen);
72
73#endif /* __LIBCHDR_LZMA_H__ */