pcompress/bsc/libbsc/filters.h
Moinak Ghosh fb25e53b4f Add forked and optimized copy of LGPL version of Libbsc.
Strip out Sort Transform from Libbsc copy.
Reduce Libbsc memory use.
Avoid redundant adler32 of data block in Libbsc.
2013-11-30 22:13:33 +05:30

111 lines
4.4 KiB
C

/*-----------------------------------------------------------*/
/* Block Sorting, Lossless Data Compression Library. */
/* Interface to data preprocessing filters */
/*-----------------------------------------------------------*/
/*--
This file is a part of bsc and/or libbsc, a program and a library for
lossless, block-sorting data compression.
Copyright (c) 2009-2012 Ilya Grebnov <ilya.grebnov@gmail.com>
See file AUTHORS for a full list of contributors.
The bsc and libbsc 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 3 of the License, or (at your
option) any later version.
The bsc and libbsc 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.
You should have received a copy of the GNU Lesser General Public License
along with the bsc and libbsc. If not, see http://www.gnu.org/licenses/.
Please see the files COPYING and COPYING.LIB for full copyright information.
See also the bsc and libbsc web site:
http://libbsc.com/ for more information.
--*/
#ifndef _LIBBSC_FILTERS_H
#define _LIBBSC_FILTERS_H
#define LIBBSC_CONTEXTS_FOLLOWING 1
#define LIBBSC_CONTEXTS_PRECEDING 2
#ifdef __cplusplus
extern "C" {
#endif
/**
* Autodetects segments for better compression of heterogeneous files.
* @param input - the input memory block of n bytes.
* @param n - the length of the input memory block.
* @param segments - the output array of segments of k elements size.
* @param k - the size of the output segments array.
* @param features - the set of additional features.
* @return The number of segments if no error occurred, error code otherwise.
*/
int bsc_detect_segments(const unsigned char * input, int n, int * segments, int k, int features);
/**
* Autodetects order of contexts for better compression of binary files.
* @param input - the input memory block of n bytes.
* @param n - the length of the input memory block.
* @param features - the set of additional features.
* @return The detected contexts order if no error occurred, error code otherwise.
*/
int bsc_detect_contextsorder(const unsigned char * input, int n, int features);
/**
* Reverses memory block to change order of contexts.
* @param T - the input/output memory block of n bytes.
* @param n - the length of the memory block.
* @param features - the set of additional features.
* @return LIBBSC_NO_ERROR if no error occurred, error code otherwise.
*/
int bsc_reverse_block(unsigned char * T, int n, int features);
/**
* Autodetects record size for better compression of multimedia files.
* @param input - the input memory block of n bytes.
* @param n - the length of the input memory block.
* @param features - the set of additional features.
* @return The size of record if no error occurred, error code otherwise.
*/
int bsc_detect_recordsize(const unsigned char * input, int n, int features);
/**
* Reorders memory block for specific size of record (Forward transform).
* @param T - the input/output memory block of n bytes.
* @param n - the length of the memory block.
* @param recordSize - the size of record.
* @param features - the set of additional features.
* @return LIBBSC_NO_ERROR if no error occurred, error code otherwise.
*/
int bsc_reorder_forward(unsigned char * T, int n, int recordSize, int features);
/**
* Reorders memory block for specific size of record (Reverse transform).
* @param T - the input/output memory block of n bytes.
* @param n - the length of the memory block.
* @param recordSize - the size of record.
* @param features - the set of additional features.
* @return LIBBSC_NO_ERROR if no error occurred, error code otherwise.
*/
int bsc_reorder_reverse(unsigned char * T, int n, int recordSize, int features);
#ifdef __cplusplus
}
#endif
#endif
/*-------------------------------------------------*/
/* End filters.h */
/*-------------------------------------------------*/