| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chunked-decompressor.h" |
| |
| #include <fbl/array.h> |
| #include <src/lib/chunked-compression/chunked-decompressor.h> |
| #include <src/lib/chunked-compression/status.h> |
| |
| size_t zstd_chunked_decompress(const void* src, size_t src_len, void* dst, size_t dst_capacity) { |
| using namespace chunked_compression; |
| SeekTable seek_table; |
| HeaderReader reader; |
| Status status = reader.Parse(src, src_len, dst_capacity, &seek_table); |
| if (status != kStatusOk) { |
| return 0; |
| } |
| ChunkedDecompressor decompressor; |
| size_t uncompressed_size = 0; |
| status = decompressor.Decompress(seek_table, src, src_len, dst, dst_capacity, &uncompressed_size); |
| if (status != kStatusOk) { |
| return 0; |
| } |
| return uncompressed_size; |
| } |