78 lines
1.8 KiB
C
78 lines
1.8 KiB
C
|
/**
|
||
|
* \file lzma/delta.h
|
||
|
* \brief Delta filter
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* Author: Lasse Collin
|
||
|
*
|
||
|
* This file has been put into the public domain.
|
||
|
* You can do whatever you want with this file.
|
||
|
*
|
||
|
* See ../lzma.h for information about liblzma as a whole.
|
||
|
*/
|
||
|
|
||
|
#ifndef LZMA_H_INTERNAL
|
||
|
# error Never include this file directly. Use <lzma.h> instead.
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/**
|
||
|
* \brief Filter ID
|
||
|
*
|
||
|
* Filter ID of the Delta filter. This is used as lzma_filter.id.
|
||
|
*/
|
||
|
#define LZMA_FILTER_DELTA LZMA_VLI_C(0x03)
|
||
|
|
||
|
|
||
|
/**
|
||
|
* \brief Type of the delta calculation
|
||
|
*
|
||
|
* Currently only byte-wise delta is supported. Other possible types could
|
||
|
* be, for example, delta of 16/32/64-bit little/big endian integers, but
|
||
|
* these are not currently planned since byte-wise delta is almost as good.
|
||
|
*/
|
||
|
typedef enum {
|
||
|
LZMA_DELTA_TYPE_BYTE
|
||
|
} lzma_delta_type;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* \brief Options for the Delta filter
|
||
|
*
|
||
|
* These options are needed by both encoder and decoder.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
/** For now, this must always be LZMA_DELTA_TYPE_BYTE. */
|
||
|
lzma_delta_type type;
|
||
|
|
||
|
/**
|
||
|
* \brief Delta distance
|
||
|
*
|
||
|
* With the only currently supported type, LZMA_DELTA_TYPE_BYTE,
|
||
|
* the distance is as bytes.
|
||
|
*
|
||
|
* Examples:
|
||
|
* - 16-bit stereo audio: distance = 4 bytes
|
||
|
* - 24-bit RGB image data: distance = 3 bytes
|
||
|
*/
|
||
|
uint32_t dist;
|
||
|
# define LZMA_DELTA_DIST_MIN 1
|
||
|
# define LZMA_DELTA_DIST_MAX 256
|
||
|
|
||
|
/*
|
||
|
* Reserved space to allow possible future extensions without
|
||
|
* breaking the ABI. You should not touch these, because the names
|
||
|
* of these variables may change. These are and will never be used
|
||
|
* when type is LZMA_DELTA_TYPE_BYTE, so it is safe to leave these
|
||
|
* uninitialized.
|
||
|
*/
|
||
|
uint32_t reserved_int1;
|
||
|
uint32_t reserved_int2;
|
||
|
uint32_t reserved_int3;
|
||
|
uint32_t reserved_int4;
|
||
|
void *reserved_ptr1;
|
||
|
void *reserved_ptr2;
|
||
|
|
||
|
} lzma_options_delta;
|