#ifndef SPRESS_HEADER #define SPRESS_HEADER #define SPRESS_DEBUG (0) #include #include typedef uint32_t size_t; typedef struct spress_header { uint16_t magic; /* 0xed2b */ uint8_t major_version; /* (0x1) - reject images with higher major versions */ uint8_t minor_version; /* (0x0) - allow images with higer minor versions */ uint8_t file_hdr_sz; /* file header size */ uint8_t chunk_hdr_sz; /* chunk header size */ uint16_t chunk_sz; /* chunk size */ uint32_t compress_sz; /* compress file size */ uint32_t decompress_sz; /* decompress file size */ } spress_header_t; #define SPRESS_HEADER_MAGIC 0xed2b #define SPRESS_BLK_SIZE sizeof(uint32_t) #define SPRESS_BLK_MIN 2 #define SPRESS_BLK_MAX 128 #define CHUNK_TYPE_RAW 0x0 #define CHUNK_TYPE_FILL 0x1 #define CHUNK_TYPE_MASK 0x1 typedef struct chunk_header { uint8_t data_sz; /* size for chunk data (bit0: 0-raw, 1-fill) */ } chunk_header_t; size_t spr_size_decompressed(const char* source); size_t spr_size_compressed(const char* source); size_t spr_compress(const char* source, char* destination, size_t size); size_t spr_decompress(const char* source, char* destination); size_t spr_compress_index(const char* source, char* destination, size_t size); size_t spr_compress_data(const char* source, char* destination, size_t size); #endif