.TH "decode.h" 3 "August 2021" "Brotli" \" -*- nroff -*-
.ad l
.nh
.SH NAME
decode.h \- API for Brotli decompression\&.  

.SH SYNOPSIS
.br
.PP
.SS "Macros"

.in +1c
.ti -1c
.RI "#define \fBBROTLI_DECODER_ERROR_CODES_LIST\fP(BROTLI_ERROR_CODE,  SEPARATOR)        "
.br
.RI "\fITemplate that evaluates items of \fBBrotliDecoderErrorCode\fP\&. \fP"
.ti -1c
.RI "#define \fBBROTLI_LAST_ERROR_CODE\fP   BROTLI_DECODER_ERROR_UNREACHABLE"
.br
.RI "\fIThe value of the last error code, negative integer\&. \fP"
.in -1c
.SS "Typedefs"

.in +1c
.ti -1c
.RI "typedef enum \fBBrotliDecoderParameter\fP \fBBrotliDecoderParameter\fP"
.br
.RI "\fIOptions to be used with \fBBrotliDecoderSetParameter\fP\&. \fP"
.ti -1c
.RI "typedef struct BrotliDecoderStateStruct \fBBrotliDecoderState\fP"
.br
.RI "\fIOpaque structure that holds decoder state\&. \fP"
.in -1c
.SS "Enumerations"
.SS "Functions"

.in +1c
.ti -1c
.RI "\fBBROTLI_BOOL\fP \fBBrotliDecoderAttachDictionary\fP (\fBBrotliDecoderState\fP *state, BrotliSharedDictionaryType type, size_t data_size, const uint8_t data[data_size])"
.br
.RI "\fIAdds LZ77 prefix dictionary, adds or replaces built-in static dictionary and transforms\&. \fP"
.ti -1c
.RI "\fBBrotliDecoderState\fP * \fBBrotliDecoderCreateInstance\fP (\fBbrotli_alloc_func\fP alloc_func, \fBbrotli_free_func\fP free_func, void *opaque)"
.br
.RI "\fICreates an instance of \fBBrotliDecoderState\fP and initializes it\&. \fP"
.ti -1c
.RI "\fBBrotliDecoderResult\fP \fBBrotliDecoderDecompress\fP (size_t encoded_size, const uint8_t encoded_buffer[encoded_size], size_t *decoded_size, uint8_t decoded_buffer[*decoded_size])"
.br
.RI "\fIPerforms one-shot memory-to-memory decompression\&. \fP"
.ti -1c
.RI "\fBBrotliDecoderResult\fP \fBBrotliDecoderDecompressStream\fP (\fBBrotliDecoderState\fP *state, size_t *available_in, const uint8_t **next_in, size_t *available_out, uint8_t **next_out, size_t *total_out)"
.br
.RI "\fIDecompresses the input stream to the output stream\&. \fP"
.ti -1c
.RI "void \fBBrotliDecoderDestroyInstance\fP (\fBBrotliDecoderState\fP *state)"
.br
.RI "\fIDeinitializes and frees \fBBrotliDecoderState\fP instance\&. \fP"
.ti -1c
.RI "const char * \fBBrotliDecoderErrorString\fP (\fBBrotliDecoderErrorCode\fP c)"
.br
.RI "\fIConverts error code to a c-string\&. \fP"
.ti -1c
.RI "\fBBrotliDecoderErrorCode\fP \fBBrotliDecoderGetErrorCode\fP (const \fBBrotliDecoderState\fP *state)"
.br
.RI "\fIAcquires a detailed error code\&. \fP"
.ti -1c
.RI "\fBBROTLI_BOOL\fP \fBBrotliDecoderHasMoreOutput\fP (const \fBBrotliDecoderState\fP *state)"
.br
.RI "\fIChecks if decoder has more output\&. \fP"
.ti -1c
.RI "\fBBROTLI_BOOL\fP \fBBrotliDecoderIsFinished\fP (const \fBBrotliDecoderState\fP *state)"
.br
.RI "\fIChecks if decoder instance reached the final state\&. \fP"
.ti -1c
.RI "\fBBROTLI_BOOL\fP \fBBrotliDecoderIsUsed\fP (const \fBBrotliDecoderState\fP *state)"
.br
.RI "\fIChecks if instance has already consumed input\&. \fP"
.ti -1c
.RI "\fBBROTLI_BOOL\fP \fBBrotliDecoderSetParameter\fP (\fBBrotliDecoderState\fP *state, \fBBrotliDecoderParameter\fP param, uint32_t value)"
.br
.RI "\fISets the specified parameter to the given decoder instance\&. \fP"
.ti -1c
.RI "const uint8_t * \fBBrotliDecoderTakeOutput\fP (\fBBrotliDecoderState\fP *state, size_t *size)"
.br
.RI "\fIAcquires pointer to internal output buffer\&. \fP"
.ti -1c
.RI "uint32_t \fBBrotliDecoderVersion\fP (void)"
.br
.RI "\fIGets a decoder library version\&. \fP"
.in -1c
.SH "Detailed Description"
.PP 
API for Brotli decompression\&. 


.SH "Macro Definition Documentation"
.PP 
.SS "#define BROTLI_DECODER_ERROR_CODES_LIST(BROTLI_ERROR_CODE, SEPARATOR)"

.PP
Template that evaluates items of \fBBrotliDecoderErrorCode\fP\&. Example:
.PP
.nf
// 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";
}

.fi
.PP
 
.SS "#define BROTLI_LAST_ERROR_CODE   BROTLI_DECODER_ERROR_UNREACHABLE"

.PP
The value of the last error code, negative integer\&. All other error code values are in the range from \fBBROTLI_LAST_ERROR_CODE\fP to \fC-1\fP\&. There are also 4 other possible non-error codes \fC0\fP \&.\&. \fC3\fP in \fBBrotliDecoderErrorCode\fP enumeration\&. 
.SH "Typedef Documentation"
.PP 
.SS "typedef enum \fBBrotliDecoderParameter\fP  \fBBrotliDecoderParameter\fP"

.PP
Options to be used with \fBBrotliDecoderSetParameter\fP\&. 
.SS "typedef struct BrotliDecoderStateStruct \fBBrotliDecoderState\fP"

.PP
Opaque structure that holds decoder state\&. Allocated and initialized with \fBBrotliDecoderCreateInstance\fP\&. Cleaned up and deallocated with \fBBrotliDecoderDestroyInstance\fP\&. 
.SH "Enumeration Type Documentation"
.PP 
.SS "enum \fBBrotliDecoderErrorCode\fP"

.PP
Error code for detailed logging / production debugging\&. See \fBBrotliDecoderGetErrorCode\fP and \fBBROTLI_LAST_ERROR_CODE\fP\&. 
.SS "enum \fBBrotliDecoderParameter\fP"

.PP
Options to be used with \fBBrotliDecoderSetParameter\fP\&. 
.PP
\fBEnumerator\fP
.in +1c
.TP
\fB\fIBROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION \fP\fP
Disable 'canny' ring buffer allocation strategy\&. Ring buffer is allocated according to window size, despite the real size of the content\&. 
.TP
\fB\fIBROTLI_DECODER_PARAM_LARGE_WINDOW \fP\fP
Flag that determines if 'Large Window Brotli' is used\&. 
.SS "enum \fBBrotliDecoderResult\fP"

.PP
Result type for \fBBrotliDecoderDecompress\fP and \fBBrotliDecoderDecompressStream\fP functions\&. 
.PP
\fBEnumerator\fP
.in +1c
.TP
\fB\fIBROTLI_DECODER_RESULT_ERROR \fP\fP
Decoding error, e\&.g\&. corrupted input or memory allocation problem\&. 
.TP
\fB\fIBROTLI_DECODER_RESULT_SUCCESS \fP\fP
Decoding successfully completed\&. 
.TP
\fB\fIBROTLI_DECODER_RESULT_NEEDS_MORE_INPUT \fP\fP
Partially done; should be called again with more input\&. 
.TP
\fB\fIBROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT \fP\fP
Partially done; should be called again with more output\&. 
.SH "Function Documentation"
.PP 
.SS "\fBBROTLI_BOOL\fP BrotliDecoderAttachDictionary (\fBBrotliDecoderState\fP * state, BrotliSharedDictionaryType type, size_t data_size, const uint8_t data[data_size])"

.PP
Adds LZ77 prefix dictionary, adds or replaces built-in static dictionary and transforms\&. Attached dictionary ownership is not transferred\&. Data provided to this method should be kept accessible until decoding is finished and decoder instance is destroyed\&.
.PP
\fBNote:\fP
.RS 4
Dictionaries can NOT be attached after actual decoding is started\&.
.RE
.PP
\fBParameters:\fP
.RS 4
\fIstate\fP decoder instance 
.br
\fItype\fP dictionary data format 
.br
\fIdata_size\fP length of memory region pointed by \fCdata\fP 
.br
\fIdata\fP dictionary data in format corresponding to \fCtype\fP 
.RE
.PP
\fBReturns:\fP
.RS 4
\fBBROTLI_FALSE\fP if dictionary is corrupted, or dictionary count limit is reached 
.PP
\fBBROTLI_TRUE\fP if dictionary is accepted / attached 
.RE
.PP

.SS "\fBBrotliDecoderState\fP* BrotliDecoderCreateInstance (\fBbrotli_alloc_func\fP alloc_func, \fBbrotli_free_func\fP free_func, void * opaque)"

.PP
Creates an instance of \fBBrotliDecoderState\fP and initializes it\&. The instance can be used once for decoding and should then be destroyed with \fBBrotliDecoderDestroyInstance\fP, it cannot be reused for a new decoding session\&.
.PP
\fCalloc_func\fP and \fCfree_func\fP \fBMUST\fP be both zero or both non-zero\&. In the case they are both zero, default memory allocators are used\&. \fCopaque\fP is passed to \fCalloc_func\fP and \fCfree_func\fP when they are called\&. \fCfree_func\fP has to return without doing anything when asked to free a NULL pointer\&.
.PP
\fBParameters:\fP
.RS 4
\fIalloc_func\fP custom memory allocation function 
.br
\fIfree_func\fP custom memory free function 
.br
\fIopaque\fP custom memory manager handle 
.RE
.PP
\fBReturns:\fP
.RS 4
\fC0\fP if instance can not be allocated or initialized 
.PP
pointer to initialized \fBBrotliDecoderState\fP otherwise 
.RE
.PP

.SS "\fBBrotliDecoderResult\fP BrotliDecoderDecompress (size_t encoded_size, const uint8_t encoded_buffer[encoded_size], size_t * decoded_size, uint8_t decoded_buffer[*decoded_size])"

.PP
Performs one-shot memory-to-memory decompression\&. Decompresses the data in \fCencoded_buffer\fP into \fCdecoded_buffer\fP, and sets \fC*decoded_size\fP to the decompressed length\&.
.PP
\fBParameters:\fP
.RS 4
\fIencoded_size\fP size of \fCencoded_buffer\fP 
.br
\fIencoded_buffer\fP compressed data buffer with at least \fCencoded_size\fP addressable bytes 
.br
\fIdecoded_size\fP \fBin:\fP size of \fCdecoded_buffer\fP; 
.br
 \fBout:\fP length of decompressed data written to \fCdecoded_buffer\fP 
.br
\fIdecoded_buffer\fP decompressed data destination buffer 
.RE
.PP
\fBReturns:\fP
.RS 4
\fBBROTLI_DECODER_RESULT_ERROR\fP if input is corrupted, memory allocation failed, or \fCdecoded_buffer\fP is not large enough; 
.PP
\fBBROTLI_DECODER_RESULT_SUCCESS\fP otherwise 
.RE
.PP

.SS "\fBBrotliDecoderResult\fP BrotliDecoderDecompressStream (\fBBrotliDecoderState\fP * state, size_t * available_in, const uint8_t ** next_in, size_t * available_out, uint8_t ** next_out, size_t * total_out)"

.PP
Decompresses the input stream to the output stream\&. The values \fC*available_in\fP and \fC*available_out\fP must specify the number of bytes addressable at \fC*next_in\fP and \fC*next_out\fP respectively\&. When \fC*available_out\fP is \fC0\fP, \fCnext_out\fP is allowed to be \fCNULL\fP\&.
.PP
After each call, \fC*available_in\fP will be decremented by the amount of input bytes consumed, and the \fC*next_in\fP pointer will be incremented by that amount\&. Similarly, \fC*available_out\fP will be decremented by the amount of output bytes written, and the \fC*next_out\fP pointer will be incremented by that amount\&.
.PP
\fCtotal_out\fP, if it is not a null-pointer, will be set to the number of bytes decompressed since the last \fCstate\fP initialization\&.
.PP
\fBNote:\fP
.RS 4
Input is never overconsumed, so \fCnext_in\fP and \fCavailable_in\fP could be passed to the next consumer after decoding is complete\&.
.RE
.PP
\fBParameters:\fP
.RS 4
\fIstate\fP decoder instance 
.br
\fIavailable_in\fP \fBin:\fP amount of available input; 
.br
 \fBout:\fP amount of unused input 
.br
\fInext_in\fP pointer to the next compressed byte 
.br
\fIavailable_out\fP \fBin:\fP length of output buffer; 
.br
 \fBout:\fP remaining size of output buffer 
.br
\fInext_out\fP output buffer cursor; can be \fCNULL\fP if \fCavailable_out\fP is \fC0\fP 
.br
\fItotal_out\fP number of bytes decompressed so far; can be \fCNULL\fP 
.RE
.PP
\fBReturns:\fP
.RS 4
\fBBROTLI_DECODER_RESULT_ERROR\fP if input is corrupted, memory allocation failed, arguments were invalid, etc\&.; use \fBBrotliDecoderGetErrorCode\fP to get detailed error code 
.PP
\fBBROTLI_DECODER_RESULT_NEEDS_MORE_INPUT\fP decoding is blocked until more input data is provided 
.PP
\fBBROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT\fP decoding is blocked until more output space is provided 
.PP
\fBBROTLI_DECODER_RESULT_SUCCESS\fP decoding is finished, no more input might be consumed and no more output will be produced 
.RE
.PP

.SS "void BrotliDecoderDestroyInstance (\fBBrotliDecoderState\fP * state)"

.PP
Deinitializes and frees \fBBrotliDecoderState\fP instance\&. 
.PP
\fBParameters:\fP
.RS 4
\fIstate\fP decoder instance to be cleaned up and deallocated 
.RE
.PP

.SS "\fBBrotliDecoderErrorCode\fP BrotliDecoderGetErrorCode (const \fBBrotliDecoderState\fP * state)"

.PP
Acquires a detailed error code\&. Should be used only after \fBBrotliDecoderDecompressStream\fP returns \fBBROTLI_DECODER_RESULT_ERROR\fP\&.
.PP
See also \fBBrotliDecoderErrorString\fP
.PP
\fBParameters:\fP
.RS 4
\fIstate\fP decoder instance 
.RE
.PP
\fBReturns:\fP
.RS 4
last saved error code 
.RE
.PP

.SS "\fBBROTLI_BOOL\fP BrotliDecoderHasMoreOutput (const \fBBrotliDecoderState\fP * state)"

.PP
Checks if decoder has more output\&. 
.PP
\fBParameters:\fP
.RS 4
\fIstate\fP decoder instance 
.RE
.PP
\fBReturns:\fP
.RS 4
\fBBROTLI_TRUE\fP, if decoder has some unconsumed output 
.PP
\fBBROTLI_FALSE\fP otherwise 
.RE
.PP

.SS "\fBBROTLI_BOOL\fP BrotliDecoderIsFinished (const \fBBrotliDecoderState\fP * state)"

.PP
Checks if decoder instance reached the final state\&. 
.PP
\fBParameters:\fP
.RS 4
\fIstate\fP decoder instance 
.RE
.PP
\fBReturns:\fP
.RS 4
\fBBROTLI_TRUE\fP if decoder is in a state where it reached the end of the input and produced all of the output 
.PP
\fBBROTLI_FALSE\fP otherwise 
.RE
.PP

.SS "\fBBROTLI_BOOL\fP BrotliDecoderIsUsed (const \fBBrotliDecoderState\fP * state)"

.PP
Checks if instance has already consumed input\&. Instance that returns \fBBROTLI_FALSE\fP is considered 'fresh' and could be reused\&.
.PP
\fBParameters:\fP
.RS 4
\fIstate\fP decoder instance 
.RE
.PP
\fBReturns:\fP
.RS 4
\fBBROTLI_TRUE\fP if decoder has already used some input bytes 
.PP
\fBBROTLI_FALSE\fP otherwise 
.RE
.PP

.SS "\fBBROTLI_BOOL\fP BrotliDecoderSetParameter (\fBBrotliDecoderState\fP * state, \fBBrotliDecoderParameter\fP param, uint32_t value)"

.PP
Sets the specified parameter to the given decoder instance\&. 
.PP
\fBParameters:\fP
.RS 4
\fIstate\fP decoder instance 
.br
\fIparam\fP parameter to set 
.br
\fIvalue\fP new parameter value 
.RE
.PP
\fBReturns:\fP
.RS 4
\fBBROTLI_FALSE\fP if parameter is unrecognized, or value is invalid 
.PP
\fBBROTLI_TRUE\fP if value is accepted 
.RE
.PP

.SS "const uint8_t* BrotliDecoderTakeOutput (\fBBrotliDecoderState\fP * state, size_t * size)"

.PP
Acquires pointer to internal output buffer\&. This method is used to make language bindings easier and more efficient:
.IP "1." 4
push data to \fBBrotliDecoderDecompressStream\fP, until \fBBROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT\fP is reported
.IP "2." 4
use \fBBrotliDecoderTakeOutput\fP to peek bytes and copy to language-specific entity
.PP
.PP
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)\&.
.PP
\fBAttention:\fP
.RS 4
After every call to \fBBrotliDecoderTakeOutput\fP \fC*size\fP bytes of output are considered consumed for all consecutive calls to the instance methods; returned pointer becomes invalidated as well\&.
.RE
.PP
\fBNote:\fP
.RS 4
Decoder output is not guaranteed to be contiguous\&. This means that after the size-unrestricted call to \fBBrotliDecoderTakeOutput\fP, immediate next call to \fBBrotliDecoderTakeOutput\fP may return more data\&.
.RE
.PP
\fBParameters:\fP
.RS 4
\fIstate\fP decoder instance 
.br
\fIsize\fP \fBin:\fP number of bytes caller is ready to take, \fC0\fP if any amount could be handled; 
.br
 \fBout:\fP amount of data pointed by returned pointer and considered consumed; 
.br
 out value is never greater than in value, unless it is \fC0\fP 
.RE
.PP
\fBReturns:\fP
.RS 4
pointer to output data 
.RE
.PP

.SS "uint32_t BrotliDecoderVersion (void)"

.PP
Gets a decoder library version\&. Look at BROTLI_VERSION for more information\&. 
.SH "Author"
.PP 
Generated automatically by Doxygen for Brotli from the source code\&.
