Manpages - decode.h.3

Table of Contents

NAME

decode.h - API for Brotli decompression.

SYNOPSIS


Macros

#define *BROTLI_DECODER_ERROR_CODES_LIST*(BROTLI_ERROR_CODE, SEPARATOR)
Template that evaluates items of /*BrotliDecoderErrorCode*. /

#define BROTLI_LAST_ERROR_CODE BROTLI_DECODER_ERROR_UNREACHABLE
/The value of the last error code, negative integer. /

Typedefs

typedef enum BrotliDecoderParameter BrotliDecoderParameter
Options to be used with /*BrotliDecoderSetParameter*. /

typedef struct BrotliDecoderStateStruct BrotliDecoderState
/Opaque structure that holds decoder state. /

Enumerations

Functions

BrotliDecoderState * BrotliDecoderCreateInstance (brotli_alloc_func alloc_func, brotli_free_func free_func, void *opaque)
Creates an instance of /*BrotliDecoderState* and initializes it. /

BrotliDecoderResult BrotliDecoderDecompress (size_t encoded_size, const uint8_t encoded_buffer[encoded_size], size_t *decoded_size, uint8_t decoded_buffer[*decoded_size])
/Performs one-shot memory-to-memory decompression. /

BrotliDecoderResult BrotliDecoderDecompressStream (BrotliDecoderState *state, size_t *available_in, const uint8_t **next_in, size_t *available_out, uint8_t **next_out, size_t *total_out)
/Decompresses the input stream to the output stream. /

void BrotliDecoderDestroyInstance (BrotliDecoderState *state)
Deinitializes and frees /*BrotliDecoderState* instance. /

const char * BrotliDecoderErrorString (BrotliDecoderErrorCode c)
/Converts error code to a c-string. /

BrotliDecoderErrorCode BrotliDecoderGetErrorCode (const BrotliDecoderState *state)
/Acquires a detailed error code. /

BROTLI_BOOL BrotliDecoderHasMoreOutput (const BrotliDecoderState *state)
/Checks if decoder has more output. /

BROTLI_BOOL BrotliDecoderIsFinished (const BrotliDecoderState *state)
/Checks if decoder instance reached the final state. /

BROTLI_BOOL BrotliDecoderIsUsed (const BrotliDecoderState *state)
/Checks if instance has already consumed input. /

BROTLI_BOOL BrotliDecoderSetParameter (BrotliDecoderState *state, BrotliDecoderParameter param, uint32_t value)
/Sets the specified parameter to the given decoder instance. /

const uint8_t * BrotliDecoderTakeOutput (BrotliDecoderState *state, size_t *size)
/Acquires pointer to internal output buffer. /

uint32_t BrotliDecoderVersion (void)
/Gets a decoder library version. /

Detailed Description

API for Brotli decompression.

Macro Definition Documentation

#define BROTLI_DECODER_ERROR_CODES_LIST(BROTLI_ERROR_CODE, SEPARATOR)

Template that evaluates items of BrotliDecoderErrorCode. Example:

  // Log Brotli error code.
  switch (brotliDecoderErrorCode) {
  #define CASE_(PREFIX, NAME, CODE)   case BROTLI_DECODER ## PREFIX ## NAME:     LOG(INFO) << "error code:" << #NAME;     break;
  #define NEWLINE_
  BROTLI_DECODER_ERROR_CODES_LIST(CASE_, NEWLINE_)
  #undef CASE_
  #undef NEWLINE_
    default: LOG(FATAL) << "unknown brotli error code";
  }

#define BROTLI_LAST_ERROR_CODE BROTLI_DECODER_ERROR_UNREACHABLE

The value of the last error code, negative integer. All other error code values are in the range from BROTLI_LAST_ERROR_CODE to *=-1=. There are also 4 other possible non-error codes 0 .. 3 in BrotliDecoderErrorCode enumeration. *

Typedef Documentation

typedef enum BrotliDecoderParameter BrotliDecoderParameter

Options to be used with *BrotliDecoderSetParameter. *

typedef struct BrotliDecoderStateStruct BrotliDecoderState

Opaque structure that holds decoder state. Allocated and initialized with *BrotliDecoderCreateInstance. Cleaned up and deallocated with BrotliDecoderDestroyInstance. *

Enumeration Type Documentation

enum BrotliDecoderErrorCode

Error code for detailed logging / production debugging. See *BrotliDecoderGetErrorCode and BROTLI_LAST_ERROR_CODE. *

enum BrotliDecoderParameter

Options to be used with *BrotliDecoderSetParameter. *

Enumerator

/BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION /
Disable ’canny’ ring buffer allocation strategy. Ring buffer is allocated according to window size, despite the real size of the content.
/BROTLI_DECODER_PARAM_LARGE_WINDOW /
Flag that determines if ’Large Window Brotli’ is used.

enum BrotliDecoderResult

Result type for *BrotliDecoderDecompress*/ and BrotliDecoderDecompressStream functions. /

Enumerator

/BROTLI_DECODER_RESULT_ERROR /
Decoding error, e.g. corrupted input or memory allocation problem.
/BROTLI_DECODER_RESULT_SUCCESS /
Decoding successfully completed.
/BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT /
Partially done; should be called again with more input.
/BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT /
Partially done; should be called again with more output.

Function Documentation

BrotliDecoderState*/ BrotliDecoderCreateInstance

(brotli_alloc_func alloc_func, brotli_free_func free_func, void

opaque)/

Creates an instance of *BrotliDecoderState*/ and initializes it. The instance can be used once for decoding and should then be destroyed with BrotliDecoderDestroyInstance, it cannot be reused for a new decoding session./

=alloc_func=/ and free_func MUST be both zero or both non-zero. In the case they are both zero, default memory allocators are used. opaque is passed to alloc_func and free_func when they are called. free_func has to return without doing anything when asked to free a NULL pointer./

Parameters:

/alloc_func custom memory allocation function /
/free_func custom memory free function /
/opaque custom memory manager handle /

Returns:

=0=/ if instance can not be allocated or initialized /

pointer to initialized *BrotliDecoderState*/ otherwise /

*BrotliDecoderResult*/ BrotliDecoderDecompress (size_t encoded_size,

const uint8_t encoded_buffer[encoded_size], size_t * decoded_size, uint8_t decoded_buffer[*decoded_size])/ Performs one-shot memory-to-memory decompression. Decompresses the data in =encoded_buffer=/ into decoded_buffer, and sets *decoded_size to the decompressed length./

Parameters:

encoded_size size of /=encoded_buffer=
/encoded_buffer compressed data buffer with at least /=encoded_size=
addressable bytes
/decoded_size /*in:*
size of decoded_buffer;
out:
length of decompressed data written to decoded_buffer /
/decoded_buffer decompressed data destination buffer /

Returns:

*BROTLI_DECODER_RESULT_ERROR*/ if input is corrupted, memory allocation failed, or decoded_buffer is not large enough; /

*BROTLI_DECODER_RESULT_SUCCESS*/ otherwise /

*BrotliDecoderResult*/ BrotliDecoderDecompressStream

(BrotliDecoderState * state, size_t * available_in, const uint8_t * next_in, size_t * available_out, uint8_t * next_out, size_t * total_out)/ Decompresses the input stream to the output stream. The values =*available_in=/ and *available_out must specify the number of bytes addressable at *next_in and *next_out respectively. When *available_out is 0, next_out is allowed to be NULL./

After each call, =*available_in=/ will be decremented by the amount of input bytes consumed, and the *next_in pointer will be incremented by that amount. Similarly, *available_out will be decremented by the amount of output bytes written, and the *next_out pointer will be incremented by that amount./

=total_out=/, if it is not a null-pointer, will be set to the number of bytes decompressed since the last state initialization./

Note:

Input is never overconsumed, so =next_in=/ and available_in could be passed to the next consumer after decoding is complete./

Parameters:

state decoder instance /
/available_in /*in:*
amount of available input;
out:
amount of unused input
/next_in pointer to the next compressed byte /
/available_out /*in:*
length of output buffer;
out:
remaining size of output buffer
/next_out output buffer cursor; can be /=NULL=
if available_out is 0
/total_out number of bytes decompressed so far; can be /=NULL=
/

Returns:

*BROTLI_DECODER_RESULT_ERROR*/ if input is corrupted, memory allocation failed, arguments were invalid, etc.; use BrotliDecoderGetErrorCode to get detailed error code /

*BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT*/ decoding is blocked until more input data is provided /

*BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT*/ decoding is blocked until more output space is provided /

*BROTLI_DECODER_RESULT_SUCCESS*/ decoding is finished, no more input might be consumed and no more output will be produced /

void BrotliDecoderDestroyInstance (*BrotliDecoderState*/ * state)/

Deinitializes and frees *BrotliDecoderState*/ instance. /

Parameters:

/state decoder instance to be cleaned up and deallocated /

*BrotliDecoderErrorCode*/ BrotliDecoderGetErrorCode (const

BrotliDecoderState * state)/ Acquires a detailed error code. Should be used only after *BrotliDecoderDecompressStream*/ returns BROTLI_DECODER_RESULT_ERROR./

See also BrotliDecoderErrorString

Parameters:

/state decoder instance /

Returns:

last saved error code

*BROTLI_BOOL*/ BrotliDecoderHasMoreOutput (const

BrotliDecoderState * state)/ Checks if decoder has more output.

Parameters:

/state decoder instance /

Returns:

*BROTLI_TRUE*/, if decoder has some unconsumed output /

*BROTLI_FALSE*/ otherwise /

*BROTLI_BOOL*/ BrotliDecoderIsFinished (const BrotliDecoderState

state)/

Checks if decoder instance reached the final state.

Parameters:

/state decoder instance /

Returns:

*BROTLI_TRUE*/ if decoder is in a state where it reached the end of the input and produced all of the output /

*BROTLI_FALSE*/ otherwise /

*BROTLI_BOOL*/ BrotliDecoderIsUsed (const BrotliDecoderState *

state)/ Checks if instance has already consumed input. Instance that returns *BROTLI_FALSE*/ is considered ’fresh’ and could be reused./

Parameters:

/state decoder instance /

Returns:

*BROTLI_TRUE*/ if decoder has already used some input bytes /

*BROTLI_FALSE*/ otherwise /

*BROTLI_BOOL*/ BrotliDecoderSetParameter (BrotliDecoderState *

state, BrotliDecoderParameter param, uint32_t value)/ Sets the specified parameter to the given decoder instance.

Parameters:

/state decoder instance /
/param parameter to set /
/value new parameter value /

Returns:

*BROTLI_FALSE*/ if parameter is unrecognized, or value is invalid /

*BROTLI_TRUE*/ if value is accepted /

const uint8_t* BrotliDecoderTakeOutput (*BrotliDecoderState*/ *

state, size_t * size)/ Acquires pointer to internal output buffer. This method is used to make language bindings easier and more efficient:

  1. push data to *BrotliDecoderDecompressStream*/, until BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT is reported/
  2. use *BrotliDecoderTakeOutput*/ to peek bytes and copy to language-specific entity/

Also this could be useful if there is an output stream that is able to consume all the provided data (e.g. when data is saved to file system).

Attention:

After every call to *BrotliDecoderTakeOutput*/ *size bytes of output are considered consumed for all consecutive calls to the instance methods; returned pointer becomes invalidated as well./

Note:

Decoder output is not guaranteed to be contiguous. This means that after the size-unrestricted call to *BrotliDecoderTakeOutput*/, immediate next call to BrotliDecoderTakeOutput may return more data./

Parameters:

state decoder instance /
/size /*in:*
number of bytes caller is ready to take, 0 if any amount could be handled;
out:
amount of data pointed by returned pointer and considered consumed;
out value is never greater than in value, unless it is 0
/

Returns:

pointer to output data

uint32_t BrotliDecoderVersion (void)

Gets a decoder library version. Look at BROTLI_VERSION for more information.

Author

Generated automatically by Doxygen for Brotli from the source code.

Author: dt

Created: 2022-02-20 Sun 14:34