37#ifndef CCRUSH_LIBRARY_H
38#define CCRUSH_LIBRARY_H
44#if defined(_WIN32) && defined(CCRUSH_DLL)
45#ifdef CCRUSH_BUILD_DLL
46#define CCRUSH_API __declspec(dllexport)
48#define CCRUSH_API __declspec(dllimport)
61#define CCRUSH_VERSION 210
66#define CCRUSH_VERSION_STR "2.1.0"
68#ifndef CCRUSH_MAX_BUFFER_SIZE_KiB
72#define CCRUSH_MAX_BUFFER_SIZE_KiB (1024 * 256)
75#ifndef CCRUSH_DEFAULT_CHUNKSIZE
79#define CCRUSH_DEFAULT_CHUNKSIZE (1024 * 256)
85#define CCRUSH_ERROR_INVALID_ARGS 1000
90#define CCRUSH_ERROR_BUFFERSIZE_TOO_LARGE 1001
95#define CCRUSH_ERROR_FILE_ACCESS_FAILED 1002
100#define CCRUSH_ERROR_OUT_OF_MEMORY 2000
105#define CCRUSH_MIN(x, y) (((x) < (y)) ? (x) : (y))
110#define CCRUSH_MAX(x, y) (((x) > (y)) ? (x) : (y))
112#ifndef CCRUSH_MAX_WIN_FILEPATH_LENGTH
116#define CCRUSH_MAX_WIN_FILEPATH_LENGTH (1024 * 32)
129CCRUSH_API
int ccrush_compress(
const uint8_t* data,
size_t data_length, uint32_t buffer_size_kib,
int level, uint8_t** out,
size_t* out_length);
139CCRUSH_API
int ccrush_compress_file(
const char* input_file_path,
const char* output_file_path, uint32_t buffer_size_kib,
int level);
151CCRUSH_API
int ccrush_compress_file_raw(FILE* input_file, FILE* output_file, uint32_t buffer_size_kib,
int level,
int close_input_file,
int close_output_file);
162CCRUSH_API
int ccrush_decompress(
const uint8_t* data,
size_t data_length, uint32_t buffer_size_kib, uint8_t** out,
size_t* out_length);
171CCRUSH_API
int ccrush_decompress_file(
const char* input_file_path,
const char* output_file_path, uint32_t buffer_size_kib);
182CCRUSH_API
int ccrush_decompress_file_raw(FILE* input_file, FILE* output_file, uint32_t buffer_size_kib,
int close_input_file,
int close_output_file);
CCRUSH_API int ccrush_decompress_file_raw(FILE *input_file, FILE *output_file, uint32_t buffer_size_kib, int close_input_file, int close_output_file)
CCRUSH_API int ccrush_compress_file_raw(FILE *input_file, FILE *output_file, uint32_t buffer_size_kib, int level, int close_input_file, int close_output_file)
CCRUSH_API int ccrush_decompress_file(const char *input_file_path, const char *output_file_path, uint32_t buffer_size_kib)
CCRUSH_API int ccrush_compress_file(const char *input_file_path, const char *output_file_path, uint32_t buffer_size_kib, int level)
static uint64_t ccrush_nextpow2(uint64_t n)
Definition ccrush.h:208
CCRUSH_API uint32_t ccrush_get_version_nr()
CCRUSH_API void ccrush_free(void *mem)
CCRUSH_API int ccrush_compress(const uint8_t *data, size_t data_length, uint32_t buffer_size_kib, int level, uint8_t **out, size_t *out_length)
CCRUSH_API char * ccrush_get_version_nr_string()
CCRUSH_API int ccrush_decompress(const uint8_t *data, size_t data_length, uint32_t buffer_size_kib, uint8_t **out, size_t *out_length)