Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 10:19:34

0001 /* SPDX-License-Identifier: 0BSD */
0002 
0003 /**
0004  * \file        lzma/delta.h
0005  * \brief       Delta filter
0006  * \note        Never include this file directly. Use <lzma.h> instead.
0007  */
0008 
0009 /*
0010  * Author: Lasse Collin
0011  */
0012 
0013 #ifndef LZMA_H_INTERNAL
0014 #   error Never include this file directly. Use <lzma.h> instead.
0015 #endif
0016 
0017 
0018 /**
0019  * \brief       Filter ID
0020  *
0021  * Filter ID of the Delta filter. This is used as lzma_filter.id.
0022  */
0023 #define LZMA_FILTER_DELTA       LZMA_VLI_C(0x03)
0024 
0025 
0026 /**
0027  * \brief       Type of the delta calculation
0028  *
0029  * Currently only byte-wise delta is supported. Other possible types could
0030  * be, for example, delta of 16/32/64-bit little/big endian integers, but
0031  * these are not currently planned since byte-wise delta is almost as good.
0032  */
0033 typedef enum {
0034     LZMA_DELTA_TYPE_BYTE
0035 } lzma_delta_type;
0036 
0037 
0038 /**
0039  * \brief       Options for the Delta filter
0040  *
0041  * These options are needed by both encoder and decoder.
0042  */
0043 typedef struct {
0044     /** For now, this must always be LZMA_DELTA_TYPE_BYTE. */
0045     lzma_delta_type type;
0046 
0047     /**
0048      * \brief       Delta distance
0049      *
0050      * With the only currently supported type, LZMA_DELTA_TYPE_BYTE,
0051      * the distance is as bytes.
0052      *
0053      * Examples:
0054      *  - 16-bit stereo audio: distance = 4 bytes
0055      *  - 24-bit RGB image data: distance = 3 bytes
0056      */
0057     uint32_t dist;
0058 
0059     /**
0060      * \brief       Minimum value for lzma_options_delta.dist.
0061      */
0062 #   define LZMA_DELTA_DIST_MIN 1
0063 
0064     /**
0065      * \brief       Maximum value for lzma_options_delta.dist.
0066      */
0067 #   define LZMA_DELTA_DIST_MAX 256
0068 
0069     /*
0070      * Reserved space to allow possible future extensions without
0071      * breaking the ABI. You should not touch these, because the names
0072      * of these variables may change. These are and will never be used
0073      * when type is LZMA_DELTA_TYPE_BYTE, so it is safe to leave these
0074      * uninitialized.
0075      */
0076 
0077     /** \private     Reserved member. */
0078     uint32_t reserved_int1;
0079 
0080     /** \private     Reserved member. */
0081     uint32_t reserved_int2;
0082 
0083     /** \private     Reserved member. */
0084     uint32_t reserved_int3;
0085 
0086     /** \private     Reserved member. */
0087     uint32_t reserved_int4;
0088 
0089     /** \private     Reserved member. */
0090     void *reserved_ptr1;
0091 
0092     /** \private     Reserved member. */
0093     void *reserved_ptr2;
0094 
0095 } lzma_options_delta;