libavcodec/lzwenc.c File Reference

LZW encoder. More...

#include "avcodec.h"
#include "put_bits.h"
#include "lzw.h"

Go to the source code of this file.

Data Structures

struct  Code
 One code in hash table. More...
struct  LZWEncodeState
 LZW encode state. More...

Defines

#define LZW_MAXBITS   12
#define LZW_SIZTABLE   (1<<LZW_MAXBITS)
#define LZW_HASH_SIZE   16411
#define LZW_HASH_SHIFT   6
#define LZW_PREFIX_EMPTY   -1
#define LZW_PREFIX_FREE   -2

Functions

static int hash (int head, const int add)
 Hash function adding character.
static int hashNext (int head, const int offset)
 Hash function calculates next hash value.
static int hashOffset (const int head)
 Hash function calculates hash offset.
static void writeCode (LZWEncodeState *s, int c)
 Write one code to stream.
static int findCode (LZWEncodeState *s, uint8_t c, int hash_prefix)
 Find LZW code for block.
static void addCode (LZWEncodeState *s, uint8_t c, int hash_prefix, int hash_code)
 Add block to LZW code table.
static void clearTable (LZWEncodeState *s)
 Clear LZW code table.
static int writtenBytes (LZWEncodeState *s)
 Calculate number of bytes written.
void ff_lzw_encode_init (LZWEncodeState *s, uint8_t *outbuf, int outsize, int maxbits, enum FF_LZW_MODES mode, void(*lzw_put_bits)(PutBitContext *, int, unsigned))
 Initialize LZW encoder.
int ff_lzw_encode (LZWEncodeState *s, const uint8_t *inbuf, int insize)
 LZW main compress function.
int ff_lzw_encode_flush (LZWEncodeState *s, void(*lzw_flush_put_bits)(PutBitContext *))
 Write end code and flush bitstream.

Variables

const int ff_lzw_encode_state_size = sizeof(LZWEncodeState)


Detailed Description

LZW encoder.

Author:
Bartlomiej Wolowiec

Definition in file lzwenc.c.


Define Documentation

#define LZW_HASH_SHIFT   6

Definition at line 35 of file lzwenc.c.

Referenced by hash().

#define LZW_HASH_SIZE   16411

Definition at line 34 of file lzwenc.c.

Referenced by clearTable(), hash(), hashNext(), and hashOffset().

#define LZW_MAXBITS   12

Definition at line 32 of file lzwenc.c.

#define LZW_PREFIX_EMPTY   -1

Definition at line 37 of file lzwenc.c.

Referenced by clearTable(), ff_lzw_encode(), and ff_lzw_encode_init().

#define LZW_PREFIX_FREE   -2

Definition at line 38 of file lzwenc.c.

Referenced by clearTable(), ff_lzw_encode(), and findCode().

#define LZW_SIZTABLE   (1<<LZW_MAXBITS)

Definition at line 33 of file lzwenc.c.


Function Documentation

static void addCode ( LZWEncodeState s,
uint8_t  c,
int  hash_prefix,
int  hash_code 
) [inline, static]

Add block to LZW code table.

Parameters:
s LZW state
c Last character in block
hash_prefix LZW code for prefix
hash_code LZW code for bytes block

Definition at line 148 of file lzwenc.c.

Referenced by ff_lzw_encode().

static void clearTable ( LZWEncodeState s  )  [static]

Clear LZW code table.

Parameters:
s LZW state

Definition at line 164 of file lzwenc.c.

Referenced by ff_lzw_encode().

int ff_lzw_encode ( LZWEncodeState s,
const uint8_t *  inbuf,
int  insize 
)

LZW main compress function.

Parameters:
s LZW state
inbuf Input buffer
insize Size of input buffer
Returns:
Number of bytes written or -1 on error

Definition at line 226 of file lzwenc.c.

Referenced by encode_strip(), and gif_image_write_image().

int ff_lzw_encode_flush ( LZWEncodeState s,
void(*)(PutBitContext *)  lzw_flush_put_bits 
)

Write end code and flush bitstream.

Parameters:
s LZW state
Returns:
Number of bytes written or -1 on error

Definition at line 259 of file lzwenc.c.

void ff_lzw_encode_init ( LZWEncodeState s,
uint8_t *  outbuf,
int  outsize,
int  maxbits,
enum FF_LZW_MODES  mode,
void(*)(PutBitContext *, int, unsigned)  lzw_put_bits 
)

Initialize LZW encoder.

Please set s->clear_code, s->end_code and s->maxbits before run.

Parameters:
s LZW state
outbuf Output buffer
outsize Size of output buffer
maxbits Maximum length of code

Definition at line 201 of file lzwenc.c.

static int findCode ( LZWEncodeState s,
uint8_t  c,
int  hash_prefix 
) [inline, static]

Find LZW code for block.

Parameters:
s LZW state
c Last character in block
hash_prefix LZW code for prefix
Returns:
LZW code for block or -1 if not found in table

Definition at line 126 of file lzwenc.c.

Referenced by ff_lzw_encode().

static int hash ( int  head,
const int  add 
) [inline, static]

Hash function adding character.

Parameters:
head LZW code for prefix
add Character to add
Returns:
New hash value

Definition at line 74 of file lzwenc.c.

Referenced by adpcm_compress_trellis(), bidir_refine(), clearTable(), ff_lzw_encode(), findCode(), make_digest_auth(), and sap_fetch_packet().

static int hashNext ( int  head,
const int  offset 
) [inline, static]

Hash function calculates next hash value.

Parameters:
head Actual hash code
offset Offset calculated by hashOffset
Returns:
New hash value

Definition at line 89 of file lzwenc.c.

Referenced by findCode().

static int hashOffset ( const int  head  )  [inline, static]

Hash function calculates hash offset.

Parameters:
head Actual hash code
Returns:
Hash offset

Definition at line 102 of file lzwenc.c.

Referenced by findCode().

static void writeCode ( LZWEncodeState s,
int  c 
) [inline, static]

Write one code to stream.

Parameters:
s LZW state
c code to write

Definition at line 112 of file lzwenc.c.

Referenced by clearTable(), ff_lzw_encode(), and ff_lzw_encode_flush().

static int writtenBytes ( LZWEncodeState s  )  [static]

Calculate number of bytes written.

Parameters:
s LZW encode state
Returns:
Number of bytes written

Definition at line 187 of file lzwenc.c.

Referenced by ff_lzw_encode(), and ff_lzw_encode_flush().


Variable Documentation

Definition at line 66 of file lzwenc.c.

Referenced by gif_encode_init().


Generated on Fri Oct 26 02:43:48 2012 for FFmpeg by  doxygen 1.5.8