2007-12-09 00:42:33 +02:00
|
|
|
/**
|
|
|
|
* \file lzma/delta.h
|
|
|
|
* \brief Delta filter
|
|
|
|
*
|
|
|
|
* \author Copyright (C) 1999-2006 Igor Pavlov
|
|
|
|
* \author Copyright (C) 2007 Lasse Collin
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef LZMA_H_INTERNAL
|
|
|
|
# error Never include this file directly. Use <lzma.h> instead.
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Filter ID
|
|
|
|
*
|
2008-08-28 22:53:15 +03:00
|
|
|
* Filter ID of the Delta filter. This is used as lzma_filter.id.
|
2007-12-09 00:42:33 +02:00
|
|
|
*/
|
2008-08-28 22:53:15 +03:00
|
|
|
#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;
|
2007-12-09 00:42:33 +02:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Options for the Delta filter
|
|
|
|
*
|
|
|
|
* These options are needed by both encoder and decoder.
|
|
|
|
*/
|
|
|
|
typedef struct {
|
2008-08-28 22:53:15 +03:00
|
|
|
/** For now, this must always be LZMA_DELTA_TYPE_BYTE. */
|
|
|
|
lzma_delta_type type;
|
|
|
|
|
2007-12-09 00:42:33 +02:00
|
|
|
/**
|
2008-08-28 22:53:15 +03:00
|
|
|
* \brief Delta distance
|
|
|
|
*
|
|
|
|
* With the only currently supported type, LZMA_DELTA_TYPE_BYTE,
|
|
|
|
* the distance is as bytes.
|
2007-12-09 00:42:33 +02:00
|
|
|
*
|
|
|
|
* Examples:
|
|
|
|
* - 16-bit stereo audio: distance = 4 bytes
|
|
|
|
* - 24-bit RGB image data: distance = 3 bytes
|
|
|
|
*/
|
2008-09-27 19:09:21 +03:00
|
|
|
uint32_t dist;
|
|
|
|
# define LZMA_DELTA_DIST_MIN 1
|
|
|
|
# define LZMA_DELTA_DIST_MAX 256
|
2007-12-09 00:42:33 +02:00
|
|
|
|
2008-12-15 19:39:13 +02:00
|
|
|
/*
|
|
|
|
* 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.
|
2008-08-28 22:53:15 +03:00
|
|
|
*/
|
|
|
|
uint32_t reserved_int1;
|
|
|
|
uint32_t reserved_int2;
|
2008-09-27 19:09:21 +03:00
|
|
|
uint32_t reserved_int3;
|
|
|
|
uint32_t reserved_int4;
|
2008-08-28 22:53:15 +03:00
|
|
|
void *reserved_ptr1;
|
|
|
|
void *reserved_ptr2;
|
|
|
|
|
2007-12-09 00:42:33 +02:00
|
|
|
} lzma_options_delta;
|