Move tree writing code into bitwriter.h.
Rename av1_write_tree() to aom_write_tree() and move it into bitwriter.h to match aom_read_tree() in bitreader.h. Manually cherry-picked from aom/master: 33a143fa7ac42d62080bfc20468cb76ad26045db Change-Id: I6c686cdd3e0f179d7e95c5bc6984558b62d46d67
This commit is contained in:
@@ -90,8 +90,8 @@ static INLINE int aom_read_literal(aom_reader *r, int bits) {
|
||||
return literal;
|
||||
}
|
||||
|
||||
static INLINE int aom_read_tree(aom_reader *r, const aom_tree_index *tree,
|
||||
const aom_prob *probs) {
|
||||
static INLINE int aom_read_tree_bits(aom_reader *r, const aom_tree_index *tree,
|
||||
const aom_prob *probs) {
|
||||
aom_tree_index i = 0;
|
||||
|
||||
while ((i = tree[i + aom_read(r, probs[i >> 1])]) > 0) continue;
|
||||
@@ -99,6 +99,11 @@ static INLINE int aom_read_tree(aom_reader *r, const aom_tree_index *tree,
|
||||
return -i;
|
||||
}
|
||||
|
||||
static INLINE int aom_read_tree(aom_reader *r, const aom_tree_index *tree,
|
||||
const aom_prob *probs) {
|
||||
return aom_read_tree_bits(r, tree, probs);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
@@ -70,6 +70,22 @@ static INLINE void aom_write_literal(aom_writer *w, int data, int bits) {
|
||||
for (bit = bits - 1; bit >= 0; bit--) aom_write_bit(w, 1 & (data >> bit));
|
||||
}
|
||||
|
||||
static INLINE void aom_write_tree_bits(aom_writer *w, const aom_tree_index *tr,
|
||||
const aom_prob *probs, int bits, int len,
|
||||
aom_tree_index i) {
|
||||
do {
|
||||
const int bit = (bits >> --len) & 1;
|
||||
aom_write(w, bit, probs[i >> 1]);
|
||||
i = tr[i + bit];
|
||||
} while (len);
|
||||
}
|
||||
|
||||
static INLINE void aom_write_tree(aom_writer *w, const aom_tree_index *tree,
|
||||
const aom_prob *probs, int bits, int len,
|
||||
aom_tree_index i) {
|
||||
aom_write_tree_bits(w, tree, probs, bits, len, i);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
@@ -662,7 +662,7 @@ static void pack_mb_tokens(aom_writer *w, const TOKENEXTRA **tp,
|
||||
|
||||
if (t != ONE_TOKEN) {
|
||||
int len = UNCONSTRAINED_NODES - p->skip_eob_node;
|
||||
av1_write_tree(w, av1_coef_con_tree,
|
||||
aom_write_tree(w, av1_coef_con_tree,
|
||||
av1_pareto8_full[p->context_tree[PIVOT_NODE] - 1], v,
|
||||
n - len, 0);
|
||||
}
|
||||
@@ -836,7 +836,7 @@ static void write_segment_id(aom_writer *w, const struct segmentation *seg,
|
||||
const struct segmentation_probs *segp,
|
||||
int segment_id) {
|
||||
if (seg->enabled && seg->update_map)
|
||||
av1_write_tree(w, av1_segment_tree, segp->tree_probs, segment_id, 3, 0);
|
||||
aom_write_tree(w, av1_segment_tree, segp->tree_probs, segment_id, 3, 0);
|
||||
}
|
||||
|
||||
// This function encodes the reference frame
|
||||
|
||||
@@ -29,20 +29,10 @@ struct av1_token {
|
||||
|
||||
void av1_tokens_from_tree(struct av1_token *, const aom_tree_index *);
|
||||
|
||||
static INLINE void av1_write_tree(aom_writer *w, const aom_tree_index *tree,
|
||||
const aom_prob *probs, int bits, int len,
|
||||
aom_tree_index i) {
|
||||
do {
|
||||
const int bit = (bits >> --len) & 1;
|
||||
aom_write(w, bit, probs[i >> 1]);
|
||||
i = tree[i + bit];
|
||||
} while (len);
|
||||
}
|
||||
|
||||
static INLINE void av1_write_token(aom_writer *w, const aom_tree_index *tree,
|
||||
const aom_prob *probs,
|
||||
const struct av1_token *token) {
|
||||
av1_write_tree(w, tree, probs, token->value, token->len, 0);
|
||||
aom_write_tree(w, tree, probs, token->value, token->len, 0);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
Reference in New Issue
Block a user