⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zlibscheme.c

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 C
字号:
/*//////////////////////////////// "bwtscheme.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) 2005 Intel Corporation. All Rights Reserved.//////     higher level functions of IPP DC ( data compression ) domain for//     BWT, MTF, RLE and Huffman encoding/decoding usage*/#include "zlibscheme.h"/* =========================================================================== * * This function was taken from ZLIB and tuned up to work in this sample * =========================================================================== */int CompressZLIB( Ipp8u * pSrc, int   srcLen, Ipp8u * pDst, int * dstLen ) {    z_stream stream;    int err;    stream.next_in   = pSrc;    stream.avail_in  = srcLen;    stream.next_out  = pDst;    stream.avail_out = *dstLen;    if (stream.avail_out != (uInt)(*dstLen)) return Z_BUF_ERROR;    stream.zalloc = (alloc_func)0;    stream.zfree  = (free_func)0;    stream.opaque = (voidpf)0;    err = deflateInit(&stream, Z_DEFAULT_COMPRESSION);    if (err != Z_OK) return err;    err = deflate(&stream, Z_FINISH);    if (err != Z_STREAM_END) {        deflateEnd(&stream);        return err == Z_OK ? Z_BUF_ERROR : err;    }    *dstLen = stream.total_out;    err = deflateEnd(&stream);    return err;}/* =========================================================================== * * This function was taken from ZLIB and tuned up to work in this sample * =========================================================================== */int DecompressZLIB( Ipp8u * pSrc, int   srcLen, Ipp8u * pDst, int * dstLen ) {    z_stream stream;    int err;    stream.next_in   = pSrc;    stream.avail_in  = srcLen;    stream.next_out  = pDst;    stream.avail_out = *dstLen;    if (stream.avail_out != (uInt)(*dstLen)) return Z_BUF_ERROR;    stream.zalloc    = (alloc_func)0;    stream.zfree     = (free_func)0;    err = inflateInit(&stream);    if (err != Z_OK) return err;    err = inflate(&stream, Z_FINISH);    if (err != Z_STREAM_END) {        inflateEnd(&stream);        if ( err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))            return Z_DATA_ERROR;        return err;    }    *dstLen = stream.total_out;    err = inflateEnd(&stream);    return err;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -