]> wimlib.net Git - wimlib/blobdiff - src/xpress-compress.c
Add wimlib_get_compressor_needed_memory()
[wimlib] / src / xpress-compress.c
index b1638877f212f896e2adbad17034c8627c8af441..175534c0c7a38e5aba180b98a012961204fe4d1f 100644 (file)
@@ -314,7 +314,22 @@ oom:
        return WIMLIB_ERR_NOMEM;
 }
 
+static u64
+xpress_get_needed_memory(size_t max_window_size,
+                        const struct wimlib_compressor_params_header *params)
+{
+       u64 size = 0;
+
+       size += sizeof(struct xpress_compressor);
+       size += max_window_size + 8;
+       size += max_window_size * sizeof(((struct xpress_compressor*)0)->matches[0]);
+       size += max_window_size * sizeof(((struct xpress_compressor*)0)->prev_tab[0]);
+
+       return size;
+}
+
 const struct compressor_ops xpress_compressor_ops = {
+       .get_needed_memory  = xpress_get_needed_memory,
        .create_compressor  = xpress_create_compressor,
        .compress           = xpress_compress,
        .free_compressor    = xpress_free_compressor,