mirror of
https://github.com/webmproject/libwebp.git
synced 2025-07-13 14:34:33 +02:00
Unify the API between VP8BitWriter and VP8LBitWriter
BitReader will be next... Change-Id: Icd9e7ab2e3890131e664c0523627d9b8c5399a74
This commit is contained in:
@ -140,19 +140,20 @@ int VP8PutBitUniform(VP8BitWriter* const bw, int bit) {
|
||||
return bit;
|
||||
}
|
||||
|
||||
void VP8PutValue(VP8BitWriter* const bw, int value, int nb_bits) {
|
||||
int mask;
|
||||
for (mask = 1 << (nb_bits - 1); mask; mask >>= 1)
|
||||
void VP8PutBits(VP8BitWriter* const bw, uint32_t value, int nb_bits) {
|
||||
uint32_t mask;
|
||||
assert(nb_bits > 0 && nb_bits < 32);
|
||||
for (mask = 1u << (nb_bits - 1); mask; mask >>= 1)
|
||||
VP8PutBitUniform(bw, value & mask);
|
||||
}
|
||||
|
||||
void VP8PutSignedValue(VP8BitWriter* const bw, int value, int nb_bits) {
|
||||
void VP8PutSignedBits(VP8BitWriter* const bw, int value, int nb_bits) {
|
||||
if (!VP8PutBitUniform(bw, value != 0))
|
||||
return;
|
||||
if (value < 0) {
|
||||
VP8PutValue(bw, ((-value) << 1) | 1, nb_bits + 1);
|
||||
VP8PutBits(bw, ((-value) << 1) | 1, nb_bits + 1);
|
||||
} else {
|
||||
VP8PutValue(bw, value << 1, nb_bits + 1);
|
||||
VP8PutBits(bw, value << 1, nb_bits + 1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -171,7 +172,7 @@ int VP8BitWriterInit(VP8BitWriter* const bw, size_t expected_size) {
|
||||
}
|
||||
|
||||
uint8_t* VP8BitWriterFinish(VP8BitWriter* const bw) {
|
||||
VP8PutValue(bw, 0, 9 - bw->nb_bits_);
|
||||
VP8PutBits(bw, 0, 9 - bw->nb_bits_);
|
||||
bw->nb_bits_ = 0; // pad with zeroes
|
||||
Flush(bw);
|
||||
return bw->buf_;
|
||||
@ -242,14 +243,14 @@ int VP8LBitWriterInit(VP8LBitWriter* const bw, size_t expected_size) {
|
||||
return VP8LBitWriterResize(bw, expected_size);
|
||||
}
|
||||
|
||||
void VP8LBitWriterDestroy(VP8LBitWriter* const bw) {
|
||||
void VP8LBitWriterWipeOut(VP8LBitWriter* const bw) {
|
||||
if (bw != NULL) {
|
||||
WebPSafeFree(bw->buf_);
|
||||
memset(bw, 0, sizeof(*bw));
|
||||
}
|
||||
}
|
||||
|
||||
void VP8LWriteBits(VP8LBitWriter* const bw, int n_bits, uint32_t bits) {
|
||||
void VP8LPutBits(VP8LBitWriter* const bw, uint32_t bits, int n_bits) {
|
||||
assert(n_bits <= 32);
|
||||
// That's the max we can handle:
|
||||
assert(bw->used_ + n_bits <= 2 * VP8L_WRITER_MAX_BITS);
|
||||
|
@ -45,8 +45,8 @@ void VP8BitWriterWipeOut(VP8BitWriter* const bw);
|
||||
|
||||
int VP8PutBit(VP8BitWriter* const bw, int bit, int prob);
|
||||
int VP8PutBitUniform(VP8BitWriter* const bw, int bit);
|
||||
void VP8PutValue(VP8BitWriter* const bw, int value, int nb_bits);
|
||||
void VP8PutSignedValue(VP8BitWriter* const bw, int value, int nb_bits);
|
||||
void VP8PutBits(VP8BitWriter* const bw, uint32_t value, int nb_bits);
|
||||
void VP8PutSignedBits(VP8BitWriter* const bw, int value, int nb_bits);
|
||||
|
||||
// Appends some bytes to the internal buffer. Data is copied.
|
||||
int VP8BitWriterAppend(VP8BitWriter* const bw,
|
||||
@ -97,19 +97,19 @@ static WEBP_INLINE size_t VP8LBitWriterNumBytes(VP8LBitWriter* const bw) {
|
||||
return (bw->cur_ - bw->buf_) + ((bw->used_ + 7) >> 3);
|
||||
}
|
||||
|
||||
uint8_t* VP8LBitWriterFinish(VP8LBitWriter* const bw);
|
||||
|
||||
// Returns 0 in case of memory allocation error.
|
||||
// Returns false in case of memory allocation error.
|
||||
int VP8LBitWriterInit(VP8LBitWriter* const bw, size_t expected_size);
|
||||
|
||||
void VP8LBitWriterDestroy(VP8LBitWriter* const bw);
|
||||
// Finalize the bitstream coding. Returns a pointer to the internal buffer.
|
||||
uint8_t* VP8LBitWriterFinish(VP8LBitWriter* const bw);
|
||||
// Release any pending memory and zeroes the object.
|
||||
void VP8LBitWriterWipeOut(VP8LBitWriter* const bw);
|
||||
|
||||
// This function writes bits into bytes in increasing addresses (little endian),
|
||||
// and within a byte least-significant-bit first.
|
||||
// This function can write up to 32 bits in one go, but VP8LBitReader can only
|
||||
// read 24 bits max (VP8L_MAX_NUM_BIT_READ).
|
||||
// VP8LBitWriter's error_ flag is set in case of memory allocation error.
|
||||
void VP8LWriteBits(VP8LBitWriter* const bw, int n_bits, uint32_t bits);
|
||||
void VP8LPutBits(VP8LBitWriter* const bw, uint32_t bits, int n_bits);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
Reference in New Issue
Block a user