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