liblzma: Add an internal function lzma_mt_block_size().

This is based lzma_chunk_size() that was included in some
development version of liblzma.
This commit is contained in:
Lasse Collin 2011-04-11 19:16:30 +03:00
parent d119927475
commit 5eefc0086d
2 changed files with 24 additions and 26 deletions

View File

@ -30,11 +30,11 @@ typedef struct {
/// invalid, UINT64_MAX is returned. /// invalid, UINT64_MAX is returned.
uint64_t (*memusage)(const void *options); uint64_t (*memusage)(const void *options);
/// Calculates the minimum sane size for Blocks (or other types of /// Calculates the recommended Uncompressed Size for .xz Blocks to
/// chunks) to which the input data can be split to make /// which the input data can be split to make multithreaded
/// multithreaded encoding possible. If this is NULL, it is assumed /// encoding possible. If this is NULL, it is assumed that
/// that the encoder is fast enough with single thread. /// the encoder is fast enough with single thread.
lzma_vli (*chunk_size)(const void *options); uint64_t (*block_size)(const void *options);
/// Tells the size of the Filter Properties field. If options are /// Tells the size of the Filter Properties field. If options are
/// invalid, UINT32_MAX is returned. If this is NULL, props_size_fixed /// invalid, UINT32_MAX is returned. If this is NULL, props_size_fixed
@ -59,7 +59,7 @@ static const lzma_filter_encoder encoders[] = {
.id = LZMA_FILTER_LZMA1, .id = LZMA_FILTER_LZMA1,
.init = &lzma_lzma_encoder_init, .init = &lzma_lzma_encoder_init,
.memusage = &lzma_lzma_encoder_memusage, .memusage = &lzma_lzma_encoder_memusage,
.chunk_size = NULL, // FIXME .block_size = NULL, // FIXME
.props_size_get = NULL, .props_size_get = NULL,
.props_size_fixed = 5, .props_size_fixed = 5,
.props_encode = &lzma_lzma_props_encode, .props_encode = &lzma_lzma_props_encode,
@ -70,7 +70,7 @@ static const lzma_filter_encoder encoders[] = {
.id = LZMA_FILTER_LZMA2, .id = LZMA_FILTER_LZMA2,
.init = &lzma_lzma2_encoder_init, .init = &lzma_lzma2_encoder_init,
.memusage = &lzma_lzma2_encoder_memusage, .memusage = &lzma_lzma2_encoder_memusage,
.chunk_size = NULL, // FIXME .block_size = &lzma_lzma2_block_size, // FIXME
.props_size_get = NULL, .props_size_get = NULL,
.props_size_fixed = 1, .props_size_fixed = 1,
.props_encode = &lzma_lzma2_props_encode, .props_encode = &lzma_lzma2_props_encode,
@ -81,7 +81,7 @@ static const lzma_filter_encoder encoders[] = {
.id = LZMA_FILTER_X86, .id = LZMA_FILTER_X86,
.init = &lzma_simple_x86_encoder_init, .init = &lzma_simple_x86_encoder_init,
.memusage = NULL, .memusage = NULL,
.chunk_size = NULL, .block_size = NULL,
.props_size_get = &lzma_simple_props_size, .props_size_get = &lzma_simple_props_size,
.props_encode = &lzma_simple_props_encode, .props_encode = &lzma_simple_props_encode,
}, },
@ -91,7 +91,7 @@ static const lzma_filter_encoder encoders[] = {
.id = LZMA_FILTER_POWERPC, .id = LZMA_FILTER_POWERPC,
.init = &lzma_simple_powerpc_encoder_init, .init = &lzma_simple_powerpc_encoder_init,
.memusage = NULL, .memusage = NULL,
.chunk_size = NULL, .block_size = NULL,
.props_size_get = &lzma_simple_props_size, .props_size_get = &lzma_simple_props_size,
.props_encode = &lzma_simple_props_encode, .props_encode = &lzma_simple_props_encode,
}, },
@ -101,7 +101,7 @@ static const lzma_filter_encoder encoders[] = {
.id = LZMA_FILTER_IA64, .id = LZMA_FILTER_IA64,
.init = &lzma_simple_ia64_encoder_init, .init = &lzma_simple_ia64_encoder_init,
.memusage = NULL, .memusage = NULL,
.chunk_size = NULL, .block_size = NULL,
.props_size_get = &lzma_simple_props_size, .props_size_get = &lzma_simple_props_size,
.props_encode = &lzma_simple_props_encode, .props_encode = &lzma_simple_props_encode,
}, },
@ -111,7 +111,7 @@ static const lzma_filter_encoder encoders[] = {
.id = LZMA_FILTER_ARM, .id = LZMA_FILTER_ARM,
.init = &lzma_simple_arm_encoder_init, .init = &lzma_simple_arm_encoder_init,
.memusage = NULL, .memusage = NULL,
.chunk_size = NULL, .block_size = NULL,
.props_size_get = &lzma_simple_props_size, .props_size_get = &lzma_simple_props_size,
.props_encode = &lzma_simple_props_encode, .props_encode = &lzma_simple_props_encode,
}, },
@ -121,7 +121,7 @@ static const lzma_filter_encoder encoders[] = {
.id = LZMA_FILTER_ARMTHUMB, .id = LZMA_FILTER_ARMTHUMB,
.init = &lzma_simple_armthumb_encoder_init, .init = &lzma_simple_armthumb_encoder_init,
.memusage = NULL, .memusage = NULL,
.chunk_size = NULL, .block_size = NULL,
.props_size_get = &lzma_simple_props_size, .props_size_get = &lzma_simple_props_size,
.props_encode = &lzma_simple_props_encode, .props_encode = &lzma_simple_props_encode,
}, },
@ -131,7 +131,7 @@ static const lzma_filter_encoder encoders[] = {
.id = LZMA_FILTER_SPARC, .id = LZMA_FILTER_SPARC,
.init = &lzma_simple_sparc_encoder_init, .init = &lzma_simple_sparc_encoder_init,
.memusage = NULL, .memusage = NULL,
.chunk_size = NULL, .block_size = NULL,
.props_size_get = &lzma_simple_props_size, .props_size_get = &lzma_simple_props_size,
.props_encode = &lzma_simple_props_encode, .props_encode = &lzma_simple_props_encode,
}, },
@ -141,7 +141,7 @@ static const lzma_filter_encoder encoders[] = {
.id = LZMA_FILTER_DELTA, .id = LZMA_FILTER_DELTA,
.init = &lzma_delta_encoder_init, .init = &lzma_delta_encoder_init,
.memusage = &lzma_delta_coder_memusage, .memusage = &lzma_delta_coder_memusage,
.chunk_size = NULL, .block_size = NULL,
.props_size_get = NULL, .props_size_get = NULL,
.props_size_fixed = 1, .props_size_fixed = 1,
.props_encode = &lzma_delta_props_encode, .props_encode = &lzma_delta_props_encode,
@ -226,20 +226,19 @@ lzma_raw_encoder_memusage(const lzma_filter *filters)
} }
/* extern uint64_t
extern LZMA_API(lzma_vli) lzma_mt_block_size(const lzma_filter *filters)
lzma_chunk_size(const lzma_filter *filters)
{ {
lzma_vli max = 0; uint64_t max = 0;
for (size_t i = 0; filters[i].id != LZMA_VLI_UNKNOWN; ++i) { for (size_t i = 0; filters[i].id != LZMA_VLI_UNKNOWN; ++i) {
const lzma_filter_encoder *const fe const lzma_filter_encoder *const fe
= encoder_find(filters[i].id); = encoder_find(filters[i].id);
if (fe->chunk_size != NULL) { if (fe->block_size != NULL) {
const lzma_vli size const uint64_t size
= fe->chunk_size(filters[i].options); = fe->block_size(filters[i].options);
if (size == LZMA_VLI_UNKNOWN) if (size == 0)
return LZMA_VLI_UNKNOWN; return 0;
if (size > max) if (size > max)
max = size; max = size;
@ -248,7 +247,6 @@ lzma_chunk_size(const lzma_filter *filters)
return max; return max;
} }
*/
extern LZMA_API(lzma_ret) extern LZMA_API(lzma_ret)

View File

@ -16,8 +16,8 @@
#include "common.h" #include "common.h"
// FIXME: Might become a part of the public API once finished. // FIXME: Might become a part of the public API.
// extern lzma_vli lzma_chunk_size(const lzma_filter *filters); extern uint64_t lzma_mt_block_size(const lzma_filter *filters);
extern lzma_ret lzma_raw_encoder_init( extern lzma_ret lzma_raw_encoder_init(