1 /**
2 * \file lzma/delta.h
3 * \brief Delta filter
4 * \note Never include this file directly. Use <lzma.h> instead.
5 */
6
7 /*
8 * Author: Lasse Collin
9 *
10 * This file has been put into the public domain.
11 * You can do whatever you want with this file.
12 */
13
14 #ifndef LZMA_H_INTERNAL
15 # error Never include this file directly. Use <lzma.h> instead.
16 #endif
17
18
19 /**
20 * \brief Filter ID
21 *
22 * Filter ID of the Delta filter. This is used as lzma_filter.id.
23 */
24 #define LZMA_FILTER_DELTA LZMA_VLI_C(0x03)
25
26
27 /**
28 * \brief Type of the delta calculation
29 *
30 * Currently only byte-wise delta is supported. Other possible types could
31 * be, for example, delta of 16/32/64-bit little/big endian integers, but
32 * these are not currently planned since byte-wise delta is almost as good.
33 */
34 typedef enum {
35 LZMA_DELTA_TYPE_BYTE
36 } lzma_delta_type;
37
38
39 /**
40 * \brief Options for the Delta filter
41 *
42 * These options are needed by both encoder and decoder.
43 */
44 typedef struct {
45 /** For now, this must always be LZMA_DELTA_TYPE_BYTE. */
46 lzma_delta_type type;
47
48 /**
49 * \brief Delta distance
50 *
51 * With the only currently supported type, LZMA_DELTA_TYPE_BYTE,
52 * the distance is as bytes.
53 *
54 * Examples:
55 * - 16-bit stereo audio: distance = 4 bytes
56 * - 24-bit RGB image data: distance = 3 bytes
57 */
58 uint32_t dist;
59
60 /**
61 * \brief Minimum value for lzma_options_delta.dist.
62 */
63 # define LZMA_DELTA_DIST_MIN 1
64
65 /**
66 * \brief Maximum value for lzma_options_delta.dist.
67 */
68 # define LZMA_DELTA_DIST_MAX 256
69
70 /*
71 * Reserved space to allow possible future extensions without
72 * breaking the ABI. You should not touch these, because the names
73 * of these variables may change. These are and will never be used
74 * when type is LZMA_DELTA_TYPE_BYTE, so it is safe to leave these
75 * uninitialized.
76 */
77
78 /** \private Reserved member. */
79 uint32_t reserved_int1;
80
81 /** \private Reserved member. */
82 uint32_t reserved_int2;
83
84 /** \private Reserved member. */
85 uint32_t reserved_int3;
86
87 /** \private Reserved member. */
88 uint32_t reserved_int4;
89
90 /** \private Reserved member. */
91 void *reserved_ptr1;
92
93 /** \private Reserved member. */
94 void *reserved_ptr2;
95
96 } lzma_options_delta;