130625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka/* Copyright 2013 Google Inc. All Rights Reserved. 230625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka 330625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka Licensed under the Apache License, Version 2.0 (the "License"); 430625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka you may not use this file except in compliance with the License. 530625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka You may obtain a copy of the License at 630625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka 730625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka http://www.apache.org/licenses/LICENSE-2.0 830625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka 930625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka Unless required by applicable law or agreed to in writing, software 1030625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka distributed under the License is distributed on an "AS IS" BASIS, 1130625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1230625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka See the License for the specific language governing permissions and 1330625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka limitations under the License. 1430625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka 1530625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka API for Brotli decompression 1630625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka*/ 1704163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka 1804163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka#ifndef BROTLI_DEC_DECODE_H_ 1904163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka#define BROTLI_DEC_DECODE_H_ 2004163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka 211571db36a9b00e895882ee236e9f84d62f8ea226Zoltan Szabadka#include "./streams.h" 2204163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka#include "./types.h" 2304163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka 2404163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka#if defined(__cplusplus) || defined(c_plusplus) 2504163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadkaextern "C" { 2604163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka#endif 2704163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka 2830625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka/* Sets *decoded_size to the decompressed size of the given encoded stream. */ 29cbd5cb55f487eda746b0d6f8b5742b5a8e5c846aZoltan Szabadka/* This function only works if the encoded buffer has a single meta block, */ 30cbd5cb55f487eda746b0d6f8b5742b5a8e5c846aZoltan Szabadka/* and this meta block must have the "is last" bit set. */ 3130625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka/* Returns 1 on success, 0 on failure. */ 3204163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadkaint BrotliDecompressedSize(size_t encoded_size, 3304163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka const uint8_t* encoded_buffer, 3404163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka size_t* decoded_size); 3504163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka 3630625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka/* Decompresses the data in encoded_buffer into decoded_buffer, and sets */ 3730625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka/* *decoded_size to the decompressed length. */ 3830625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka/* Returns 0 if there was either a bit stream error or memory allocation */ 3930625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka/* error, and 1 otherwise. */ 4030625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka/* If decoded size is zero, returns 1 and keeps decoded_buffer unchanged. */ 4104163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadkaint BrotliDecompressBuffer(size_t encoded_size, 4204163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka const uint8_t* encoded_buffer, 4304163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka size_t* decoded_size, 4404163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka uint8_t* decoded_buffer); 4504163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka 4630625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka/* Same as above, but uses the specified input and output callbacks instead */ 4730625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka/* of reading from and writing to pre-allocated memory buffers. */ 481571db36a9b00e895882ee236e9f84d62f8ea226Zoltan Szabadkaint BrotliDecompress(BrotliInput input, BrotliOutput output); 491571db36a9b00e895882ee236e9f84d62f8ea226Zoltan Szabadka 5004163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka#if defined(__cplusplus) || defined(c_plusplus) 5130625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka} /* extern "C" */ 5204163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka#endif 5304163a87d098f14e890c2a3fd240af7f09099711Zoltan Szabadka 5430625ba238fcb360c80a093164347503bbedf7adZoltan Szabadka#endif /* BROTLI_DEC_DECODE_H_ */ 55