Temp commit. Sound

This commit is contained in:
korenkonder
2022-10-03 15:54:28 +03:00
parent 64c1775f92
commit a15befd8fb
232 changed files with 19396 additions and 12396 deletions
+38 -6
View File
@@ -34,6 +34,37 @@ namespace deflate {
return result >= 0 ? result : result - 0x10;
}
int32_t compress_gzip(const void* src, size_t src_length, void** dst,
size_t* dst_length, int32_t compression_level, const char* file_name) {
if (!src_length)
return -1;
else if (!src)
return -2;
else if (!dst)
return -3;
else if (!dst_length)
return -4;
struct libdeflate_compressor* c = libdeflate_alloc_compressor(compression_level);
if (!c)
return -5;
int32_t result = compress_static(c, src, src_length, dst, dst_length, compression_level, MODE_GZIP);
libdeflate_free_compressor(c);
if (result < 0)
return result - 0x10;
size_t file_name_length = utf8_length(file_name);
void* temp = force_malloc(*dst_length + file_name_length + 1);
size_t t = (size_t)temp;
size_t d = (size_t)*dst;
memcpy((void*)t, (void*)d, 0x0A);
memcpy((void*)(t + 0x0A), file_name, file_name_length + 1);
memcpy((void*)(t + 0x0A + file_name_length + 1), (void*)(d + 0x0A), *dst_length - 0x0A);
((uint8_t*)t)[0x03] |= 0x08;
return result;
}
int32_t decompress(const void* src, size_t src_length, void** dst,
size_t* dst_length, mode mode) {
if (!src_length)
@@ -69,6 +100,7 @@ namespace deflate {
dst_max_length = libdeflate_deflate_compress_bound(c, src_length);
break;
}
*dst = force_malloc(dst_max_length);
if (!*dst)
return -1;
@@ -93,12 +125,12 @@ namespace deflate {
void* temp = force_malloc(dst_act_length);
if (!temp) {
free(*dst);
free_def(*dst);
return -2;
}
memcpy(temp, *dst, dst_act_length);
free(*dst);
free_def(*dst);
*dst = temp;
*dst_length = dst_act_length;
return 0;
@@ -126,11 +158,11 @@ namespace deflate {
switch (result) {
case LIBDEFLATE_BAD_DATA:
free(*dst);
free_def(*dst);
return -2;
break;
case LIBDEFLATE_INSUFFICIENT_SPACE:
free(*dst);
free_def(*dst);
*dst_length *= 2;
decompress_static(d, src, src_length, dst, dst_length, mode);
break;
@@ -140,12 +172,12 @@ namespace deflate {
void* temp = force_malloc(dst_act_length);
if (!temp) {
free(*dst);
free_def(*dst);
return -3;
}
memcpy(temp, *dst, dst_act_length);
free(*dst);
free_def(*dst);
*dst = temp;
*dst_length = dst_act_length;
break;