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