예제 #1
0
int
adapt_init(void **data, int *level, int nthreads, uint64_t chunksize,
	   int file_version, compress_op_t op)
{
	struct adapt_data *adat = (struct adapt_data *)(*data);
	int rv = 0, lv = 1;

	if (!adat) {
		adat = (struct adapt_data *)slab_alloc(NULL, sizeof (struct adapt_data));
		adat->adapt_mode = 1;
		rv = ppmd_state_init(&(adat->ppmd_data), level, 0);

		/*
		 * LZ4 is used to tackle some embedded archive headers and/or zero paddings in
		 * otherwise incompressible data. So we always use it at the lowest and fastest
		 * compression level.
		 */
		if (rv == 0)
			rv = lz4_init(&(adat->lz4_data), &lv, nthreads, chunksize, file_version, op);
		adat->lzma_data = NULL;
		adat->bsc_data = NULL;
		*data = adat;
		if (*level > 9) *level = 9;
	}
	lzma_count = 0;
	bzip2_count = 0;
	ppmd_count = 0;
	bsc_count = 0;
	lz4_count = 0;
	return (rv);
}
예제 #2
0
int
ppmd_init(void **data, int *level, int nthreads, uint64_t chunksize,
	  int file_version, compress_op_t op)
{
	return (ppmd_state_init(data, level, 1));
}