// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include "common/common_types.h" namespace Common::Compression { /** * Compresses a source memory region with Zstandard and returns the compressed data in a vector. * * @param source The uncompressed source memory region. * @param source_size The size of the uncompressed source memory region. * @param compression_level The used compression level. Should be between 1 and 22. * * @return the compressed data. */ [[nodiscard]] std::vector CompressDataZSTD(const u8* source, std::size_t source_size, s32 compression_level); /** * Compresses a source memory region with Zstandard with the default compression level and returns * the compressed data in a vector. * * @param source The uncompressed source memory region. * @param source_size The size of the uncompressed source memory region. * * @return the compressed data. */ [[nodiscard]] std::vector CompressDataZSTDDefault(const u8* source, std::size_t source_size); /** * Decompresses a source memory region with Zstandard and returns the uncompressed data in a vector. * * @param compressed the compressed source memory region. * * @return the decompressed data. */ [[nodiscard]] std::vector DecompressDataZSTD(std::span compressed); } // namespace Common::Compression