Skip to content
Snippets Groups Projects
Commit 98ec18e6 authored by Dominik Loidolt's avatar Dominik Loidolt
Browse files

Refactor compression size bound calculation

parent bb25700a
Branches
No related tags found
1 merge request!26Adapt cmp_tool to the chunk decompression
...@@ -24,7 +24,14 @@ ...@@ -24,7 +24,14 @@
#include "common/cmp_entity.h" #include "common/cmp_entity.h"
#define ROUND_UP_TO_4(x) ((((x)+3)*4)/4) #define ROUND_UP_TO_4(x) ((((x)+3)/4)*4)
#define COMPRESS_CHUNK_BOUND_UNSAFE(chunk_size, num_col) ( \
ROUND_UP_TO_4(NON_IMAGETTE_HEADER_SIZE + \
(num_col) * CMP_COLLECTION_FILD_SIZE + \
(chunk_size) \
) \
)
/** /**
...@@ -44,8 +51,12 @@ ...@@ -44,8 +51,12 @@
*/ */
#define COMPRESS_CHUNK_BOUND(chunk_size, num_col) ( \ #define COMPRESS_CHUNK_BOUND(chunk_size, num_col) ( \
(uint32_t)ROUND_UP_TO_4(NON_IMAGETTE_HEADER_SIZE+(chunk_size)+(num_col)*CMP_COLLECTION_FILD_SIZE) > (uint32_t)CMP_ENTITY_MAX_SIZE ? 0 \ (num_col) > 0 && \
: ROUND_UP_TO_4(NON_IMAGETTE_HEADER_SIZE+(chunk_size)+(num_col)*CMP_COLLECTION_FILD_SIZE) \ (num_col) <= CMP_ENTITY_MAX_SIZE/COLLECTION_HDR_SIZE && \
(chunk_size) >= COLLECTION_HDR_SIZE * (num_col) && \
(chunk_size) <= CMP_ENTITY_MAX_SIZE && \
COMPRESS_CHUNK_BOUND_UNSAFE(chunk_size, num_col) <= CMP_ENTITY_MAX_SIZE ? \
COMPRESS_CHUNK_BOUND_UNSAFE(chunk_size, num_col) : 0 \
) )
......
...@@ -2737,7 +2737,7 @@ uint32_t compress_chunk_cmp_size_bound(const void *chunk, size_t chunk_size) ...@@ -2737,7 +2737,7 @@ uint32_t compress_chunk_cmp_size_bound(const void *chunk, size_t chunk_size)
} }
for (read_bytes = 0; for (read_bytes = 0;
read_bytes < (int32_t)chunk_size-COLLECTION_HDR_SIZE; read_bytes <= (int32_t)chunk_size-COLLECTION_HDR_SIZE;
read_bytes += cmp_col_get_size((const struct collection_hdr *)((const uint8_t *)chunk + read_bytes))) read_bytes += cmp_col_get_size((const struct collection_hdr *)((const uint8_t *)chunk + read_bytes)))
num_col++; num_col++;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment