zstd_compression.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <span>
  5. #include <vector>
  6. #include "common/common_types.h"
  7. namespace Common::Compression {
  8. /**
  9. * Compresses a source memory region with Zstandard and returns the compressed data in a vector.
  10. *
  11. * @param source The uncompressed source memory region.
  12. * @param source_size The size of the uncompressed source memory region.
  13. * @param compression_level The used compression level. Should be between 1 and 22.
  14. *
  15. * @return the compressed data.
  16. */
  17. [[nodiscard]] std::vector<u8> CompressDataZSTD(const u8* source, std::size_t source_size,
  18. s32 compression_level);
  19. /**
  20. * Compresses a source memory region with Zstandard with the default compression level and returns
  21. * the compressed data in a vector.
  22. *
  23. * @param source The uncompressed source memory region.
  24. * @param source_size The size of the uncompressed source memory region.
  25. *
  26. * @return the compressed data.
  27. */
  28. [[nodiscard]] std::vector<u8> CompressDataZSTDDefault(const u8* source, std::size_t source_size);
  29. /**
  30. * Decompresses a source memory region with Zstandard and returns the uncompressed data in a vector.
  31. *
  32. * @param compressed the compressed source memory region.
  33. *
  34. * @return the decompressed data.
  35. */
  36. [[nodiscard]] std::vector<u8> DecompressDataZSTD(std::span<const u8> compressed);
  37. } // namespace Common::Compression