winamp/Src/external_dependencies/intel_ipp_6.1.1.035/ia32/include/ippdc.h
2024-09-24 14:54:57 +02:00

2996 lines
135 KiB
C

/* /////////////////////////////////////////////////////////////////////////////
//
// INTEL CORPORATION PROPRIETARY INFORMATION
// This software is supplied under the terms of a license agreement or
// nondisclosure agreement with Intel Corporation and may not be copied
// or disclosed except in accordance with the terms of that agreement.
// Copyright(c) 2004-2009 Intel Corporation. All Rights Reserved.
//
// Intel(R) Performance Primitives
// Data Compression Library (ippDC)
//
*/
#if !defined( __IPPDC_H__ ) || defined( _OWN_BLDPCS )
#define __IPPDC_H__
#if defined (_WIN32_WCE) && defined (_M_IX86) && defined (__stdcall)
#define _IPP_STDCALL_CDECL
#undef __stdcall
#endif
#ifndef __IPPDEFS_H__
#include "ippdefs.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
/********************* Data Structures and Macro ****************************/
#if !defined( _OWN_BLDPCS )
/*
// VLC
*/
typedef struct {
Ipp32s value; /* current value */
Ipp32s code; /* the real bits code for the index */
Ipp32s length; /* the bit length of the value */
} IppsVLCTable_32s;
#endif /* _OWN_BLDPCS */
/* /////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// Functions declarations
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////// */
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippdcGetLibVersion
// Purpose: getting of the library version
// Returns: the structure of information about version
// of ippDC library
// Parameters:
//
// Notes: not necessary to release the returned structure
*/
IPPAPI( const IppLibraryVersion*, ippdcGetLibVersion, (void) )
/* Run Length Encoding */
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeRLE_8u
// Purpose: Performs the RLE encoding
//
// Parameters:
// pSrc Pointer to the source vector
// pSrcLen Pointer to the length of source vector on input,
// pointer to the size of remainder on output
// pDst Pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output.
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsDstSizeLessExpected The size of destination vector less expected
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeRLE_8u, ( Ipp8u** ppSrc, int* pSrcLen,
Ipp8u* pDst, int* pDstLen ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeRLE_8u
// Purpose: Performs the RLE decoding
//
// Parameters:
// pSrc Pointer to the source vector
// pSrcLen Pointer to the length of source vector on input,
// pointer to the size of remainder on output
// pDst Pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output.
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsDstSizeLessExpected The size of destination vector less expected
// ippStsSrcDataErr The source vector contains unsupported data
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeRLE_8u, ( Ipp8u** ppSrc, int* pSrcLen,
Ipp8u* pDst, int* pDstLen ))
/* Move To Front */
#if !defined ( _OWN_BLDPCS )
struct MTFState_8u;
typedef struct MTFState_8u IppMTFState_8u;
#endif
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsMTFInitAlloc_8u
// Purpose: Allocates necessary memory and initializes structure for
// the MTF transform
//
// Parameters:
// pMTFState Pointer to the structure containing parameters for
// the MTF transform
//
// Return:
// ippStsNullPtrErr Pointer to structure is NULL
// ippMemAllocErr Can't allocate memory for pMTFState
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsMTFInitAlloc_8u, ( IppMTFState_8u** ppMTFState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsMTFInit_8u
// Purpose: Initializes parameters for the MTF transform
//
// Parameters:
// pMTFState Pointer to the structure containing parameters for
// the MTF transform
//
// Return:
// ippStsNullPtrErr Pointer to structure is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsMTFInit_8u, ( IppMTFState_8u* pMTFState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsMTFGetSize_8u
// Purpose: Computes the size of necessary memory (in bytes) for
// structure of the MTF transform
//
// Parameters:
// pMTFStateSize Pointer to the computed size of structure
//
// Return:
// ippStsNullPtrErr Pointer is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsMTFGetSize_8u, ( int* pMTFStateSize ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsMTFFree_8u
// Purpose: Frees allocated memory for MTF transform structure
//
// Parameters:
// pMTFState Pointer to the structure containing parameters for
// the MTF transform
//
*/
IPPAPI(void, ippsMTFFree_8u, ( IppMTFState_8u* pMTFState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsMTFFwd_8u
// Purpose: Performs the forward MTF transform
//
// Parameters:
// pSrc Pointer to the source vector
// pDst Pointer to the destination vector
// len Length of source/destination vectors
// pMTFState Pointer to the structure containing parameters for
// the MTF transform
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Length of the source vector is less or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsMTFFwd_8u, ( const Ipp8u* pSrc, Ipp8u* pDst, int len,
IppMTFState_8u* pMTFState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsMTFInv_8u
// Purpose: Performs the inverse MTF transform
//
// Parameters:
// pSrc Pointer to the source vector
// pDst Pointer to the destination vector
// len Length of source/destination vectors
// pMTFState Pointer to the structure containing parameters for
// the MTF transform
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Length of the source vector is less or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsMTFInv_8u, ( const Ipp8u* pSrc, Ipp8u* pDst, int len,
IppMTFState_8u* pMTFState ))
/* Burrows - Wheeler Transform */
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsBWTFwdGetSize_8u
// Purpose: Computes the size of necessary memory (in bytes) for
// additional buffer for the forward BWT transform
//
// Parameters:
// wndSize Window size for the BWT transform
// pBWTFwdBuffSize Pointer to the computed size of buffer
//
// Return:
// ippStsNullPtrErr Pointer is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsBWTFwdGetSize_8u, ( int wndSize, int* pBWTFwdBuffSize ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsBWTFwd_8u
// Purpose: Performs the forward BWT transform
//
// Parameters:
// pSrc Pointer to the source vector
// pDst Pointer to the destination vector
// len Length of source/destination vectors
// index Pointer to the index of first position for
// the inverse BWT transform
// pBWTFwdBuff Pointer to the additional buffer
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Length of source/destination vectors is less or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsBWTFwd_8u, ( const Ipp8u* pSrc, Ipp8u* pDst, int len,
int* index, Ipp8u* pBWTFwdBuff ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsBWTInvGetSize_8u
// Purpose: Computes the size of necessary memory (in bytes) for
// additional buffer for the inverse BWT transform
//
// Parameters:
// wndSize Window size for the BWT transform
// pBWTInvBuffSize Pointer to the computed size of buffer
//
// Return:
// ippStsNullPtrErr Pointer is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsBWTInvGetSize_8u, ( int wndSize, int* pBWTInvBuffSize ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsBWTInv_8u
// Purpose: Performs the inverse BWT transform
//
// Parameters:
// pSrc Pointer to the source vector
// pDst Pointer to the destination vector
// len Length of source/destination vectors
// index Index of first position for the inverse BWT transform
// pBWTInvBuff Pointer to the additional buffer
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Length of source/destination vectors is less or
// equal zero or index greater or equal srcLen
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsBWTInv_8u, ( const Ipp8u* pSrc, Ipp8u* pDst, int len,
int index, Ipp8u* pBWTInvBuff ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsBWTGetSize_SmallBlock_8u
// Purpose: Computes the size of necessary memory (in bytes) for
// additional buffer for the forward/inverse BWT transform
//
// Parameters:
// wndSize Window size for the BWT transform
// pBWTBuffSize Pointer to the computed size of buffer
//
// Return:
// ippStsNullPtrErr Pointer is NULL
// ippStsSizeErr wndSize less or equal 0 or more than 32768
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsBWTGetSize_SmallBlock_8u, ( int wndSize, int* pBuffSize ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsBWTFwd_SmallBlock_8u
// Purpose: Performs the forward BWT transform. This function is
// destined for processing of small blocks <= 32768
//
// Parameters:
// pSrc Pointer to the source vector
// pDst Pointer to the destination vector
// len Length of source/destination vectors
// index Pointer to the index of first position for
// the inverse BWT transform
// pBWTBuff Pointer to the additional buffer
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Length of vectors is less or equal 0 or more than 32768
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsBWTFwd_SmallBlock_8u, ( const Ipp8u* pSrc, Ipp8u* pDst,
int len, int* index,
Ipp8u* pBWTBuff ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsBWTInv_SmallBlock_8u
// Purpose: Performs the inverse BWT transform. This function is
// destined for processing of small blocks <= 32768
//
// Parameters:
// pSrc Pointer to the source vector
// pDst Pointer to the destination vector
// len Length of source/destination vectors
// index Index of first position for the inverse BWT transform
// pBWTBuff Pointer to the additional buffer
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Length of source/destination vectors is less or
// equal 0 or more than 32768 or index greater or equal srcLen
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsBWTInv_SmallBlock_8u, ( const Ipp8u* pSrc, Ipp8u* pDst,
int len, int index,
Ipp8u* pBWTBuff ))
/* Huffman Coding */
#if !defined ( _OWN_BLDPCS )
struct HuffState_8u;
typedef struct HuffState_8u IppHuffState_8u;
#endif
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeHuffInit_8u
// Purpose: Initializes structure for Huffman encoding
//
// Parameters:
// freqTable Table of symbols' frequencies
// pHuffState Pointer to the structure containing parameters for
// Huffman coding
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsFreqTableErr Invalid freqTable
// ippStsMaxLenHuffCodeErr Max length of Huffman code more expected
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeHuffInit_8u, ( const int freqTable[256],
IppHuffState_8u* pHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsHuffGetSize_8u
// Purpose: Computes the size of necessary memory (in bytes) for
// structure of Huffman coding
//
// Parameters:
// pHuffStateSize Pointer to the computed size of structure
//
// Return:
// ippStsNullPtrErr Pointer is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsHuffGetSize_8u, ( int* pHuffStateSize ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeHuffInitAlloc_8u
// Purpose: Allocates necessary memory and initializes structure for
// Huffman encoding
//
// Parameters:
// freqTable Table of symbols' frequencies
// pHuffState Pointer to the structure containing parameters for
// Huffman coding
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippMemAllocErr Can't allocate memory for pHuffState
// ippStsFreqTableErr Invalid freqTable
// ippStsMaxLenHuffCodeErr Max length of Huffman code more expected
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeHuffInitAlloc_8u, ( const int freqTable[256],
IppHuffState_8u** ppHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsHuffFree_8u
// Purpose: Frees allocated memory for Huffman coding structure
//
// Parameters:
// pHuffState Pointer to the structure containing parameters for
// Huffman coding
//
*/
IPPAPI(void, ippsHuffFree_8u, ( IppHuffState_8u* pHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeHuffOne_8u
// Purpose: Performs Huffman encoding of the one source element
//
// Parameters:
// src Source element
// pDst Pointer to the destination vector
// dstOffsetBits Offset in the destination vector, starting with high bit
// pHuffState Pointer to the structure containing parameters for
// Huffman coding
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsCodeLenTableErr Invalid codeLenTable
// ippStsSizeErr dstOffsetBits less than 0 or more than 7
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeHuffOne_8u, ( Ipp8u src, Ipp8u* pDst, int dstOffsetBits,
IppHuffState_8u* pHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeHuff_8u
// Purpose: Performs Huffman encoding
//
// Parameters:
// pSrc Pointer to the source vector
// srcLen Length of source vector
// pDst Pointer to the destination vector
// pDstLen Pointer to the resulting length of the destination vector
// on output.
// pHuffState Pointer to the structure containing parameters for
// Huffman coding
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Length of the source vector is less or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeHuff_8u, ( const Ipp8u* pSrc, int srcLen,
Ipp8u* pDst, int* pDstLen,
IppHuffState_8u* pHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeHuffFinal_8u
// Purpose: Flushes remainder after Huffman encoding
//
// Parameters:
// pDst Pointer to the destination vector
// pDstLen Pointer to the resulting length of the destination vector
// on output.
// pHuffState Pointer to the structure containing parameters for
// Huffman coding
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeHuffFinal_8u, ( Ipp8u* pDst, int* pDstLen,
IppHuffState_8u* pHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsHuffGetLenCodeTable_8u
// Purpose: Gives back the table with lengths of Huffman codes from
// pHuffState
//
// Parameters:
// codeLenTable Destination table with lengths of Huffman codes
// pHuffState Pointer to the structure containing parameters for
// Huffman coding
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsHuffGetLenCodeTable_8u, ( int codeLenTable[256],
IppHuffState_8u* pHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeHuffInit_8u
// Purpose: Initializes structure for Huffman decoding
//
// Parameters:
// codeLenTable Table with lengths of Huffman codes
// pHuffState Pointer to the structure containing parameters for
// Huffman coding
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsCodeLenTableErr Invalid codeLenTable
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeHuffInit_8u, ( const int codeLenTable[256],
IppHuffState_8u* pHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeHuffInitAlloc_8u
// Purpose: Allocates necessary memory and initializes structure for
// Huffman decoding
//
// Parameters:
// codeLenTable Table with lengths of Huffman codes
// pHuffState Pointer to the structure containing parameters for
// Huffman coding
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippMemAllocErr Can't allocate memory for pHuffState
// ippStsCodeLenTableErr Invalid codeLenTable
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeHuffInitAlloc_8u, ( const int codeLenTable[256],
IppHuffState_8u** ppHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeHuffOne_8u
// Purpose: Performs Huffman decoding of the one destination element
//
// Parameters:
// pSrc Pointer to the source vector
// srcOffsetBits Offset in the source vector, starting with high bit
// pDst Pointer to the destination vector
// pHuffState Pointer to the structure containing parameters for
// Huffman coding
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr srcOffsetBits less than 0 or more than 7
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeHuffOne_8u, ( const Ipp8u* pSrc, int srcOffsetBits,
Ipp8u* pDst, IppHuffState_8u* pHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeHuff_8u
// Purpose: Performs Huffman decoding
//
// Parameters:
// pSrc Pointer to the source vector
// srcLen Length of source vector
// pDst Pointer to the destination vector
// pDstLen Pointer to the expected size of destination vector on input,
// pointer to the resulting length of the destination vector
// on output.
// pHuffState Pointer to the structure containing parameters for
// Huffman coding
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Length of the source vector is less or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeHuff_8u, ( const Ipp8u* pSrc, int srcLen,
Ipp8u* pDst, int* pDstLen,
IppHuffState_8u* pHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsHuffGetDstBuffSize_8u
// Purpose: Computes the size of necessary memory (in bytes) for
// the destination buffer (for Huffman encoding/decoding)
//
// Parameters:
// codeLenTable Table with lengths of Huffman codes
// srcLen Length of source vector
// pEncDstBuffSize Pointer to the computed size of the destination buffer
// for Huffman encoding (value returns if pointer isn't NULL)
// pDecDstBuffSize Pointer to the computed size of the destination buffer
// for Huffman decoding (value returns if pointer isn't NULL)
//
// Return:
// ippStsNullPtrErr Pointer to codeLenTable is NULL
// ippStsCodeLenTableErr Invalid codeLenTable
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsHuffGetDstBuffSize_8u, ( const int codeLenTable[256], int srcLen,
int* pEncDstBuffSize, int* pDecDstBuffSize ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsHuffLenCodeTablePack_8u
// Purpose: Packs the table with lengths of Huffman codes
//
// Parameters:
// codeLenTable Table with lengths of Huffman codes
// pDst Pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output.
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Length of the destination vector is less, equal zero or
// less expected
// ippStsCodeLenTableErr Invalid codeLenTable
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsHuffLenCodeTablePack_8u, ( const int codeLenTable[256],
Ipp8u* pDst, int* pDstLen ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsHuffLenCodeTableUnpack_8u
// Purpose: Unpacks the table with lengths of Huffman codes
//
// Parameters:
// pSrc Pointer to the source vector
// pSrcLen Pointer to the length of source vector on input,
// pointer to the resulting length of the source vector
// codeLenTable Table with lengths of Huffman codes
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Length of the source vector is less, equal zero or
// less expected
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsHuffLenCodeTableUnpack_8u, ( const Ipp8u* pSrc, int* pSrcLen,
int codeLenTable[256] ))
/* Generalized Interval Transform (GIT) functions */
#if !defined ( _OWN_BLDPCS )
struct GITState_8u;
typedef struct GITState_8u IppGITState_8u;
typedef enum {
ippGITNoStrategy,
ippGITLeftReorder,
ippGITRightReorder,
ippGITFixedOrder
} IppGITStrategyHint;
#endif
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeGITGetSize_8u
// Purpose: Finds out size of GIT internal encoding state structure
// in bytes
//
// Parameters:
// maxSrcLen Max length of source vector
// maxDstLen Max length of destination vector
// pGITStateSize Pointer to the size of GIT internal encoding state
// Return:
// ippStsNullPtrErr Pointer to GITStateSize is NULL
// ippStsSizeErr Bad length arguments
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeGITGetSize_8u, ( int maxSrcLen, int maxDstLen,
int* pGITStateSize))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeGITInit_8u
// Purpose: Initializes the GIT internal encoding state
//
// Parameters:
// maxSrcLen Max length of source vector
// maxDstLen Max length of destination vector
// pGITState Pointer to memory allocated for GIT internal encoding
// state
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Bad size arguments
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeGITInit_8u, (int maxSrcLen, int maxDstLen,
IppGITState_8u* ppGITState))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeGITInitAlloc_8u
// Purpose: Allocates and Initializes the GIT internal encoding state
//
// Parameters:
// maxSrcLen Max length of source vector
// maxDstLen Max length of destination vector
// ppGITState Pointer to pointer to GIT internal encoding state
// Return:
// ippStsSizeErr Bad length arguments
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeGITInitAlloc_8u, (int maxSrcLen, int maxDstLen,
IppGITState_8u** ppGITState))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeGIT_8u
// Purpose: Performs GIT encoding
//
// Parameters:
// pSrc Pointer to the source vector
// srcLen Length of source vector
// pDst Pointer to the destination vector
// pDstLen Pointer to the length of destination vector
// strategyHint Strategy hint for lexicorgaphical reordering
// pGITState Pointer to GIT internal encoding state
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Source vector is too long, more than the value of
// maxSrcLen parameter passed to ippsGITEncodeGetSize_8u
// or ippsGITEncodeInitAlloc_8u
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeGIT_8u, (const Ipp8u* pSrc, int srcLen, Ipp8u* pDst,
int* pDstLen,
IppGITStrategyHint strategyHint,
IppGITState_8u* pGITState))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeGITGetSize_8u
// Purpose: Finds out size of GIT internal decoding state structure
// in bytes
//
// Parameters:
// maxSrcLen Max length of source vector
// pGITStateSize Pointer to the size of GIT internal decoding state
// Return:
// ippStsNullPtrErr Pointer to GITStateSize is NULL
// ippStsSizeErr Bad length arguments
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeGITGetSize_8u, (int maxSrcLen, int* pGITStateSize))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeGITInit_8u
// Purpose: Initializes the GIT internal decoding state
//
// Parameters:
// maxSrcLen Max length of source vector
// maxDstLen Max length of destination vector
// pGITState Pointer to memory allocated for GIT internal decoding
// state
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Bad size arguments
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeGITInit_8u, (int maxDstLen, IppGITState_8u* pGITState))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeGITInitAlloc_8u
// Purpose: Allocates and Initializes the GIT internal decoding state
//
// Parameters:
// maxSrcLen Max length of source vector
// maxDstLen Max length of destination vector
// ppGITState Pointer to pointer to GIT internal decoding state
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Bad length arguments
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeGITInitAlloc_8u, (int maxSrcLen, int maxDstLen,
IppGITState_8u** ppGITState))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeGIT_8u
// Purpose: Performs GIT decoding
//
// Parameters:
// pSrc Pointer to the source vector
// srcLen Length of source vector
// pDst Pointer to the destination vector
// pDstLen Pointer to the length of destination vector
// strategyHint Strategy hint for lexicorgaphical reordering
// pGITState Pointer to GIT internal decoding state
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Not enough memory allocated for destination buffer
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeGIT_8u, (const Ipp8u* pSrc, int srcLen, Ipp8u* pDst, int* pDstLen,
IppGITStrategyHint strategyHint,
IppGITState_8u* pGITState))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsGITFree_8u
// Purpose: Frees the GIT internal decoding state
//
// Parameters:
// pGITState Pointer to the GIT internal state
//
*/
IPPAPI(void, ippsGITFree_8u, (IppGITState_8u* pGITState))
/* Ziv Lempel Storer Szymanski (LZSS) functions */
#if !defined ( _OWN_BLDPCS )
struct LZSSState_8u;
typedef struct LZSSState_8u IppLZSSState_8u;
#endif
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsLZSSGetSize_8u
// Purpose: Finds out size of LZSS internal state structure in bytes
//
// Parameters:
// pLZSSStateSize Pointer to the size of LZSS internal encoding state
// Return:
// ippStsNullPtrErr Pointer to LZSSStateSize is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsLZSSGetSize_8u, ( int* pLZSSStateSize ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZSSInit_8u
// Purpose: Initializes the LZSS internal state for encoding
//
// Parameters:
// pLZSSState Pointer to memory allocated for LZSS internal state
// Return:
// ippStsNullPtrErr Pointer to internal LZSS state structure is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeLZSSInit_8u, ( IppLZSSState_8u* pLZSSState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZSSInitAlloc_8u
// Purpose: Allocates and Initializes the LZSS internal state for encoding
//
// Parameters:
// ppLZSSState Double pointer to LZSS internal state
// Return:
// ippStsNullPtrErr Double pointer to internal LZSS state structure is NULL
// ippStsMemAllocErr Error occurred during memory allocation
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeLZSSInitAlloc_8u, ( IppLZSSState_8u** ppLZSSState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZSS_8u
// Purpose: Performs LZSS encoding
//
// Parameters:
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of source vector
// ppDst Double pointer to the destination vector
// pDstLen Pointer to the length of destination vector
// pLZSSState Pointer to LZSS internal state for encoding
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Bad length arguments
// ippStsDstSizeLessExpected Destination buffer is full
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeLZSS_8u, ( Ipp8u** ppSrc, int* pSrcLen, Ipp8u** ppDst, int* pDstLen,
IppLZSSState_8u* pLZSSState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZSSFlush_8u
// Purpose: Flushes the last few bits from the bit stream and alignes
// output data on the byte boundary
//
// Parameters:
// ppDst Double pointer to the destination vector
// pDstLen Pointer to the length of destination vector
// pLZSSState Pointer to the LZSS internal state for encoding
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Bad length arguments
// ippStsDstSizeLessExpected Destination buffer is full
// ippStsNoErr No errors
*/
IPPAPI(IppStatus, ippsEncodeLZSSFlush_8u, (Ipp8u** ppDst, int* pDstLen, IppLZSSState_8u* pLZSSState))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZSSInit_8u
// Purpose: Initializes the LZSS internal state for decoding
//
// Parameters:
// pLZSSState Pointer to memory allocated for LZSS internal state
// Return:
// ippStsNullPtrErr Pointer to internal LZSS state structure is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeLZSSInit_8u, ( IppLZSSState_8u* pLZSSState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZSSInitAlloc_8u
// Purpose: Allocates and Initializes the LZSS internal state for decoding
//
// Parameters:
// ppLZSSState Double pointer to LZSS internal state for decoding
// Return:
// ippStsNullPtrErr Double pointer to internal LZSS state structure is NULL
// ippStsMemAllocErr Error occurred during memory allocation
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeLZSSInitAlloc_8u, ( IppLZSSState_8u** ppLZSSState))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZSS_8u
// Purpose: Performs LZSS decoding
//
// Parameters:
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of source vector
// ppDst Double pointer to the destination vector
// pDstLen Pointer to the length of destination vector
// pLZSSState Pointer to LZSS internal state
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Bad length arguments
// ippStsDstSizeLessExpected Destination buffer is full
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeLZSS_8u, ( Ipp8u** ppSrc, int* pSrcLen, Ipp8u** ppDst,
int* pDstLen, IppLZSSState_8u* pLZSSState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsLZSSFree_8u
// Purpose: Frees the LZSS internal state
//
// Parameters:
// pLZSSState Pointer to the LZSS internal state for decoding
//
*/
IPPAPI(void, ippsLZSSFree_8u, ( IppLZSSState_8u* pLZSSState ))
/* rfc1950, 1951, 1952 - compatible functions */
#if !defined ( _OWN_BLDPCS )
struct LZ77State_8u;
typedef struct LZ77State_8u IppLZ77State_8u;
typedef enum{
IppLZ77FastCompr,
IppLZ77AverageCompr,
IppLZ77BestCompr
} IppLZ77ComprLevel;
typedef enum{
IppLZ77NoChcksm,
IppLZ77Adler32,
IppLZ77CRC32
} IppLZ77Chcksm;
typedef enum {
IppLZ77NoFlush,
IppLZ77SyncFlush,
IppLZ77FullFlush,
IppLZ77FinishFlush
} IppLZ77Flush;
typedef struct IppLZ77Pairs_16u {
Ipp16u length;
Ipp16u offset;
} IppLZ77Pair;
typedef enum {
IppLZ77StatusInit,
IppLZ77StatusLZ77Process,
IppLZ77StatusHuffProcess,
IppLZ77StatusFinal
} IppLZ77DeflateStatus;
typedef enum {
IppLZ77UseFixed,
IppLZ77UseDynamic,
IppLZ77UseStored
} IppLZ77HuffMode;
typedef enum {
IppLZ77InflateStatusInit,
IppLZ77InflateStatusHuffProcess,
IppLZ77InflateStatusLZ77Process,
IppLZ77InflateStatusFinal
} IppLZ77InflateStatus;
#endif
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77GetSize
// Purpose: Computes the size of the internal encoding structure.
//
// Parameters:
// pLZ77VLCStateSize Pointer to the size of the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pointer pLZ77VLCStateSize is NULL.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77GetSize_8u, (int* pLZ77StateSize) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77Init
// Purpose: Initializes the internal encoding structure.
//
// Parameters:
// comprLevel Compression level.
// checksum Algorithm to compute the checksum for input data.
// pLZ77State Pointer to memory allocated for the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State pointer is NULL.
// ippStsBadArgErr Indicates an error when the checksum or comprLevel parameter
// has an illegal value.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77Init_8u, (IppLZ77ComprLevel comprLevel,
IppLZ77Chcksm checksum, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77InitAlloc
// Purpose: Allocates memory and initializes the internal encoding structure.
//
// Parameters:
// comprLevel Compression level.
// checksum Algorithm to compute the checksum for input data.
// ppLZ77State Double pointer to the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the ppLZ77State pointer is NULL.
// ippStsBadArgErr Indicates an error when the checksum or comprLevel parameter
// has an illegal value.
// ippStsMemAlloc Indicates an error when memory allocation fails.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77InitAlloc_8u, (IppLZ77ComprLevel comprLevel,
IppLZ77Chcksm checksum, IppLZ77State_8u** ppLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77
// Purpose: Performs LZ77 encoding.
//
// Parameters:
// ppSrc Double pointer to the source vector.
// pSrcLen Pointer to the length of the source vector.
// ppDst Double pointer to the destination vector.
// pDstLen Pointer to the length of the destination vector.
// flush Data-block encoding mode.
// pLZ77State Pointer to the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one of the specified pointers is NULL.
// ippStsSizeErr Indicates an error when DstLen is less than or equal to zero.
// ippStsDstSizeLessExpected Indicates a warning when the destination buffer is full.
//
// Note: This function searches for substring matches using the LZ77 algorithm.
// The technique of sliding window support is compatible with rfc1951.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77_8u, (Ipp8u** ppSrc, int* pSrcLen, IppLZ77Pair** ppDst,
int* pDstLen, IppLZ77Flush flush, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77SelectHuffMode
// Purpose: Takes the best decision about the optimal coding strategy
// (use fixed Huffman coding or dynamic Huffman coding).
//
// Parameters:
// pSrc Pointer to the source vector.
// srcLen Length of the source vector.
// pHuffMode Pointer to the value of coding strategy.
// pLZ77State Pointer to memory allocated for the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State pointer is NULL.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77SelectHuffMode_8u, (IppLZ77Pair* pSrc, int srcLen,
IppLZ77HuffMode* pHuffMode,
IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77FixedHuff
// Purpose: Performs fixed Huffman coding of the LZ77 output.
//
// Parameters:
// ppSrc Double pointer to the source vector.
// pSrcLen Pointer to the length of the source vector.
// ppDst Double pointer to the destination vector.
// pDstLen Pointer to the length of the destination vector.
// flush Data-block encoding mode.
// pLZ77State Pointer to the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one of the specified pointers is NULL.
// ippStsSizeErr Indicates an error when DstLen is less than or equal to zero.
// ippStsDstSizeLessExpected Indicates a warning when the destination buffer is full.
// ippStsStreamEnd Indicates a warning when the stream ends. This warning can
// be returned only when the flush value is FINISH.
//
// Note: This function produces the rfc1951 compatible code for the LZ77 output.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77FixedHuff_8u, (IppLZ77Pair** ppSrc, int* pSrcLen, Ipp8u** ppDst,
int* pDstLen, IppLZ77Flush flush, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77DynamicHuff
// Purpose: Performs dynamic Huffman coding of the LZ77 output.
//
// Parameters:
// ppSrc Double pointer to the source vector.
// pSrcLen Pointer to the length of the source vector.
// ppDst Double pointer to the destination vector.
// pDstLen Pointer to the length of the destination vector.
// flush Data-block encoding mode.
// pLZ77State Pointer to the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one of the specified pointers is NULL.
// ippStsSizeErr Indicates an error when DstLen is less than or equal to zero.
// ippStsDstSizeLessExpected Indicates a warning when the destination buffer is full.
// ippStsStreamEnd Indicates a warning when the stream ends. This warning can
// be returned only when the flush value is FINISH.
//
// Note: This function produces the rfc1951 compatible code for the LZ77 output.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77DynamicHuff_8u, (IppLZ77Pair** ppSrc, int* pSrcLen, Ipp8u** ppDst,
int* pDstLen, IppLZ77Flush flush, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77StoredBlock
// Purpose: Transmits the block without compression.
//
// Parameters:
// ppSrc Double pointer to the source vector.
// pSrcLen Pointer to the length of the source vector.
// ppDst Double pointer to the destination vector.
// pDstLen Pointer to the length of the destination vector.
// flush Data-block encoding mode.
// pLZ77State Pointer to the internal decoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one of the specified pointers is NULL.
// ippStsSizeErr Indicates an error when DstLen is less than or equal to zero.
// ippStsDstSizeLessExpected Indicates a warning when the destination buffer is full.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77StoredBlock_8u, (Ipp8u** ppSrc, int* pSrcLen, Ipp8u** ppDst,
int* pDstLen, IppLZ77Flush flush, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77Flush
// Purpose: Performs writing the service information (accumulated
// checksum and total length of input data stream) in order
// to achieve the ZLIB/GZIP data format compatibility.
//
// Parameters:
// ppDst Double pointer to the destination vector.
// pDstLen Pointer to the length of the destination vector.
// pLZ77State Pointer to the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one of the specified pointers is NULL.
// ippStsSizeErr Indicates an error when DstLen is less than or equal to zero.
// ippStsDstSizeLessExpected Indicates a warning when the destination buffer is full.
//
// Note: This is a service function which is necessary for achieving compatibility with
// the rfc1950, rfc1951, rfc1952 describing ZLIB/GZIP data format.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77Flush_8u, (Ipp8u** ppDst, int* pDstLen,
IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77GetPairs
// Purpose: Reads the pointer to the pair buffer, it's length and current index
// from the internal state structure for encoding.
//
// Parameters:
// ppPairs Double pointer to a variable of ippLZ77Pair type.
// pPairsInd Pointer to the current index in the pair buffer
// pPairsLen Pointer to the length of pair buffer
// pLZ77State Pointer to the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State or ppPairs pointer is NULL.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77GetPairs_8u, (IppLZ77Pair** ppPairs, int* pPairsInd,
int* pPairsLen, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77SetPairs
// Purpose: Writes the pointer to the pair buffer, it's length and current index
// to the internal state structure for encoding.
//
// Parameters:
// pPairs Pointer to a variable of ippLZ77Pair type.
// pairsInd Current index in the pair buffer
// pairsLen Length of pair buffer
// pLZ77State Pointer to the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State or pPairs pointer is NULL.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77SetPairs_8u, (IppLZ77Pair* pPairs, int pairsInd,
int pairsLen, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77GetStatus
// Purpose: Reads the encoding status value from the internal state
// structure for encoding.
//
// Parameters:
// pDeflateStatus Pointer to a variable of ippLZ77DeflateStatus type.
// pLZ77State Pointer to the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State or pDeflateStatus pointer is NULL.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77GetStatus_8u, (IppLZ77DeflateStatus* pDeflateStatus,
IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77SetStatus
// Purpose: Writes the encoding status value to the internal state
// structure for encoding.
//
// Parameters:
// deflateStatus Variable of ippLZ77DeflateStatus type.
// pLZ77State Pointer to the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State pointer is NULL.
// ippStsBadArgErr Indicates an error when the deflateStatus parameter has an illegal value.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77SetStatus_8u, (IppLZ77DeflateStatus deflateStatus,
IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77Reset
// Purpose: Resets the internal state structure for encoding.
//
// Parameters:
// pLZ77State Pointer to the internal encoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State pointer is NULL.
//
*/
IPPAPI( IppStatus, ippsEncodeLZ77Reset_8u, (IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77GetSize
// Purpose: Computes the size of the internal decoding structure.
//
// Parameters:
// pLZ77StateSize Pointer to the size of the internal decoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pointer pLZ77StateSize is NULL.
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77GetSize_8u, (int* pLZ77StateSize) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77Init
// Purpose: Initializes the internal decoding structure.
//
// Parameters:
// checksum Algorithm to compute the checksum for output data.
// pLZ77State Pointer to memory allocated for the internal decoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State pointer is NULL.
// ippStsBadArgErr Indicates an error when the checksum parameter
// has an illegal value.
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77Init_8u, (IppLZ77Chcksm checksum, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77InitAlloc
// Purpose: Allocates memory and initializes the internal encoding structure.
//
// Parameters:
// checksum Algorithm to compute the checksum for output data.
// ppLZ77State Double pointer to the internal decoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the ppLZ77State pointer is NULL.
// ippStsBadArgErr Indicates an error when the checksum parameter has an illegal value.
// ippStsMemAlloc Indicates an error when memory allocation fails.
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77InitAlloc_8u, (IppLZ77Chcksm checksum, IppLZ77State_8u** ppLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77
// Purpose: Performs LZ77 decoding.
//
// Parameters:
// ppSrc Double pointer to the source vector.
// pSrcLen Pointer to the length of the source vector.
// ppDst Double pointer to the destination vector.
// pDstLen Pointer to the length of the destination vector.
// flush Data-block encoding mode.
// pLZ77State Pointer to the internal decoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one of the specified pointers is NULL.
// ippStsSizeErr Indicates an error when DstLen is less than or equal to zero.
// ippStsDstSizeLessExpected Indicates a warning when the destination buffer is full.
// ippStsStreamEnd Indicates a warning when the stream ends.
//
// Note: The technique of LZ77 sliding window support is compatible with rfc1951.
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77_8u, (IppLZ77Pair** ppSrc, int* pSrcLen, Ipp8u** ppDst,
int* pDstLen, IppLZ77Flush flush, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77GetBlockType
// Purpose: Decodes the type of the block from the DEFLATE format.
//
// Parameters:
// ppSrc Double pointer to the source vector.
// pSrcLen Pointer to the length of the source vector.
// pHuffMode Pointer to the value of coding mode.
// pLZ77State Pointer to the internal decoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one of the specified pointers is NULL.
// ippStsSizeErr Indicates an error when SrcLen is less than zero.
// ippStsSrcSizeLessExpected Indicates a warning when the source buffer is less than expected.
// (Internal bit stream and source vector do not contain enough bits to decode
// the type of the block)
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77GetBlockType_8u, (Ipp8u** ppSrc, int* pSrcLen,
IppLZ77HuffMode* pHuffMode,
IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77FixedHuff
// Purpose: Performs fixed Huffman decoding of the rfc1951 compatible code.
//
// Parameters:
// ppSrc Double pointer to the source vector.
// pSrcLen Pointer to the length of the source vector.
// ppDst Double pointer to the destination vector.
// pDstLen Pointer to the length of the destination vector.
// flush Data-block encoding mode.
// pLZ77State Pointer to the internal decoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one of the specified pointers is NULL.
// ippStsSizeErr Indicates an error when DstLen is less than or equal to zero.
// ippStsSrcSizeLessExpected Indicates a warning when the source buffer is less than expected
// (end of block marker is not decoded).
// ippStsDstSizeLessExpected Indicates a warning when the destination buffer is full.
// ippStsStreamEnd Indicates a warning when the stream ends.
//
// Note: This function decodes the rfc1951 compatible code.
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77FixedHuff_8u, (Ipp8u** ppSrc, int* pSrcLen, IppLZ77Pair** ppDst,
int* pDstLen, IppLZ77Flush flush, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77DynamicHuff
// Purpose: Performs dynamic Huffman decoding of the rfc1951 compatible code.
//
// Parameters:
// ppSrc Double pointer to the source vector.
// pSrcLen Pointer to the length of the source vector.
// ppDst Double pointer to the destination vector.
// pDstLen Pointer to the length of the destination vector.
// flush Data-block encoding mode.
// pLZ77State Pointer to the internal decoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one of the specified pointers is NULL.
// ippStsWrongBlockType Indicates a warning when the type of the block is not dynamic Huffman type.
// ippStsSizeErr Indicates an error when DstLen is less than or equal to zero.
// ippStsSrcSizeLessExpected Indicates a warning when the source buffer is less than expected
// (end of block marker is not decoded).
// ippStsDstSizeLessExpected Indicates a warning when the destination buffer is full.
// ippStsStreamEnd Indicates a warning when the stream ends.
//
// Note: This function decodes the rfc1951 compatible code.
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77DynamicHuff_8u, (Ipp8u** ppSrc, int* pSrcLen, IppLZ77Pair** ppDst,
int* pDstLen, IppLZ77Flush flush, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77StoredBlock
// Purpose: Performs decoding of the block transmitted without compression.
//
// Parameters:
// ppSrc Double pointer to the source vector.
// pSrcLen Pointer to the length of the source vector.
// ppDst Double pointer to the destination vector.
// pDstLen Pointer to the length of the destination vector.
// pLZ77State Pointer to the internal decoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one of the specified pointers is NULL.
// ippStsWrongBlockType Indicates a warning when the type of the block is not of
// the "stored without compression type" type.
// ippStsSizeErr Indicates an error when DstLen is less than or equal to zero.
// ippStsSrcSizeLessExpected Indicates a warning when the source buffer is less than expected
// (end of block marker is not decoded).
// ippStsDstSizeLessExpected Indicates a warning when the destination buffer is full.
//
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77StoredBlock_8u, (Ipp8u** ppSrc, int* pSrcLen, Ipp8u** ppDst,
int* pDstLen, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77StoredHuff_8u
// Purpose: Performs copying the data to the output buffer of pairs
//
// Parameters:
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of source vector
// ppDst Double pointer to the destination vector of pairs
// pDstLen Pointer to the length of destination vector of pairs
// pLZ77State Pointer to the internal state
//
// Return:
// ippStsNoErr Indicates no error
// ippStsNullPtrErr Indicates an error when one of the specified pointers is NULL
// ippStsWrongBlockType Indicates a warning when the type of the block is not of
// the "stored without compression type" type
// ippStsSizeErr Indicates an error when DstLen is less than or equal to zero
// ippStsSrcSizeLessExpected Indicates a warning when the source buffer is less than expected
// ippStsDstSizeLessExpected Indicates a warning when the destination buffer is full
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77StoredHuff_8u, (Ipp8u** ppSrc, int* pSrcLen, IppLZ77Pair** ppDst,
int* pDstLen, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77GetPairs
// Purpose: Reads the pointer to the pair buffer, it's length and current index
// from the internal state structure for decoding.
//
// Parameters:
// ppPairs Double pointer to a variable of ippLZ77Pair type.
// pPairsInd Pointer to the current index in the pair buffer
// pPairsLen Pointer to the length of pair buffer
// pLZ77State Pointer to the internal decoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State or ppPairs pointer is NULL.
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77GetPairs_8u, (IppLZ77Pair** ppPairs, int* pPairsInd,
int* pPairsLen, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77SetPairs
// Purpose: Writes the pointer to the pair buffer, it's length and current index
// to the internal state structure for decoding.
//
// Parameters:
// pPairs Pointer to a variable of ippLZ77Pair type.
// pairsInd Current index in the pair buffer
// pairsLen Length of pair buffer
// pLZ77State Pointer to the internal decoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State or pPairs pointer is NULL.
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77SetPairs_8u, (IppLZ77Pair* pPairs, int pairsInd,
int pairsLen, IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77GetStatus
// Purpose: Reads the decoding status value from the internal state
// structure for decoding.
//
// Parameters:
// pInflateStatus Pointer to a variable of ippLZ77InflateStatus type.
// pLZ77State Pointer to the internal structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State or pInflateStatus pointer is NULL.
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77GetStatus_8u, ( IppLZ77InflateStatus* pInflateStatus,
IppLZ77State_8u* pLZ77State ) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77SetStatus
// Purpose: Writes the decoding status value to the internal state
// structure for decoding.
//
// Parameters:
// inflateStatus Variable of ippLZ77InflateStatus type.
// pLZ77State Pointer to the internal structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State pointer is NULL.
// ippStsBadArgErr Indicates an error when the inflateStatus parameter has an illegal value.
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77SetStatus_8u, ( IppLZ77InflateStatus inflateStatus,
IppLZ77State_8u* pLZ77State ) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZ77SetDictionary_8u, ippsDecodeLZ77SetDictionary_8u
// Purpose: Presets the dictionary for encoding/decoding.
//
// Parameters:
// pDictionary Pointer to the dictionary vector
// dictLen Length of dictionary vector
// pLZ77State Pointer to the internal state
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeLZ77SetDictionary_8u, ( Ipp8u* pDictionary, int dictLen, IppLZ77State_8u* pLZ77State ))
IPPAPI(IppStatus, ippsDecodeLZ77SetDictionary_8u, ( Ipp8u* pDictionary, int dictLen, IppLZ77State_8u* pLZ77State ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77Reset
// Purpose: Resets the internal state structure for decoding.
//
// Parameters:
// pLZ77State Pointer to the internal decoding structure.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pLZ77State pointer is NULL.
//
*/
IPPAPI( IppStatus, ippsDecodeLZ77Reset_8u, (IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77FixedHuffFull_8u
// Purpose: Performs the decoding of fixed huffman rfc1951 compatible format
//
// Parameters:
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of source vector
// ppDst Double pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output
// flush Flush mode
// pLZ77State Pointer to internal decoding state
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsSrcSizeLessExpected The end of block symbol not decoded, so size of source vector less expected
// ippStsDstSizeLessExpected The size of destination vector less expected
// ippStsStreamEnd The end of stream symbol decoded
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeLZ77FixedHuffFull_8u, (Ipp8u** ppSrc, int* pSrcLen, Ipp8u** ppDst, int* pDstLen, IppLZ77Flush flush, IppLZ77State_8u* pLZ77State))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77DynamicHuffFull_8u
// Purpose: Performs the decoding of dynamic huffman rfc1951 compatible format
//
// Parameters:
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of source vector
// ppDst Double pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output
// flush Flush mode
// pLZ77State Pointer to internal decoding state
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsSrcSizeLessExpected The end of block symbol not decoded, so size of source vector less expected
// ippStsDstSizeLessExpected The size of destination vector less expected
// ippStsStreamEnd The end of stream symbol decoded
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeLZ77DynamicHuffFull_8u, (Ipp8u** ppSrc, int* pSrcLen, Ipp8u** ppDst, int* pDstLen, IppLZ77Flush flush, IppLZ77State_8u* pLZ77State))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZ77CopyState_8u
// Purpose: Performs copying the fields of internal state structure
//
// Parameters:
// pLZ77StateSrc Pointer to the internal state for copying from
// pLZ77StateDst Pointer to the internal state for copying to
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeLZ77CopyState_8u, ( IppLZ77State_8u* pLZ77StateSrc, IppLZ77State_8u* pLZ77StateDst ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsLZ77Free
// Purpose: Frees the internal state structure for encoding or decoding.
//
// Parameters:
// pLZ77State Pointer to the internal decoding structure.
//
*/
IPPAPI( void, ippsLZ77Free_8u, (IppLZ77State_8u* pLZ77State) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsAdler32
// Purpose: Computes the adler32(ITUT V.42) checksum for the source vector.
//
// Parameters:
// pSrc Pointer to the source vector.
// srcLen Length of the source vector.
// pAdler32 Pointer to the checksum value.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pSrc pointer is NULL.
// ippStsSizeErr Indicates an error when the length of the source vector is less
// than or equal to zero.
//
*/
IPPAPI( IppStatus, ippsAdler32_8u, (const Ipp8u* pSrc, int srcLen, Ipp32u* pAdler32) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsCRC32
// Purpose: Computes the CRC32(ITUT V.42) checksum for the source vector.
//
// Parameters:
// pSrc Pointer to the source vector.
// srcLen Length of the source vector.
// pCRC32 Pointer to the checksum value.
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when the pSrc pointer is NULL.
// ippStsSizeErr Indicates an error when the length of the source vector is less
// than or equal to zero.
//
*/
IPPAPI( IppStatus, ippsCRC32_8u, (const Ipp8u* pSrc, int srcLen, Ipp32u* pCRC32) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsCRC32C
// Purpose: Computes the CRC32C (the polinomial 0x11EDC6F41) value
// for the source vector.
// Reference: "Optimization of cyclic redundancy-check
// codes with 24 and 32 parity bits". Castagnoli, G.;
// Brauer, S.; Herrmann, M.; Communications,
// IEEE Transactions on Volume 41, Issue 6,
// June 1993 Page(s):883 - 892.
//
// Parameters:
// pSrc Pointer to the source vector
// srcLen Length of the source vector
// pCRC32C Pointer to the CRC32C value
// Return:
// ippStsNoErr No errors
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Length of the source vector is equal zero
//
*/
IPPAPI( IppStatus, ippsCRC32C_8u, (const Ipp8u* pSrc, Ipp32u srcLen, Ipp32u* pCRC32C) )
#if !defined ( _OWN_BLDPCS )
typedef struct IppInflateState {
const Ipp8u* pWindow; /* pointer to the sliding window */
/* (the dictionary for the LZ77 algorithm) */
unsigned int winSize; /* size of the sliding window */
unsigned int tableType; /* type of Huffman code tables */
/* (for example, 0 - tables for Fixed Huffman codes) */
unsigned int tableBufferSize; /* (ENOUGH = 2048) * (sizeof(code) = 4) - */
/* sizeof(IppInflateState) */
} IppInflateState;
typedef enum { /* this type is used as a translator of the inflate_mode type from zlib */
ippTYPE,
ippLEN,
ippLENEXT
} IppInflateMode;
#endif
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsInflateBuildHuffTable
// Purpose: Builds literal/length and distance Huffman code table for
// decoding a block that was compressed with usage dynamic Huffman codes
// according to the "deflate" format (rfc1951)
//
// Parameters:
// pCodeLens Pointer to the common array with literal/length and distance
// Huffman code lengths
// nLitCodeLens Number of literal/length Huffman code lengths
// nDistCodeLens Number of distance Huffman code lengths
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr nLitCodeLens is greater than 286, or nLitCodeLens is greater than 30
// (according to rfc1951)
// ippStsSrcDataErr Invalid literal/length and distance set has been met
// in the common lengths array
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsInflateBuildHuffTable, ( const Ipp16u* pCodeLens,
unsigned int nLitCodeLens,
unsigned int nDistCodeLens,
IppInflateState *pIppInflateState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsInflate_8u
// Purpose: Decodes of the "deflate" format (rfc1951)
// according to the type of Huffman code tables
//
// Parameters:
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of the source vector
// pCode Pointer to the bit buffer
// pCodeLenBits Number of valid bits in the bit buffer
// winIdx Index of the sliding window start position
// ppDst Double pointer to the destination vector
// pDstLen Pointer to the length of the destination vector
// dstIdx Index of the current position in the destination vector
// pMode Pointer to the current decode mode
// pIppInflateState Pointer to the structure that contains decode parameters
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr codeLenBits is greater than 32, or
// winIdx is greater than pIppInflateState->winSize, or
// dstIdx is greater than dstLen
// ippStsSrcDataErr Invalid literal/length and distance set has been met
// during decoding
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsInflate_8u, ( Ipp8u** ppSrc, unsigned int* pSrcLen,
Ipp32u* pCode, unsigned int* pCodeLenBits,
unsigned int winIdx,
Ipp8u** ppDst, unsigned int* pDstLen, unsigned int dstIdx,
IppInflateMode* pMode, IppInflateState *pIppInflateState ))
#if !defined( _OWN_BLDPCS )
typedef struct {
Ipp16u freq;
Ipp16u code;
} IppDeflateFreqTable;
#endif /* _OWN_BLDPCS */
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDeflateLZ77_8u
// Purpose: Perform LZ77 encoding according to
// the compression level
//
// Parameters:
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of the source vector
// pSrcIdx Pointer to the index of the current position in
// the source vector. This parameter is used by
// the function for correlation current possition of
// the source vector and indexes in the hash tables.
// The normalization of this index and the hash tables
// must only be done every 2GB of the source data
// instead of 64K (the zlib approach)
// pWindow Pointer to the sliding window, which is used as
// the dictionary for LZ77 encoding
// winSize Size of the window and the hash prev table
// pHashHead Pointer to heads of the hash chains. This table is
// initialized with (-winSize) value for correct processing
// of the first bytes of the source vector
// pHashPrev Pointer to links to older strings with the same
// hash index
// hashSize Size of the hash head table
// pLitFreqTable Pointer to the literals/lengths frequency table
// pDistFreqTable Pointer to the distances frequency table
// pLitDst Pointer to the literals/lengths destination vector
// pDistDst Pointer to the distances destination vector
// pDstLen Pointer to the length of the destination vectors
// comprLevel Compression level. It is like the zlib compression level
// flush Flush value
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsNoErr No errors
//
*/
IPPAPI( IppStatus, ippsDeflateLZ77_8u, (
const Ipp8u** ppSrc, Ipp32u* pSrcLen, Ipp32u* pSrcIdx,
const Ipp8u* pWindow, Ipp32u winSize,
Ipp32s* pHashHead, Ipp32s* pHashPrev, Ipp32u hashSize,
IppDeflateFreqTable pLitFreqTable[286],
IppDeflateFreqTable pDistFreqTable[30],
Ipp8u* pLitDst, Ipp16u* pDistDst, Ipp32u* pDstLen,
int comprLevel, IppLZ77Flush flush ) )
#if !defined( _OWN_BLDPCS )
typedef struct {
Ipp16u code;
Ipp16u len;
} IppDeflateHuffCode;
#endif /* _OWN_BLDPCS */
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDeflateHuff_8u
// Purpose: Performs Huffman encoding
//
// Parameters:
// pLitSrc Pointer to the literals/lengths source vector
// pDistSrc Pointer to the distances source vector
// pSrcLen Pointer to the length of the source vectors
// pCode Pointer to the bit buffer
// pCodeLenBits Pointer to the number of valid bits in the bit buffer
// pLitHuffCodes Pointer to the literals/lengths Huffman codes
// pDistHuffCodes Pointer to the distances Huffman codes
// pDst Pointer to the destination vector
// pDstIdx Pointer to the index in the destination vector, the zlib
// uses the knowingly sufficient intermediate buffer for
// the Huffman encoding, so we need to know indexes of
// the first (input parameter) and the last (output parameter)
// symbols, which are written by the function
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsNoErr No errors
//
*/
IPPAPI( IppStatus, ippsDeflateHuff_8u, (
const Ipp8u* pLitSrc, const Ipp16u* pDistSrc, Ipp32u srcLen,
Ipp16u* pCode, Ipp32u* pCodeLenBits,
IppDeflateHuffCode pLitHuffCodes[286],
IppDeflateHuffCode pDistHuffCodes[30],
Ipp8u* pDst, Ipp32u* pDstIdx ) )
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDeflateDictionarySet_8u
// Purpose: Presets the user's dictionary for LZ77 encoding
//
// Parameters:
// pDictSrc Pointer to the user's dictionary
// dictLen Length of the user's dictionary
// pHashHeadDst Pointer to heads of the hash chains
// hashSize Size of the hash head table
// pHashPrevDst Pointer to links to older strings with the same
// hash index
// pWindowDst Pointer to the sliding window, which is used as
// the dictionary for LZ77 encoding
// winSize Size of the window and the hash prev table in elements
// comprLevel Compression level. It is like the zlib compression level
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsNoErr No errors
//
*/
IPPAPI( IppStatus, ippsDeflateDictionarySet_8u, (
const Ipp8u* pDictSrc, Ipp32u dictLen,
Ipp32s* pHashHeadDst, Ipp32u hashSize, Ipp32s* pHashPrevDst,
Ipp8u* pWindowDst, Ipp32u winSize, int comprLevel ) )
/* bzip2 - compatible functions */
#if !defined ( _OWN_BLDPCS )
struct RLEState_BZ2;
typedef struct RLEState_BZ2 IppRLEState_BZ2;
#endif
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsRLEGetSize_BZ2_8u
// Purpose: Calculates the size of internal state for bzip2-specific RLE.
// Specific function for bzip2 compatibility.
//
// Parameters:
// pRLEStateSize Pointer to the size of internal state for bzip2-specific RLE
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsRLEGetSize_BZ2_8u, ( int* pRLEStateSize ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeRLEInit_BZ2_8u
// Purpose: Initializes the elements of the bzip2-specific internal state for RLE.
// Specific function for bzip2 compatibility.
//
// Parameters:
// pRLEState Pointer to internal state structure for bzip2 specific RLE
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeRLEInit_BZ2_8u, ( IppRLEState_BZ2* pRLEState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeRLEInitAlloc_BZ2_8u
// Purpose: Allocates the memory and initializes the elements of the bzip2-specific internal state for RLE.
// Specific function for bzip2 compatibility.
//
// Parameters:
// ppRLEState Double pointer to internal state structure for bzip2 specific RLE
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeRLEInitAlloc_BZ2_8u, ( IppRLEState_BZ2** ppRLEState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeRLE_BZ2_8u
// Purpose: Performs the RLE encoding with thresholding = 4.
// Specific function for bzip2 compatibility.
//
// Parameters:
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of source vector
// pDst Pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output
// pRLEState Pointer to internal state structure for bzip2 specific RLE
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsDstSizeLessExpected The size of destination vector less expected
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeRLE_BZ2_8u, ( Ipp8u** ppSrc, int* pSrcLen, Ipp8u* pDst, int* pDstLen, IppRLEState_BZ2* pRLEState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeRLEFlush_BZ2_8u
// Purpose: Performs flushing the rest of data after RLE encoding with thresholding = 4.
// Specific function for bzip2 compatibility.
//
// Parameters:
// pDst Pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output
// pRLEState Pointer to internal state structure for bzip2 specific RLE
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeRLEFlush_BZ2_8u, ( Ipp8u* pDst, int* pDstLen, IppRLEState_BZ2* pRLEState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsRLEGetInUseTable_8u
// Purpose: Service function: gets the pointer to the inUse vector from internal state
// of type IppRLEState_BZ2. Specific function for bzip2 compatibility.
//
// Parameters:
// inUse Pointer to the inUse vector
// pRLEState Pointer to internal state structure for bzip2 specific RLE
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsRLEGetInUseTable_8u, ( Ipp8u inUse[256], IppRLEState_BZ2* pRLEState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsRLEFree_BZ2_8u
// Purpose: Frees the bzip2-specific internal state for RLE.
// Specific function for bzip2 compatibility.
//
// Parameters:
// pRLEState Pointer to internal state structure for bzip2 specific RLE.
//
*/
IPPAPI(void, ippsRLEFree_BZ2_8u, ( IppRLEState_BZ2* pRLEState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeRLE_BZ2_8u
// Purpose: Performs the RLE decoding with thresholding = 4.
// Specific function for bzip2 compatibility.
//
// Parameters:
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of source vector on input,
// pointer to the size of remainder on output
// pDst Pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output.
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsDstSizeLessExpected The size of destination vector less expected
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeRLE_BZ2_8u, (Ipp8u** ppSrc, int* pSrcLen, Ipp8u* pDst, int* pDstLen ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeZ1Z2_BZ2_8u16u
// Purpose: Performs the Z1Z2 encoding.
// Specific function for bzip2 compatibility.
//
// Parameters:
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of source vector on input,
// pointer to the size of remainder on output
// pDst Pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output.
// freqTable[258] Table of frequencies collected for alphabet symbols.
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsDstSizeLessExpected The size of destination vector less expected
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeZ1Z2_BZ2_8u16u, ( Ipp8u** ppSrc, int* pSrcLen, Ipp16u* pDst, int* pDstLen, int freqTable[258] ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeZ1Z2_BZ2_16u8u
// Purpose: Performs the Z1Z2 decoding.
// Specific function for bzip2 compatibility.
//
// Parameters:
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of source vector on input,
// pointer to the size of remainder on output
// pDst Pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output.
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsDstSizeLessExpected The size of destination vector less expected
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeZ1Z2_BZ2_16u8u, ( Ipp16u** ppSrc, int* pSrcLen, Ipp8u* pDst, int* pDstLen ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsReduceDictionary_8u_I
// Purpose: Performs the dictionary reducing.
//
// Parameters:
// inUse[256] Table of 256 values of Ipp8u type.
// pSrcDst Pointer to the source/destination vector
// srcDstLen Length of source/destination vector.
// pSizeDictionary Pointer to the size of dictionary on input and to the size
// of reduced dictionary on output.
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsReduceDictionary_8u_I, ( const Ipp8u inUse[256], Ipp8u* pSrcDst, int srcDstLen, int* pSizeDictionary ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsExpandDictionary_8u_I
// Purpose: Performs the dictionary expanding.
//
// Parameters:
// inUse[256] Table of 256 values of Ipp8u type.
// pSrcDst Pointer to the source/destination vector
// srcDstLen Length of source/destination vector.
// sizeDictionary The size of reduced dictionary on input.
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsExpandDictionary_8u_I, ( const Ipp8u inUse[256], Ipp8u* pSrcDst, int srcDstLen, int sizeDictionary ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsCRC32_BZ2_8u
// Purpose: Performs the CRC32 checksum calculation according to the direct algorithm, which is used in bzip2.
//
// Parameters:
// pSrc Pointer to the source data vector
// srcLen The length of source vector
// pCRC32 Pointer to the value of accumulated CRC32
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Length of the source vector is less or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsCRC32_BZ2_8u, ( const Ipp8u* pSrc, int srcLen, Ipp32u* pCRC32 ))
#if !defined ( _OWN_BLDPCS )
struct EncodeHuffState_BZ2;
typedef struct EncodeHuffState_BZ2 IppEncodeHuffState_BZ2;
struct DecodeHuffState_BZ2;
typedef struct DecodeHuffState_BZ2 IppDecodeHuffState_BZ2;
#endif
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeHuffGetSize_BZ2_16u8u
// Purpose: Calculates the size of internal state for bzip2-specific Huffman coding.
// Specific function for bzip2 compatibility.
//
// Parameters:
// wndSize Size of the block to be processed
// pEncodeHuffStateSize Pointer to the size of internal state for bzip2-specific Huffman coding
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeHuffGetSize_BZ2_16u8u, ( int wndSize, int* pEncodeHuffStateSize ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeHuffInit_BZ2_16u8u
// Purpose: Initializes the elements of the bzip2-specific internal state for Huffman coding.
// Specific function for bzip2 compatibility.
//
// Parameters:
// sizeDictionary The size of the dictionary
// freqTable Table of frequencies of symbols
// pSrc Pointer to the source vector
// srcLen Length of the source vector
// pEncodeHuffState Pointer to internal state structure for bzip2 specific Huffman coding
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeHuffInit_BZ2_16u8u, ( int sizeDictionary, const int freqTable[258], const Ipp16u* pSrc, int srcLen,
IppEncodeHuffState_BZ2* pEncodeHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeHuffInitAlloc_BZ2_16u8u
// Purpose: Allocates the memory and initializes the elements of the bzip2-specific internal state for Huffman coding.
// Specific function for bzip2 compatibility.
//
// Parameters:
// wndSize The size of the input block in bytes
// sizeDictionary The size of the dictionary
// freqTable Table of frequencies of symbols
// pSrc Pointer to the source vector
// srcLen Length of the source vector
// pEncodeHuffState Pointer to internal state structure for bzip2 specific Huffman coding
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeHuffInitAlloc_BZ2_16u8u, ( int wndSize, int sizeDictionary, const int freqTable[258],
const Ipp16u* pSrc, int srcLen, IppEncodeHuffState_BZ2** ppEncodeHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsPackHuffContext_BZ2_16u8u
// Purpose: Performs the bzip2-specific encoding of Huffman context.
// Specific function for bzip2 compatibility.
//
// Parameters:
// pCode Pointer to the bit buffer
// pCodeLenBits Number of valid bits in the bit buffer
// pDst Pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output
// pEncodeHuffState Pointer to internal state structure for bzip2 specific Huffman coding
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsDstSizeLessExpected The size of destination vector less expected
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsPackHuffContext_BZ2_16u8u, ( Ipp32u* pCode, int* pCodeLenBits, Ipp8u* pDst, int* pDstLen,
IppEncodeHuffState_BZ2* pEncodeHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeHuff_BZ2_16u8u
// Purpose: Performs the bzip2-specific Huffman encoding.
// Specific function for bzip2 compatibility.
//
// Parameters:
// pCode Pointer to the bit buffer
// pCodeLenBits Number of valid bits in the bit buffer
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of source vector
// pDst Pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output
// pEncodeHuffState Pointer to internal state structure for bzip2 specific Huffman coding
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsDstSizeLessExpected The size of destination vector less expected
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsEncodeHuff_BZ2_16u8u, ( Ipp32u* pCode, int* pCodeLenBits, Ipp16u** ppSrc, int* pSrcLen,
Ipp8u* pDst, int* pDstLen, IppEncodeHuffState_BZ2* pEncodeHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeHuffFree_BZ2_16u8u
// Purpose: Frees the bzip2-specific internal state for Huffman coding.
// Specific function for bzip2 compatibility.
//
// Parameters:
// pEncodeHuffState Pointer to internal state structure for bzip2 specific Huffman coding.
//
*/
IPPAPI(void, ippsEncodeHuffFree_BZ2_16u8u, ( IppEncodeHuffState_BZ2* pEncodeHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeHuffGetSize_BZ2_8u16u
// Purpose: Calculates the size of internal state for bzip2-specific Huffman decoding.
// Specific function for bzip2 compatibility.
//
// Parameters:
// wndSize Size of the block to be processed
// pDecodeHuffStateSize Pointer to the size of internal state for bzip2-specific Huffman decoding
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeHuffGetSize_BZ2_8u16u, ( int wndSize, int* pDecodeHuffStateSize ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeHuffInit_BZ2_8u16u
// Purpose: Initializes the elements of the bzip2-specific internal state for Huffman decoding.
// Specific function for bzip2 compatibility.
//
// Parameters:
// sizeDictionary The size of the dictionary
// pDecodeHuffState Pointer to internal state structure for bzip2 specific Huffman decoding
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeHuffInit_BZ2_8u16u, ( int sizeDictionary, IppDecodeHuffState_BZ2* pDecodeHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeHuffInitAlloc_BZ2_8u16u
// Purpose: Allocates the memory and initializes the elements of the bzip2-specific internal state for Huffman decoding.
// Specific function for bzip2 compatibility.
//
// Parameters:
// wndSize The size of the input block in bytes
// sizeDictionary The size of the dictionary
// pDecodeHuffState Pointer to internal state structure for bzip2 specific Huffman coding
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeHuffInitAlloc_BZ2_8u16u, ( int wndSize, int sizeDictionary, IppDecodeHuffState_BZ2** ppDecodeHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsUnpackHuffContext_BZ2_8u16u
// Purpose: Performs the bzip2-specific decoding of Huffman context.
// Specific function for bzip2 compatibility.
//
// Parameters:
// pCode Pointer to the bit buffer
// pCodeLenBits Number of valid bits in the bit buffer
// pSrc Pointer to the destination vector
// pSrcLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output
// pDecodeHuffState Pointer to internal state structure for bzip2 specific Huffman decoding.
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsDstSizeLessExpected The size of destination vector less expected
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsUnpackHuffContext_BZ2_8u16u, ( Ipp32u* pCode, int* pCodeLenBits, Ipp8u** ppSrc, int* pSrcLen,
IppDecodeHuffState_BZ2* pDecodeHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeHuff_BZ2_8u16u
// Purpose: Performs the bzip2-specific Huffman decoding.
// Specific function for bzip2 compatibility.
//
// Parameters:
// pCode Pointer to the bit buffer
// pCodeLenBits Number of valid bits in the bit buffer
// ppSrc Double pointer to the source vector
// pSrcLen Pointer to the length of source vector
// pDst Pointer to the destination vector
// pDstLen Pointer to the size of destination buffer on input,
// pointer to the resulting length of the destination vector
// on output
// pDecodeHuffState Pointer to internal state structure for bzip2 specific Huffman decoding.
//
// Return:
// ippStsNullPtrErr One or several pointer(s) is NULL
// ippStsSizeErr Lengths of the source/destination vector are less
// or equal zero
// ippStsDstSizeLessExpected The size of destination vector less expected
// ippStsNoErr No errors
//
*/
IPPAPI(IppStatus, ippsDecodeHuff_BZ2_8u16u, ( Ipp32u* pCode, int* pCodeLenBits, Ipp8u** ppSrc, int* pSrcLen,
Ipp16u* pDst, int* pDstLen, IppDecodeHuffState_BZ2* pDecodeHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeHuffFree_BZ2_8u16u
// Purpose: Frees the bzip2-specific internal state for Huffman decoding.
// Specific function for bzip2 compatibility.
//
// Parameters:
// pDecodeHuffState Pointer to internal state structure for bzip2 specific Huffman coding.
//
*/
IPPAPI(void, ippsDecodeHuffFree_BZ2_8u16u, ( IppDecodeHuffState_BZ2* pDecodeHuffState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCEncodeFree_32s
// Purpose: Frees memory allocated for internal VLCDecode structure.
//
// Arguments:
// pVLCSpec Pointer to pointer to VLCEncoder specification structure.
//
// Return:
//
*/
IPPAPI(void, ippsVLCEncodeFree_32s, (IppsVLCEncodeSpec_32s* pVLCSpec))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCEncodeInitAlloc_32s
// Purpose: ippsVLCEncodeInitAlloc_32s allocates and initializes the size
// for internal VLCEncode structure on the base of Variable Length Code table.
//
// Arguments:
// pInputTable pointer to input table.
// inputTableSize size of this table.
// ppVLCSpec pointer to pointer to VLCEncoder specification structure.
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers
// passed to the function is NULL.
// ippStsVLCInputDataErr Indicates an error when incorrect input is used.
// ippStsMemAllocErr Indicates an error when memory for VLCEncoder
// specification structure was not allocated.
//
*/
IPPAPI(IppStatus, ippsVLCEncodeInitAlloc_32s, (const IppsVLCTable_32s* pInputTable, int inputTableSize, IppsVLCEncodeSpec_32s** ppVLCSpec))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCEncodeInit_32s
// Purpose: ippsVLCEncodeInit_32s initializes the size for internal VLCEncode
// structure on the base of Variable Length Code table.
//
// Arguments:
// pInputTable pointer to input table.
// inputTableSize size of this table.
// pVLCSpec pointer to VLCEncoder specification structure.
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers
// passed to the function is NULL.
// ippStsVLCInputDataErr Indicates an error when incorrect input is used.
//
*/
IPPAPI(IppStatus, ippsVLCEncodeInit_32s, (const IppsVLCTable_32s* pInputTable, int inputTableSize, IppsVLCEncodeSpec_32s* pVLCSpec))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCEncodeGetSize_32s
// Purpose: ippsVLCEncodeGetSize_32s calculates the size for internal VLCEncode
// structure on the base of Variable Length Code table.
//
// Arguments:
// pInputTable pointer to input table.
// inputTableSize size of this table.
// pSize pointer to size of VLCEncoder specification structure.
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers
// passed to the function is NULL.
// ippStsVLCInputDataErr Indicates an error when incorrect input is used.
//
*/
IPPAPI(IppStatus, ippsVLCEncodeGetSize_32s, (const IppsVLCTable_32s* pInputTable, int inputTableSize, Ipp32s* pSize))
/* /////////////////////////////////////////////////////////////////////////////
//
// Name: ippsVLCEncodeBlock_16s1u
// Purpose: ippsVLCEncodeBlock_16s1u encodes dstLen elements from the source
// data pSrc and stores the result in the destination buffer *ppDst.
// In addition, the function advances pointer *ppDst on the number
// successfully written bytes and stores the actual it in ppDst.
// The functions updates *pSrcBitsOffset to the value of the actual
// bit offset in the source buffer *ppDst.
//
// Arguments:
// pSrc pointer to source values array.
// srcLen size of value is array pSrc.
// ppDst pointer to pointer to destination bitstream.
// pDstBitsOffset pointer to in/out bit offset in pDst.
// pVLCSpec pointer to VLCEncoder specification structure.
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers
// passed to the function is NULL.
// ippStsVLCInputDataErr Indicates an error when incorrect input is used.
//
*/
IPPAPI(IppStatus, ippsVLCEncodeBlock_16s1u, (const Ipp16s* pSrc, int srcLen, Ipp8u** ppDst, int* pDstBitsOffset, const IppsVLCEncodeSpec_32s* pVLCSpec))
/* /////////////////////////////////////////////////////////////////////////////
//
// Name: ippsVLCEncodeOne_16s1u
// Purpose: ippsVLCEncodeOne_16s1u uses VLC table specified for
// ippsVLCEncodeInitAlloc_32s function or for ippsVLCEncodeInit_32s function.
//
// Arguments:
// src source value.
// ppDst pointer to pointer to destination bitstream.
// pDstBitsOffset pointer to in/out bit offset in pDst.
// pVLCSpec pointer to VLCEncoder specification structure.
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers
// passed to the function is NULL.
// ippStsVLCInputDataErr Indicates an error when incorrect input is used.
//
*/
IPPAPI(IppStatus, ippsVLCEncodeOne_16s1u, (Ipp16s src, Ipp8u** pDst, int* pDstBitsOffset, const IppsVLCEncodeSpec_32s* pVLCSpec))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCCountBits_16s32s
// Purpose: ippsVLCCountBits_16s32s calculates number of bits necessary for encoding
// source data in pSrc using variable Length Codes specified by pInputTable
// in the function ippsVLCEncodeInitAlloc_32s or in ippsVLCEncodeInit_32s.
//
// Arguments:
// pVLCSpec pointer to pointer to VLCEncoder specification structure.
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers
// passed to the function is NULL.
// ippStsVLCInputDataErr Indicates an error when incorrect input is used.
//
*/
IPPAPI(IppStatus, ippsVLCCountBits_16s32s, (const Ipp16s* pSrc, int srcLen, Ipp32s* pCountBits, const IppsVLCEncodeSpec_32s* pVLCSpec))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCDecodeGetSize_32s
// Purpose: calculates the size for internal VLCDecode structure on
// the base of input parameters
//
// Arguments:
// pInputTable pointer to input table.
// inputTableSize size of this table
// pSubTablesSizes sizes of subTables
// numSubTables num of Subtabtes.
// pSize pointer to size of VLCDecoder specification
// structure
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers
// passed to the function is NULL.
// ippStsVLCUsrTblCodeLengthErr Indicates an error when 1) the maximal length
// of codec in the input table exceeds 32;
// 2) when any size in of subtables in
// pSubTablesSizes is less than one;
// 3)when sum of this values is less than the
// maximal length of codes in the input table.
//
*/
IPPAPI(IppStatus, ippsVLCDecodeGetSize_32s,(const IppsVLCTable_32s *pInputTable,
int inputTableSize,
Ipp32s *pSubTablesSizes,
int numSubTables,
Ipp32s *pSize))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCDecodeInit_32s
// Purpose: initializes internal VLCDecode structure
// based on the input parameters
//
// Arguments:
// pInputTable pointer to input table.
// inputTableSize size of this table
// pSubTablesSizes sizes of subTables
// numSubTables num of Subtabtes.
// pVLCSpec pointer to VLCDecoder specification structure
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers
// passed to the function is NULL.
// ippStsVLCUsrTblCodeLengthErr Indicates an error when 1) the maximal length
// of codec in the input table exceeds 32;
// 2) when any size in of subtables in
// pSubTablesSizes is less than one;
// 3)when sum of this values is less than the
// maximal length of codes in the input table.
//
*/
IPPAPI(IppStatus, ippsVLCDecodeInit_32s,(const IppsVLCTable_32s *pInputTable,
int inputTableSize,
Ipp32s *pSubTablesSizes,
int numSubTables,
IppsVLCDecodeSpec_32s *pVLCSpec))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCDecodeInitAlloc_32s
// Purpose: allocates and initializes internal VLCDecode structure
// based on the input parameters
//
// Arguments:
// pInputTable pointer to input table.
// inputTableSize size of this table
// pSubTablesSizes sizes of subTables
// numSubTables num of Subtabtes.
// ppVLCSpec pointer to pointer VLCDecoder specification structure
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers
// passed to the function is NULL.
// ippStsVLCUsrTblCodeLengthErr Indicates an error when 1) the maximal length
// of codec in the input table exceeds 32;
// 2) when any size in of subtables in
// pSubTablesSizes is less than one;
// 3)when sum of this values is less than the
// maximal length of codes in the input table.
// ippStsMemAllocErr Indicates an error when memory for VLCDecoder
// specification structure was not allocated.
//
*/
IPPAPI(IppStatus, ippsVLCDecodeInitAlloc_32s,(const IppsVLCTable_32s *pInputTable,
int inputTableSize,
Ipp32s *pSubTablesSizes,
int numSubTables,
IppsVLCDecodeSpec_32s **ppVLCSpec))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCDecodeFree_32s
// Purpose: frees memory allocated for internal VLCDecode structure
//
// Arguments:
// pVLCSpec pointer to VLCDecoder specification structure
//
// Return:
//
*/
IPPAPI(void, ippsVLCDecodeFree_32s, (IppsVLCDecodeSpec_32s *pVLCSpec))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCDecodeBlock_1u16s
// Purpose: decodes a dstLen element encoded by VLC code from the source data
// *ppSrc with *pSrcBitsOffset bits offset and stores the result in
// the destination *pDst
//
// Arguments:
// ppSrc pointer to pointer to source input bitstream
// pSrcBitsOffset pointer to in/out source stream bit offset position
// pDst decoded values array
// dstLen number of values to decode into array pDst
// pVLCSpec pointer to VLCDecoder specification structure
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers passed to
// the function is NULL.
// ippStsVLCInputDataErr Indicates an error when incorrect input is used.
// It can indicate that bitstream contain code that is not
// specified inside the used table.
// ippStsBitOffsetErr Indicate an error when offset less than 0 or more than 7.
// ippStsContextMatchErr Indicate an error when pVLCSpec struct was not created by
// ippsVLCDecodeInit_32s or ippsVLCDecodeInitAlloc_32s functions.
//
*/
IPPAPI(IppStatus, ippsVLCDecodeBlock_1u16s,(Ipp8u **ppSrc,
int *pSrcBitsOffset,
Ipp16s *pDst,
int dstLen,
const IppsVLCDecodeSpec_32s *pVLCSpec))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCDecodeOne_1u16s
// Purpose: decodes a single element encoded by VLC code from the source data
// *ppSrc with *pSrcBitsOffset bits offset and stores the result in
// the destination *pDst
//
// Arguments:
// ppSrc pointer to pointer to source input bitstream
// pSrcBitsOffset pointer to in/out source stream bit offset position
// pDst decoded value
// pVLCSpec pointer to VLCDecoder specification structure
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers passed to
// the function is NULL.
// ippStsVLCInputDataErr Indicates an error when incorrect input is used.
// It can indicate that bitstream contain code that is not
// specified inside the used table.
// ippStsBitOffsetErr Indicate an error when offset less than 0 or more than 7.
// ippStsContextMatchErr Indicate an error when pVLCSpec struct was not created by
// ippsVLCDecodeInit_32s or ippsVLCDecodeInitAlloc_32s functions.
//
*/
IPPAPI(IppStatus, ippsVLCDecodeOne_1u16s,(Ipp8u **ppSrc,
int *pSrcBitsOffset,
Ipp16s *pDst,
const IppsVLCDecodeSpec_32s *pVLCSpec))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCDecodeUTupleGetSize_32s
// Purpose: calculates the size for internal VLCDecode structure on
// the base of input parameters
//
// Arguments:
// pInputTable pointer to input table.
// inputTableSize size of this table
// pSubTablesSizes sizes of subTables
// numSubTables num of Subtabtes.
// numElements number of elements in tuple
// numValueBit size of one element value, bit.
// pSize pointer to size of VLCDecoder specification
// structure
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers
// passed to the function is NULL.
// ippStsVLCUsrTblCodeLengthErr Indicates an error when 1) the maximal length
// of codec in the input table exceeds 32;
// 2) when any size in of subtables in
// pSubTablesSizes is less than one;
// 3)when sum of this values is less than the
// maximal length of codes in the input table.
//
*/
IPPAPI(IppStatus, ippsVLCDecodeUTupleGetSize_32s,(const IppsVLCTable_32s *pInputTable,
int inputTableSize,
Ipp32s *pSubTablesSizes,
int numSubTables,
int numElements,
int numValueBit,
Ipp32s *pSize))
/*******************************************************************/
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCDecodeUTupleInit_32s
// Purpose: initializes internal VLCDecode structure
// based on the input parameters
//
// Arguments:
// pInputTable pointer to input table.
// inputTableSize size of this table
// pSubTablesSizes sizes of subTables
// numSubTables num of Subtabtes.
// numElements number of elements in tuple
// numValueBit size of one element value, bit.
// pVLCSpec pointer to VLCDecoder specification structure
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers
// passed to the function is NULL.
// ippStsVLCUsrTblCodeLengthErr Indicates an error when 1) the maximal length
// of codec in the input table exceeds 32;
// 2) when any size in of subtables in
// pSubTablesSizes is less than one;
// 3)when sum of this values is less than the
// maximal length of codes in the input table.
//
*/
IPPAPI(IppStatus, ippsVLCDecodeUTupleInit_32s,(const IppsVLCTable_32s *pInputTable,
int inputTableSize,
Ipp32s *pSubTablesSizes,
int numSubTables,
int numElements,
int numValueBit,
IppsVLCDecodeUTupleSpec_32s *pVLCSpec))
/*******************************************************************/
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCDecodeUTupleInitAlloc_32s
// Purpose: allocates and initializes internal VLCDecode structure
// based on the input parameters
//
// Arguments:
// pInputTable pointer to input table.
// inputTableSize size of this table
// pSubTablesSizes sizes of subTables
// numSubTables num of Subtabtes.
// numElements number of elements in tuple
// numValueBit size of one element value, bit.
// ppVLCSpec pointer to pointer VLCDecoder specification structure
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers
// passed to the function is NULL.
// ippStsVLCUsrTblCodeLengthErr Indicates an error when 1) the maximal length
// of codec in the input table exceeds 32;
// 2) when any size in of subtables in
// pSubTablesSizes is less than one;
// 3)when sum of this values is less than the
// maximal length of codes in the input table.
// ippStsMemAllocErr Indicates an error when memory for VLCDecoder
// specification structure was not allocated.
//
*/
IPPAPI(IppStatus, ippsVLCDecodeUTupleInitAlloc_32s,(const IppsVLCTable_32s *pInputTable,
int inputTableSize,
Ipp32s *pSubTablesSizes,
int numSubTables,
int numElements,
int numValueBit,
IppsVLCDecodeUTupleSpec_32s **ppVLCSpec))
/*******************************************************************/
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCDecodeUTupleFree_32s
// Purpose: frees memory allocated for internal VLCDecode structure
//
// Arguments:
// pVLCSpec pointer to VLCDecoder specification structure
//
// Return:
//
*/
IPPAPI(void, ippsVLCDecodeUTupleFree_32s,(IppsVLCDecodeUTupleSpec_32s *pVLCSpec))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCDecodeUTupleBlock_1u16s
// Purpose: decodes a dstLen element encoded by VLC code from the source data
// *ppSrc with *pSrcBitsOffset bits offset and stores the result in
// the destination *pDst
//
// Arguments:
// ppSrc pointer to pointer to source input bitstream
// pSrcBitsOffset pointer to in/out source stream bit offset position
// pDst decoded values array
// dstLen number of values to decode into array pDst
// pVLCSpec pointer to VLCDecoder specification structure
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers passed to
// the function is NULL.
// ippStsVLCInputDataErr Indicates an error when incorrect input is used.
// It can indicate that bitstream contain code that is not
// specified inside the used table.
// ippStsBitOffsetErr Indicate an error when offset less than 0 or more than 7.
// ippStsContextMatchErr Indicate an error when pVLCSpec struct was not created by
// ippsVLCDecodeInit_32s or ippsVLCDecodeInitAlloc_32s functions.
//
*/
IPPAPI(IppStatus, ippsVLCDecodeUTupleBlock_1u16s,(Ipp8u **ppSrc,
int *pSrcBitsOffset,
Ipp16s *pDst,
int dstLen,
const IppsVLCDecodeUTupleSpec_32s *pVLCSpec))
/*******************************************************************/
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsVLCDecodeUTupleOne_1u16s
// Purpose: decodes a single element encoded by VLC code from the source data
// *ppSrc with *pSrcBitsOffset bits offset and stores the result in
// the destination *pDst
//
// Arguments:
// ppSrc pointer to pointer to source input bitstream
// pSrcBitsOffset pointer to in/out source stream bit offset position
// pDst decoded value
// pVLCSpec pointer to VLCDecoder specification structure
//
// Return:
// ippStsNoErr Indicates no error.
// ippStsNullPtrErr Indicates an error when one or more pointers passed to
// the function is NULL.
// ippStsVLCInputDataErr Indicates an error when incorrect input is used.
// It can indicate that bitstream contain code that is not
// specified inside the used table.
// ippStsBitOffsetErr Indicate an error when offset less than 0 or more than 7.
// ippStsContextMatchErr Indicate an error when pVLCSpec struct was not created by
// ippsVLCDecodeInit_32s or ippsVLCDecodeInitAlloc_32s functions.
//
*/
IPPAPI(IppStatus, ippsVLCDecodeUTupleOne_1u16s,(Ipp8u **ppSrc,
int *pSrcBitsOffset,
Ipp16s *pDst,
const IppsVLCDecodeUTupleSpec_32s *pVLCSpec))
/**************************************************
IPP LZO Definitions
***************************************************/
#if !defined ( _OWN_BLDPCS )
typedef enum {
IppLZO1XST, /* Single-threaded, generic LZO-compatible*/
IppLZO1XMT /* Multi-threaded */
} IppLZOMethod ;
struct LZOState_8u;
typedef struct LZOState_8u IppLZOState_8u;
#endif
/*******************************************************************/
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZOGetSize
// Purpose: returns structure size necessary for compression
//
// Arguments:
// method LZO method to be used during compression
// maxInputLen maximum length of input buffer, which will be processed by Encode
// pSize pointer to size variable
//
// Return:
// ippStsBadArgErr illegal method
// ippStsNullPtrErr NULL pointer detected
// ippStsNoErr no error
//
*/
IPPAPI(IppStatus, ippsEncodeLZOGetSize, (IppLZOMethod method, Ipp32u maxInputLen, Ipp32u *pSize))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZO_8u
// Purpose: compresses specified input buffer
//
// Arguments:
// pSrc input data address
// srcLen input data length
// pDst output buffer address
// pDstLen pointer to resulting length variable, must contain output buffer length upon start
// pLZOState pointer to IppLZOState structure variable
//
// Return:
// ippStsNullPtrErr one of the pointers is NULL
// ippStsDstSizeLessExpected output buffer is too short for compressed data
// ippStsNoErr no error detected
//
*/
IPPAPI(IppStatus, ippsEncodeLZO_8u, (const Ipp8u *pSrc, Ipp32u srcLen, Ipp8u *pDst, Ipp32u *pDstLen, IppLZOState_8u *pLZOState ))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsEncodeLZOInit
// Purpose: initializes IppLZOSate_8u structure
//
// Arguments:
// method LZO compression method desired
// maxInputLen maximum length of input buffer, which will be processed by Encode
// pLZOState pointer to IppLZOState structure variable
//
// Return:
// ippStsNullPtrErr one of the pointers is NULL
// ippStsBadArgErr illegal method
// ippStsNoErr no error detected
//
*/
IPPAPI(IppStatus, ippsEncodeLZOInit_8u, (IppLZOMethod method, Ipp32u maxInputLen, IppLZOState_8u *pLZOState))
/* /////////////////////////////////////////////////////////////////////////////
// Name: ippsDecodeLZO_8u
// Purpose: decompresses specified input buffer to output buffer, returns decompressed data length
// Name: ippsDecodeLZOSafe_8u
// Purpose: decompresses specified input buffer to output buffer with checking output buffer boundaries, returns decompressed data length
//
// Arguments:
// pSrc pointer to input buffer
// srcLen input data length
// pDst pointer to output buffer
// pDstLen pointer to output data length variable. Initially contains output buffer length
//
// Return:
// ippStsNullPtrErr one of the pointers is NULL
// ippStsDstSizeLessExpected output buffer is too short for compressed data
// ippStsSrcSizeLessExpected input buffer data is not complete, i.e. no EOF found
// ippStsBrokenLzoStream ippsDecodeLZOSafe_8u detected output buffer boundary violation
// ippStsNoErr no error detected
//
*/
IPPAPI(IppStatus, ippsDecodeLZO_8u, (const Ipp8u *pSrc, Ipp32u srcLen, Ipp8u *pDst, Ipp32u *pDstLen))
IPPAPI(IppStatus, ippsDecodeLZOSafe_8u, (const Ipp8u *pSrc, Ipp32u srcLen, Ipp8u *pDst, Ipp32u *pDstLen))
#ifdef __cplusplus
}
#endif
#if defined (_IPP_STDCALL_CDECL)
#undef _IPP_STDCALL_CDECL
#define __stdcall __cdecl
#endif
#endif /* __IPPDC_H__ */
/* ////////////////////////////// End of file /////////////////////////////// */