liblzma: Simple/BCJ filters: Allow disabling generic BCJ options.

This will be needed for the ARM64 BCJ filter as it will use
its own options struct.
This commit is contained in:
Lasse Collin 2022-09-17 22:42:18 +03:00
parent c3592d0a55
commit 177bdc922c
8 changed files with 10 additions and 9 deletions

View File

@ -49,7 +49,7 @@ arm_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter_info *filters, bool is_encoder) const lzma_filter_info *filters, bool is_encoder)
{ {
return lzma_simple_coder_init(next, allocator, filters, return lzma_simple_coder_init(next, allocator, filters,
&arm_code, 0, 4, 4, is_encoder); &arm_code, 0, 4, 4, is_encoder, true);
} }

View File

@ -54,7 +54,7 @@ armthumb_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter_info *filters, bool is_encoder) const lzma_filter_info *filters, bool is_encoder)
{ {
return lzma_simple_coder_init(next, allocator, filters, return lzma_simple_coder_init(next, allocator, filters,
&armthumb_code, 0, 4, 2, is_encoder); &armthumb_code, 0, 4, 2, is_encoder, true);
} }

View File

@ -90,7 +90,7 @@ ia64_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter_info *filters, bool is_encoder) const lzma_filter_info *filters, bool is_encoder)
{ {
return lzma_simple_coder_init(next, allocator, filters, return lzma_simple_coder_init(next, allocator, filters,
&ia64_code, 0, 16, 16, is_encoder); &ia64_code, 0, 16, 16, is_encoder, true);
} }

View File

@ -54,7 +54,7 @@ powerpc_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter_info *filters, bool is_encoder) const lzma_filter_info *filters, bool is_encoder)
{ {
return lzma_simple_coder_init(next, allocator, filters, return lzma_simple_coder_init(next, allocator, filters,
&powerpc_code, 0, 4, 4, is_encoder); &powerpc_code, 0, 4, 4, is_encoder, true);
} }

View File

@ -237,7 +237,7 @@ lzma_simple_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
size_t (*filter)(void *simple, uint32_t now_pos, size_t (*filter)(void *simple, uint32_t now_pos,
bool is_encoder, uint8_t *buffer, size_t size), bool is_encoder, uint8_t *buffer, size_t size),
size_t simple_size, size_t unfiltered_max, size_t simple_size, size_t unfiltered_max,
uint32_t alignment, bool is_encoder) uint32_t alignment, bool is_encoder, bool is_generic_bcj)
{ {
// Allocate memory for the lzma_simple_coder structure if needed. // Allocate memory for the lzma_simple_coder structure if needed.
lzma_simple_coder *coder = next->coder; lzma_simple_coder *coder = next->coder;
@ -270,7 +270,7 @@ lzma_simple_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
} }
} }
if (filters[0].options != NULL) { if (is_generic_bcj && filters[0].options != NULL) {
const lzma_options_bcj *simple = filters[0].options; const lzma_options_bcj *simple = filters[0].options;
coder->now_pos = simple->start_offset; coder->now_pos = simple->start_offset;
if (coder->now_pos & (alignment - 1)) if (coder->now_pos & (alignment - 1))

View File

@ -69,6 +69,6 @@ extern lzma_ret lzma_simple_coder_init(lzma_next_coder *next,
size_t (*filter)(void *simple, uint32_t now_pos, size_t (*filter)(void *simple, uint32_t now_pos,
bool is_encoder, uint8_t *buffer, size_t size), bool is_encoder, uint8_t *buffer, size_t size),
size_t simple_size, size_t unfiltered_max, size_t simple_size, size_t unfiltered_max,
uint32_t alignment, bool is_encoder); uint32_t alignment, bool is_encoder, bool is_generic_bcj);
#endif #endif

View File

@ -61,7 +61,7 @@ sparc_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter_info *filters, bool is_encoder) const lzma_filter_info *filters, bool is_encoder)
{ {
return lzma_simple_coder_init(next, allocator, filters, return lzma_simple_coder_init(next, allocator, filters,
&sparc_code, 0, 4, 4, is_encoder); &sparc_code, 0, 4, 4, is_encoder, true);
} }

View File

@ -128,7 +128,8 @@ x86_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter_info *filters, bool is_encoder) const lzma_filter_info *filters, bool is_encoder)
{ {
const lzma_ret ret = lzma_simple_coder_init(next, allocator, filters, const lzma_ret ret = lzma_simple_coder_init(next, allocator, filters,
&x86_code, sizeof(lzma_simple_x86), 5, 1, is_encoder); &x86_code, sizeof(lzma_simple_x86), 5, 1, is_encoder,
true);
if (ret == LZMA_OK) { if (ret == LZMA_OK) {
lzma_simple_coder *coder = next->coder; lzma_simple_coder *coder = next->coder;