2013-12-16 13:45:57 +00:00
|
|
|
/* Copyright 2013 Google Inc. All Rights Reserved.
|
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
|
|
|
|
API for Brotli decompression
|
|
|
|
*/
|
2013-10-11 08:26:07 +00:00
|
|
|
|
|
|
|
#ifndef BROTLI_DEC_DECODE_H_
|
|
|
|
#define BROTLI_DEC_DECODE_H_
|
|
|
|
|
2013-11-15 18:02:17 +00:00
|
|
|
#include "./streams.h"
|
2013-10-11 08:26:07 +00:00
|
|
|
#include "./types.h"
|
|
|
|
|
|
|
|
#if defined(__cplusplus) || defined(c_plusplus)
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2013-12-16 13:45:57 +00:00
|
|
|
/* Sets *decoded_size to the decompressed size of the given encoded stream. */
|
2014-02-14 14:04:23 +00:00
|
|
|
/* This function only works if the encoded buffer has a single meta block, */
|
|
|
|
/* and this meta block must have the "is last" bit set. */
|
2013-12-16 13:45:57 +00:00
|
|
|
/* Returns 1 on success, 0 on failure. */
|
2013-10-11 08:26:07 +00:00
|
|
|
int BrotliDecompressedSize(size_t encoded_size,
|
|
|
|
const uint8_t* encoded_buffer,
|
|
|
|
size_t* decoded_size);
|
|
|
|
|
2013-12-16 13:45:57 +00:00
|
|
|
/* Decompresses the data in encoded_buffer into decoded_buffer, and sets */
|
|
|
|
/* *decoded_size to the decompressed length. */
|
|
|
|
/* Returns 0 if there was either a bit stream error or memory allocation */
|
|
|
|
/* error, and 1 otherwise. */
|
|
|
|
/* If decoded size is zero, returns 1 and keeps decoded_buffer unchanged. */
|
2013-10-11 08:26:07 +00:00
|
|
|
int BrotliDecompressBuffer(size_t encoded_size,
|
|
|
|
const uint8_t* encoded_buffer,
|
|
|
|
size_t* decoded_size,
|
|
|
|
uint8_t* decoded_buffer);
|
|
|
|
|
2013-12-16 13:45:57 +00:00
|
|
|
/* Same as above, but uses the specified input and output callbacks instead */
|
|
|
|
/* of reading from and writing to pre-allocated memory buffers. */
|
2013-11-15 18:02:17 +00:00
|
|
|
int BrotliDecompress(BrotliInput input, BrotliOutput output);
|
|
|
|
|
2013-10-11 08:26:07 +00:00
|
|
|
#if defined(__cplusplus) || defined(c_plusplus)
|
2013-12-16 13:45:57 +00:00
|
|
|
} /* extern "C" */
|
2013-10-11 08:26:07 +00:00
|
|
|
#endif
|
|
|
|
|
2013-12-16 13:45:57 +00:00
|
|
|
#endif /* BROTLI_DEC_DECODE_H_ */
|