mirror of
https://git.tukaani.org/xz.git
synced 2024-04-04 12:36:23 +02:00
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:
parent
d119927475
commit
5eefc0086d
2 changed files with 24 additions and 26 deletions
|
@ -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)
|
||||||
|
|
|
@ -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(
|
||||||
|
|
Loading…
Reference in a new issue