diff options
| author | 2019-02-10 10:28:04 +0100 | |
|---|---|---|
| committer | 2019-03-29 18:22:08 +0100 | |
| commit | b4857e326fdf4c980c88ca399e7d12f99253777e (patch) | |
| tree | 5e90dbe3f86317723ee15306cdf1de38d6405790 /src/common/zstd_compression.cpp | |
| parent | gl_shader_disk_cache: Fixup clang format (diff) | |
| download | yuzu-b4857e326fdf4c980c88ca399e7d12f99253777e.tar.gz yuzu-b4857e326fdf4c980c88ca399e7d12f99253777e.tar.xz yuzu-b4857e326fdf4c980c88ca399e7d12f99253777e.zip | |
common/zstd_compression: simplify decompression interface
Diffstat (limited to 'src/common/zstd_compression.cpp')
| -rw-r--r-- | src/common/zstd_compression.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/common/zstd_compression.cpp b/src/common/zstd_compression.cpp index f6cf7a791..60a35c67c 100644 --- a/src/common/zstd_compression.cpp +++ b/src/common/zstd_compression.cpp | |||
| @@ -13,7 +13,6 @@ | |||
| 13 | namespace Common::Compression { | 13 | namespace Common::Compression { |
| 14 | 14 | ||
| 15 | std::vector<u8> CompressDataZSTD(const u8* source, std::size_t source_size, s32 compression_level) { | 15 | std::vector<u8> CompressDataZSTD(const u8* source, std::size_t source_size, s32 compression_level) { |
| 16 | |||
| 17 | compression_level = std::clamp(compression_level, 1, ZSTD_maxCLevel()); | 16 | compression_level = std::clamp(compression_level, 1, ZSTD_maxCLevel()); |
| 18 | 17 | ||
| 19 | const std::size_t max_compressed_size = ZSTD_compressBound(source_size); | 18 | const std::size_t max_compressed_size = ZSTD_compressBound(source_size); |
| @@ -36,17 +35,19 @@ std::vector<u8> CompressDataZSTDDefault(const u8* source, std::size_t source_siz | |||
| 36 | return CompressDataZSTD(source, source_size, ZSTD_CLEVEL_DEFAULT); | 35 | return CompressDataZSTD(source, source_size, ZSTD_CLEVEL_DEFAULT); |
| 37 | } | 36 | } |
| 38 | 37 | ||
| 39 | std::vector<u8> DecompressDataZSTD(const std::vector<u8>& compressed, | 38 | std::vector<u8> DecompressDataZSTD(const std::vector<u8>& compressed) { |
| 40 | std::size_t uncompressed_size) { | 39 | const std::size_t decompressed_size = |
| 41 | std::vector<u8> uncompressed(uncompressed_size); | 40 | ZSTD_getDecompressedSize(compressed.data(), compressed.size()); |
| 41 | std::vector<u8> decompressed(decompressed_size); | ||
| 42 | |||
| 42 | const std::size_t uncompressed_result_size = ZSTD_decompress( | 43 | const std::size_t uncompressed_result_size = ZSTD_decompress( |
| 43 | uncompressed.data(), uncompressed.size(), compressed.data(), compressed.size()); | 44 | decompressed.data(), decompressed.size(), compressed.data(), compressed.size()); |
| 44 | 45 | ||
| 45 | if (uncompressed_size != uncompressed_result_size || ZSTD_isError(uncompressed_result_size)) { | 46 | if (decompressed_size != uncompressed_result_size || ZSTD_isError(uncompressed_result_size)) { |
| 46 | // Decompression failed | 47 | // Decompression failed |
| 47 | return {}; | 48 | return {}; |
| 48 | } | 49 | } |
| 49 | return uncompressed; | 50 | return decompressed; |
| 50 | } | 51 | } |
| 51 | 52 | ||
| 52 | } // namespace Common::Compression | 53 | } // namespace Common::Compression |