rename BitReader to VP8LBitReader

Change-Id: I192b76422e131a94fb58c2c4a5520a5dba807126
This commit is contained in:
Pascal Massimino 2012-04-13 01:56:31 -07:00
parent 90ead710dc
commit fac0f12e1b
4 changed files with 29 additions and 29 deletions

View File

@ -82,7 +82,7 @@ static int DecodeImageStream(int xsize, int ysize,
//------------------------------------------------------------------------------
static int ReadImageSize(BitReader* const br,
static int ReadImageSize(VP8LBitReader* const br,
int* const width, int* const height) {
const int signature = VP8LReadBits(br, 8);
if (signature != LOSSLESS_MAGIC_BYTE &&
@ -100,7 +100,7 @@ int VP8LGetInfo(const uint8_t* data, int data_size,
return 0; // not enough data
} else {
int w, h;
BitReader br;
VP8LBitReader br;
VP8LInitBitReader(&br, data, data_size);
if (!ReadImageSize(&br, &w, &h)) {
return 0;
@ -114,7 +114,7 @@ int VP8LGetInfo(const uint8_t* data, int data_size,
//------------------------------------------------------------------------------
static WEBP_INLINE int GetCopyDistance(int distance_symbol,
BitReader* const br) {
VP8LBitReader* const br) {
int extra_bits, offset;
if (distance_symbol < 4) {
return distance_symbol + 1;
@ -125,7 +125,7 @@ static WEBP_INLINE int GetCopyDistance(int distance_symbol,
}
static WEBP_INLINE int GetCopyLength(int length_symbol,
BitReader* const br) {
VP8LBitReader* const br) {
// Length and distance prefixes are encoded the same way.
return GetCopyDistance(length_symbol, br);
}
@ -145,7 +145,7 @@ static WEBP_INLINE int PlaneCodeToDistance(int xsize, int plane_code) {
// Decodes the next Huffman code from bit-stream.
// FillBitWindow(br) needs to be called at minimum every second call
// to ReadSymbolUnsafe.
static int ReadSymbolUnsafe(const HuffmanTree* tree, BitReader* const br) {
static int ReadSymbolUnsafe(const HuffmanTree* tree, VP8LBitReader* const br) {
const HuffmanTreeNode* node = tree->root_;
assert(node != NULL);
while (!HuffmanTreeNodeIsLeaf(node)) {
@ -155,7 +155,7 @@ static int ReadSymbolUnsafe(const HuffmanTree* tree, BitReader* const br) {
}
static WEBP_INLINE int ReadSymbol(const HuffmanTree* tree,
BitReader* const br) {
VP8LBitReader* const br) {
const int read_safe = (br->pos_ > br->len_ - 8);
if (!read_safe) {
return ReadSymbolUnsafe(tree, br);
@ -173,7 +173,7 @@ static int ReadHuffmanCodeLengths(
VP8LDecoder* const dec, const int* const code_length_code_lengths,
int num_codes, int num_symbols, int* const code_lengths) {
int ok = 0;
BitReader* const br = &dec->br_;
VP8LBitReader* const br = &dec->br_;
int symbol;
int max_symbol;
int prev_code_len = DEFAULT_CODE_LENGTH;
@ -229,7 +229,7 @@ static int ReadHuffmanCodeLengths(
static int ReadHuffmanCode(int alphabet_size, VP8LDecoder* const dec,
HuffmanTree* const tree) {
int ok = 0;
BitReader* const br = &dec->br_;
VP8LBitReader* const br = &dec->br_;
const int simple_code = VP8LReadBits(br, 1);
if (simple_code) { // Read symbols, codes & code lengths directly.
@ -297,7 +297,7 @@ static int ReadHuffmanCodes(VP8LDecoder* const dec, int xsize, int ysize,
int* const color_cache_bits_ptr) {
int ok = 0;
int i;
BitReader* const br = &dec->br_;
VP8LBitReader* const br = &dec->br_;
VP8LMetadata* const hdr = &dec->hdr_;
uint32_t* huffman_image = NULL;
HuffmanTree* htrees = NULL;
@ -586,7 +586,7 @@ static int DecodeImageData(VP8LDecoder* const dec,
int process_row) {
int ok = 1;
int col = 0, row = 0;
BitReader* const br = &dec->br_;
VP8LBitReader* const br = &dec->br_;
VP8LMetadata* const hdr = &dec->hdr_;
VP8LColorCache* const color_cache = hdr->color_cache_;
uint32_t* src = data;
@ -744,7 +744,7 @@ static int ExpandColorMap(int num_colors, VP8LTransform* const transform) {
static int ReadTransform(int* const xsize, int const* ysize,
VP8LDecoder* const dec) {
int ok = 1;
BitReader* const br = &dec->br_;
VP8LBitReader* const br = &dec->br_;
VP8LTransform* transform = &dec->transforms_[dec->next_transform_];
const VP8LImageTransformType type =
(VP8LImageTransformType)VP8LReadBits(br, 2);
@ -871,7 +871,7 @@ static int DecodeImageStream(int xsize, int ysize,
uint32_t* data = NULL;
int color_cache_bits = 0;
BitReader* const br = &dec->br_;
VP8LBitReader* const br = &dec->br_;
int transform_start_idx = dec->next_transform_;
// Step#1: Read the transforms (may recurse).

View File

@ -77,7 +77,7 @@ typedef struct {
uint32_t *argb_; // Internal data: always in BGRA color mode.
uint32_t *argb_cache_; // Scratch buffer for temporary BGRA storage.
BitReader br_;
VP8LBitReader br_;
int width_;
int height_;

View File

@ -95,14 +95,16 @@ int32_t VP8GetSignedValue(VP8BitReader* const br, int bits) {
}
//------------------------------------------------------------------------------
// BitReader
// VP8LBitReader
#define MAX_NUM_BIT_READ 25
static const uint32_t kBitMask[MAX_NUM_BIT_READ] = {
0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,
65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215
};
void VP8LInitBitReader(BitReader* const br,
void VP8LInitBitReader(VP8LBitReader* const br,
const uint8_t* const start,
size_t length) {
size_t i;
@ -122,14 +124,14 @@ void VP8LInitBitReader(BitReader* const br,
}
}
void VP8LBitReaderSetBuffer(BitReader* const br,
void VP8LBitReaderSetBuffer(VP8LBitReader* const br,
const uint8_t* const buf, size_t len) {
br->eos_ = (br->pos_ >= len);
br->buf_ = buf;
br->len_ = len;
}
static void ShiftBytes(BitReader* const br) {
static void ShiftBytes(VP8LBitReader* const br) {
while (br->bit_pos_ >= 8 && br->pos_ < br->len_) {
br->val_ >>= 8;
br->val_ |= ((uint64_t)br->buf_[br->pos_]) << 56;
@ -138,7 +140,7 @@ static void ShiftBytes(BitReader* const br) {
}
}
void VP8LFillBitWindow(BitReader* const br) {
void VP8LFillBitWindow(VP8LBitReader* const br) {
if (br->bit_pos_ >= 32) {
#if defined(__x86_64__)
if (br->pos_ < br->len_ - 8) {
@ -162,7 +164,7 @@ void VP8LFillBitWindow(BitReader* const br) {
}
}
uint32_t VP8LReadOneBit(BitReader* const br) {
uint32_t VP8LReadOneBit(VP8LBitReader* const br) {
const uint32_t val = (br->val_ >> br->bit_pos_) & 1;
// Flag an error at end_of_stream.
if (!br->eos_) {
@ -180,7 +182,7 @@ uint32_t VP8LReadOneBit(BitReader* const br) {
return val;
}
uint32_t VP8LReadBits(BitReader* const br, int n_bits) {
uint32_t VP8LReadBits(VP8LBitReader* const br, int n_bits) {
uint32_t val = 0;
assert(n_bits >= 0);
// Flag an error if end_of_stream or n_bits is more than allowed limit.

View File

@ -152,8 +152,6 @@ static WEBP_INLINE int VP8GetSigned(VP8BitReader* const br, int v) {
// -----------------------------------------------------------------------------
// Bitreader
#define MAX_NUM_BIT_READ 25
typedef struct {
uint64_t val_;
const uint8_t* buf_;
@ -162,36 +160,36 @@ typedef struct {
int bit_pos_;
int eos_;
int error_;
} BitReader;
} VP8LBitReader;
void VP8LInitBitReader(BitReader* const br,
void VP8LInitBitReader(VP8LBitReader* const br,
const uint8_t* const start,
size_t length);
// Sets a new data buffer.
void VP8LBitReaderSetBuffer(BitReader* const br,
void VP8LBitReaderSetBuffer(VP8LBitReader* const br,
const uint8_t* const buffer, size_t length);
// Reads the specified number of bits from Read Buffer.
// Flags an error in case end_of_stream or n_bits is more than allowed limit.
// Flags eos if this read attempt is going to cross the read buffer.
uint32_t VP8LReadBits(BitReader* const br, int n_bits);
uint32_t VP8LReadBits(VP8LBitReader* const br, int n_bits);
// Reads one bit from Read Buffer. Flags an error in case end_of_stream.
// Flags eos after reading last bit from the buffer.
uint32_t VP8LReadOneBit(BitReader* const br);
uint32_t VP8LReadOneBit(VP8LBitReader* const br);
// VP8LReadOneBitUnsafe is faster than VP8LReadOneBit, but it can be called only
// 32 times after the last VP8LFillBitWindow. Any subsequent calls
// (without VP8LFillBitWindow) will return invalid data.
static WEBP_INLINE uint32_t VP8LReadOneBitUnsafe(BitReader* const br) {
static WEBP_INLINE uint32_t VP8LReadOneBitUnsafe(VP8LBitReader* const br) {
const uint32_t val = (br->val_ >> br->bit_pos_) & 1;
++br->bit_pos_;
return val;
}
// Advances the Read buffer by 4 bytes to make room for reading next 32 bits.
void VP8LFillBitWindow(BitReader* const br);
void VP8LFillBitWindow(VP8LBitReader* const br);
#if defined(__cplusplus) || defined(c_plusplus)
} // extern "C"