git subrepo pull --force deps/lightrec
[pcsx_rearmed.git] / deps / libretro-common / include / libchdr / libchdr_zlib.h
CommitLineData
3719602c
PC
1/* license:BSD-3-Clause
2 * copyright-holders:Aaron Giles
3 ***************************************************************************
4
5 libchr_zlib.h
6
7 Zlib compression wrappers
8
9***************************************************************************/
10
11#pragma once
12
13#ifndef __LIBCHDR_ZLIB_H__
14#define __LIBCHDR_ZLIB_H__
15
16#include <stdint.h>
17
18#include <zlib.h>
19#include "coretypes.h"
20#include "chd.h"
21
22#define MAX_ZLIB_ALLOCS 64
23
24/* codec-private data for the ZLIB codec */
25
26typedef struct _zlib_allocator zlib_allocator;
27struct _zlib_allocator
28{
29 UINT32 * allocptr[MAX_ZLIB_ALLOCS];
30 UINT32 * allocptr2[MAX_ZLIB_ALLOCS];
31};
32
33typedef struct _zlib_codec_data zlib_codec_data;
34struct _zlib_codec_data
35{
36 z_stream inflater;
37 zlib_allocator allocator;
38};
39
40/* codec-private data for the CDZL codec */
41typedef struct _cdzl_codec_data cdzl_codec_data;
42struct _cdzl_codec_data {
43 /* internal state */
44 zlib_codec_data base_decompressor;
45#ifdef WANT_SUBCODE
46 zlib_codec_data subcode_decompressor;
47#endif
48 uint8_t* buffer;
49};
50
51/* zlib compression codec */
52chd_error zlib_codec_init(void *codec, uint32_t hunkbytes);
53
54void zlib_codec_free(void *codec);
55
56chd_error zlib_codec_decompress(void *codec, const uint8_t *src, uint32_t complen, uint8_t *dest, uint32_t destlen);
57
58voidpf zlib_fast_alloc(voidpf opaque, uInt items, uInt size);
59
60void zlib_fast_free(voidpf opaque, voidpf address);
61
62/* cdzl compression codec */
63chd_error cdzl_codec_init(void* codec, uint32_t hunkbytes);
64
65void cdzl_codec_free(void* codec);
66
67chd_error cdzl_codec_decompress(void *codec, const uint8_t *src, uint32_t complen, uint8_t *dest, uint32_t destlen);
68
69#endif /* __LIBCHDR_ZLIB_H__ */