Refactor bitreader and bitwriter wrapper.
Move code for reading and writing literals and reading trees to use
just the aom_read_bit() and aom_write_bit() function calls.
Change-Id: Id2bced5f0125a5558030a813c51c3d79e5701873
(cherry picked from aom/master commit bc1ac15846
)
This commit is contained in:
Родитель
5d33cc42c3
Коммит
e691a24cff
|
@ -77,25 +77,25 @@ static INLINE int aom_read_bit(aom_reader *r) {
|
|||
#if CONFIG_ANS
|
||||
return uabs_read_bit(r); // Non trivial optimization at half probability
|
||||
#else
|
||||
return aom_dk_read_bit(r);
|
||||
return aom_read(r, 128); // aom_prob_half
|
||||
#endif
|
||||
}
|
||||
|
||||
static INLINE int aom_read_literal(aom_reader *r, int bits) {
|
||||
#if CONFIG_ANS
|
||||
return uabs_read_literal(r, bits);
|
||||
#else
|
||||
return aom_dk_read_literal(r, bits);
|
||||
#endif
|
||||
int literal = 0, bit;
|
||||
|
||||
for (bit = bits - 1; bit >= 0; bit--) literal |= aom_read_bit(r) << bit;
|
||||
|
||||
return literal;
|
||||
}
|
||||
|
||||
static INLINE int aom_read_tree(aom_reader *r, const aom_tree_index *tree,
|
||||
const aom_prob *probs) {
|
||||
#if CONFIG_ANS
|
||||
return uabs_read_tree(r, tree, probs);
|
||||
#else
|
||||
return aom_dk_read_tree(r, tree, probs);
|
||||
#endif
|
||||
aom_tree_index i = 0;
|
||||
|
||||
while ((i = tree[i + aom_read(r, probs[i >> 1])]) > 0) continue;
|
||||
|
||||
return -i;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -18,6 +18,10 @@
|
|||
#include "aom_mem/aom_mem.h"
|
||||
#include "aom_util/endian_inl.h"
|
||||
|
||||
static INLINE int aom_dk_read_bit(struct aom_dk_reader *r) {
|
||||
return aom_dk_read(r, 128); // aom_prob_half
|
||||
}
|
||||
|
||||
int aom_dk_reader_init(struct aom_dk_reader *r, const uint8_t *buffer,
|
||||
size_t size, aom_decrypt_cb decrypt_cb,
|
||||
void *decrypt_state) {
|
||||
|
|
|
@ -135,28 +135,6 @@ static INLINE int aom_dk_read(struct aom_dk_reader *r, int prob) {
|
|||
return bit;
|
||||
}
|
||||
|
||||
static INLINE int aom_dk_read_bit(struct aom_dk_reader *r) {
|
||||
return aom_dk_read(r, 128); // aom_prob_half
|
||||
}
|
||||
|
||||
static INLINE int aom_dk_read_literal(struct aom_dk_reader *r, int bits) {
|
||||
int literal = 0, bit;
|
||||
|
||||
for (bit = bits - 1; bit >= 0; bit--) literal |= aom_dk_read_bit(r) << bit;
|
||||
|
||||
return literal;
|
||||
}
|
||||
|
||||
static INLINE int aom_dk_read_tree(struct aom_dk_reader *r,
|
||||
const aom_tree_index *tree,
|
||||
const aom_prob *probs) {
|
||||
aom_tree_index i = 0;
|
||||
|
||||
while ((i = tree[i + aom_dk_read(r, probs[i >> 1])]) > 0) continue;
|
||||
|
||||
return -i;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
|
@ -12,6 +12,10 @@
|
|||
|
||||
#include "./dkboolwriter.h"
|
||||
|
||||
static INLINE void aom_dk_write_bit(aom_dk_writer *w, int bit) {
|
||||
aom_dk_write(w, bit, 128); // aom_prob_half
|
||||
}
|
||||
|
||||
void aom_dk_start_encode(aom_dk_writer *br, uint8_t *source) {
|
||||
br->lowvalue = 0;
|
||||
br->range = 255;
|
||||
|
|
|
@ -97,16 +97,6 @@ static INLINE void aom_dk_write(aom_dk_writer *br, int bit, int probability) {
|
|||
br->range = range;
|
||||
}
|
||||
|
||||
static INLINE void aom_dk_write_bit(aom_dk_writer *w, int bit) {
|
||||
aom_dk_write(w, bit, 128); // aom_prob_half
|
||||
}
|
||||
|
||||
static INLINE void aom_dk_write_literal(aom_dk_writer *w, int data, int bits) {
|
||||
int bit;
|
||||
|
||||
for (bit = bits - 1; bit >= 0; bit--) aom_dk_write_bit(w, 1 & (data >> bit));
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче