Intel® Integrated Performance Primitives (Intel® IPP) Developer Guide and Reference
A newer version of this document is available. Customers should click here to go to the newest version.
Visible to Intel only — GUID: GUID-EA36DAE6-CFB9-4D4C-A0AA-2B9830B6A138
Visible to Intel only — GUID: GUID-EA36DAE6-CFB9-4D4C-A0AA-2B9830B6A138
EncodeLZ4HashTableGetSize
Calculates the size of the LZ4 hash table.
Syntax
IppStatus ippsEncodeLZ4HashTableGetSize(int* pHashTableSize);
Include Files
ippdc.h
Domain Dependencies
Headers: ippcore.h, ippvm.h, ipps.h
Libraries: ippcore.lib, ippvm.lib, ipps.lib
Parameters
pHashTableSize |
Pointer to the variable containing the size of the LZ4 hash table. |
Description
This function calculates the size of the memory buffer that must be allocated for the LZ4 hash table.
Return Values
ippStsNoErr |
Indicates no error. |
ippStsNullPtrErr |
Indicates an error if the pHashTableSize pointer is NULL. |
Example
/******************************************************************************* * Copyright 2015 Intel Corporation. * * * This software and the related documents are Intel copyrighted materials, and your use of them is governed by * the express license under which they were provided to you ('License'). Unless the License provides otherwise, * you may not use, modify, copy, publish, distribute, disclose or transmit this software or the related * documents without Intel's prior written permission. * This software and the related documents are provided as is, with no express or implied warranties, other than * those that are expressly stated in the License. *******************************************************************************/ /* The example below shows how to use the functions: ippsEncodeLZ4HashTableGetSize_8u ippsEncodeLZ4HashTableInit_8u ippsEncodeLZ4_8u ippsDecodeLZ4_8u */ #include <stdio.h> #include <string.h> #include <ipp/ippdc.h> #include <ipp/ipps.h> /* Next two defines are created to simplify code reading and understanding */ #define EXIT_MAIN exitLine: /* Label for Exit */ #define check_sts(st) if((st) != ippStsNoErr) goto exitLine; /* Go to Exit if Intel(R) Integrated Performance Primitives (Intel(R) IPP) function returned status different from ippStsNoErr */ #define TEST_SIZE (1024) int main(void) { Ipp8u *srcBuf = NULL, *comprBuf = NULL, *decomprBuf = NULL, *hashTable = NULL; IppStatus st = ippStsNoErr; int hashSize = 0, comprLen = TEST_SIZE + TEST_SIZE / 255 + 16, /* Extra bytes for uncompressible data */ decomprLen = TEST_SIZE + 33; int i; srcBuf = ippsMalloc_8u(TEST_SIZE); decomprBuf = ippsMalloc_8u(decomprLen); /* Spare bytes for "wild" (non-safe) decompression */ comprBuf = ippsMalloc_8u(comprLen); /* Initialize source buffer */ check_sts( st = ippsVectorJaehne_8u(srcBuf, TEST_SIZE, IPP_MAX_8U) ) for(i = 0; i < TEST_SIZE; i++) srcBuf[i] >>= 6; /* Decrease source data entropy */ /* Init and allocate hash table */ check_sts( st = ippsEncodeLZ4HashTableGetSize_8u(&hashSize) ) hashTable = ippsMalloc_8u(hashSize); check_sts( st = ippsEncodeLZ4HashTableInit_8u(hashTable, TEST_SIZE) ) /* Compress source data */ check_sts( st = ippsEncodeLZ4_8u((const Ipp8u*)srcBuf, TEST_SIZE, comprBuf, &comprLen, hashTable) ) /* Print compression result */ printf("Compression: %d bytes compressed into %d bytes\n", TEST_SIZE, comprLen); /* Decompression */ decomprLen = TEST_SIZE + 33; check_sts( st = ippsDecodeLZ4_8u((const Ipp8u*)comprBuf, comprLen, decomprBuf, &decomprLen) ) /* Check */ if(decomprLen == TEST_SIZE)/* Decompressed size must be equal to source data size */ { if(memcmp(srcBuf, decomprBuf, TEST_SIZE) != 0) { printf("Wrong decompression!\n"); st = ippStsErr; } else printf("Decompressed by ippsDecodeLZ4_8u OK\n"); } else printf("Invalid decompressed length %d\n", decomprLen); EXIT_MAIN ippsFree(srcBuf); ippsFree(comprBuf); ippsFree(decomprBuf); ippsFree(hashTable); return (int)st; }