1 /**************************************************************************
3 * Copyright 2013-2014 RAD Game Tools and Valve Software
4 * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal
9 * in the Software without restriction, including without limitation the rights
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 * copies of the Software, and to permit persons to whom the Software is
12 * furnished to do so, subject to the following conditions:
14 * The above copyright notice and this permission notice shall be included in
15 * all copies or substantial portions of the Software.
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 **************************************************************************/
27 // File: vogl_lzma_codec.h
30 #include "vogl_core.h"
31 #include "vogl_packed_uint.h"
41 // Always available, because we're statically linking in lzmalib now vs. dynamically loading the DLL.
42 bool is_initialized() const
47 bool pack(const void *p, uint n, vogl::vector<uint8> &buf);
49 bool unpack(const void *p, uint n, vogl::vector<uint8> &buf);
52 typedef int(VOGL_STDCALL *LzmaCompressFuncPtr)(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen,
53 unsigned char *outProps, size_t *outPropsSize, /* *outPropsSize must be = 5 */
54 int level, /* 0 <= level <= 9, default = 5 */
55 unsigned dictSize, /* default = (1 << 24) */
56 int lc, /* 0 <= lc <= 8, default = 3 */
57 int lp, /* 0 <= lp <= 4, default = 0 */
58 int pb, /* 0 <= pb <= 4, default = 2 */
59 int fb, /* 5 <= fb <= 273, default = 32 */
60 int numThreads /* 1 or 2, default = 2 */
63 typedef int(VOGL_STDCALL *LzmaUncompressFuncPtr)(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t *srcLen,
64 const unsigned char *props, size_t propsSize);
66 LzmaCompressFuncPtr m_pCompress;
67 LzmaUncompressFuncPtr m_pUncompress;
80 cSig = 'L' | ('0' << 8),
81 cChecksumSkipBytes = 3
86 uint8 m_lzma_props[cLZMAPropsSize];
88 packed_uint<4> m_comp_size;
89 packed_uint<4> m_uncomp_size;
91 packed_uint<4> m_adler32;