+WIMLIBAPI u64
+wimlib_get_compressor_needed_memory(enum wimlib_compression_type ctype,
+ size_t max_block_size,
+ const struct wimlib_compressor_params_header *extra_params)
+{
+ const struct compressor_ops *ops;
+ const struct wimlib_compressor_params_header *params;
+
+ if (!compressor_ctype_valid(ctype))
+ return 0;
+
+ ops = compressor_ops[ctype];
+ if (ops->get_needed_memory == NULL)
+ return 0;
+
+ if (extra_params) {
+ params = extra_params;
+ if (ops->params_valid && !ops->params_valid(params))
+ return 0;
+ } else {
+ params = compressor_default_params[ctype];
+ }
+
+ return ops->get_needed_memory(max_block_size, params);
+}
+
+