Files
UnrealEngine/Engine/Source/ThirdParty/Blosc/c-blosc-1.21.0/examples/simple.c
2025-05-18 13:04:45 +08:00

89 lines
2.1 KiB
C

/*
Copyright (C) 2014 Francesc Alted
http://blosc.org
License: MIT (see LICENSE.txt)
Example program demonstrating use of the Blosc filter from C code.
To compile this program:
$ gcc simple.c -o simple -lblosc
or, if you don't have the blosc library installed:
$ gcc -O3 -msse2 simple.c -I../blosc -o simple -L../build/blosc
Using MSVC on Windows:
$ cl /arch:SSE2 /Ox /Fesimple.exe /Iblosc examples\simple.c blosc\blosc.c blosc\blosclz.c blosc\shuffle.c blosc\shuffle-sse2.c blosc\shuffle-generic.c blosc\bitshuffle-generic.c blosc\bitshuffle-sse2.c
To run:
$ ./simple
Blosc version info: 1.4.2.dev ($Date:: 2014-07-08 #$)
Compression: 4000000 -> 158494 (25.2x)
Decompression succesful!
Succesful roundtrip!
*/
#include <stdio.h>
#include <blosc.h>
#define SIZE 100*100*100
int main(){
static float data[SIZE];
static float data_out[SIZE];
static float data_dest[SIZE];
int isize = SIZE*sizeof(float), osize = SIZE*sizeof(float);
int dsize = SIZE*sizeof(float), csize;
int i;
for(i=0; i<SIZE; i++){
data[i] = i;
}
/* Register the filter with the library */
printf("Blosc version info: %s (%s)\n",
BLOSC_VERSION_STRING, BLOSC_VERSION_DATE);
/* Initialize the Blosc compressor */
blosc_init();
/* Compress with clevel=5 and shuffle active */
csize = blosc_compress(5, 1, sizeof(float), isize, data, data_out, osize);
if (csize == 0) {
printf("Buffer is uncompressible. Giving up.\n");
return 1;
}
else if (csize < 0) {
printf("Compression error. Error code: %d\n", csize);
return csize;
}
printf("Compression: %d -> %d (%.1fx)\n", isize, csize, (1.*isize) / csize);
/* Decompress */
dsize = blosc_decompress(data_out, data_dest, dsize);
if (dsize < 0) {
printf("Decompression error. Error code: %d\n", dsize);
return dsize;
}
printf("Decompression succesful!\n");
/* After using it, destroy the Blosc environment */
blosc_destroy();
for(i=0;i<SIZE;i++){
if(data[i] != data_dest[i]) {
printf("Decompressed data differs from original!\n");
return -1;
}
}
printf("Succesful roundtrip!\n");
return 0;
}