delta.h 2.1 KB

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