summaryrefslogtreecommitdiffstats
path: root/third_party/aom/aom_dsp/bitwriter.h
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/aom/aom_dsp/bitwriter.h')
-rw-r--r--third_party/aom/aom_dsp/bitwriter.h132
1 files changed, 5 insertions, 127 deletions
diff --git a/third_party/aom/aom_dsp/bitwriter.h b/third_party/aom/aom_dsp/bitwriter.h
index 7d3b34306..de1b1d048 100644
--- a/third_party/aom/aom_dsp/bitwriter.h
+++ b/third_party/aom/aom_dsp/bitwriter.h
@@ -13,13 +13,10 @@
#define AOM_DSP_BITWRITER_H_
#include <assert.h>
-#include "./aom_config.h"
-#if CONFIG_ANS
-#include "aom_dsp/buf_ans.h"
-#else
+#include "config/aom_config.h"
+
#include "aom_dsp/daalaboolwriter.h"
-#endif
#include "aom_dsp/prob.h"
#if CONFIG_RD_DEBUG
@@ -31,23 +28,16 @@
extern "C" {
#endif
-#if CONFIG_ANS
-typedef struct BufAnsCoder aom_writer;
-#else
typedef struct daala_writer aom_writer;
-#endif
typedef struct TOKEN_STATS {
int cost;
-#if CONFIG_VAR_TX
#if CONFIG_RD_DEBUG
int txb_coeff_cost_map[TXB_COEFF_COST_MAP_SIZE][TXB_COEFF_COST_MAP_SIZE];
#endif
-#endif
} TOKEN_STATS;
static INLINE void init_token_stats(TOKEN_STATS *token_stats) {
-#if CONFIG_VAR_TX
#if CONFIG_RD_DEBUG
int r, c;
for (r = 0; r < TXB_COEFF_COST_MAP_SIZE; ++r) {
@@ -56,65 +46,23 @@ static INLINE void init_token_stats(TOKEN_STATS *token_stats) {
}
}
#endif
-#endif
token_stats->cost = 0;
}
static INLINE void aom_start_encode(aom_writer *bc, uint8_t *buffer) {
-#if CONFIG_ANS
- aom_buf_ans_alloc(bc, /* error context*/ NULL);
- buf_ans_write_init(bc, buffer);
-#else
aom_daala_start_encode(bc, buffer);
-#endif
}
-static INLINE void aom_stop_encode(aom_writer *bc) {
-#if CONFIG_ANS
- aom_buf_ans_flush(bc);
- bc->pos = buf_ans_write_end(bc);
-#else
- aom_daala_stop_encode(bc);
-#endif
+static INLINE int aom_stop_encode(aom_writer *bc) {
+ return aom_daala_stop_encode(bc);
}
static INLINE void aom_write(aom_writer *br, int bit, int probability) {
-#if CONFIG_ANS
- buf_rabs_write(br, bit, probability);
-#else
aom_daala_write(br, bit, probability);
-#endif
-}
-
-static INLINE void aom_write_record(aom_writer *br, int bit, int probability,
- TOKEN_STATS *token_stats) {
- aom_write(br, bit, probability);
-#if CONFIG_RD_DEBUG
- token_stats->cost += av1_cost_bit(probability, bit);
-#else
- (void)token_stats;
-#endif
}
static INLINE void aom_write_bit(aom_writer *w, int bit) {
-#if CONFIG_ANS
- buf_rabs_write_bit(w, bit);
-#elif CONFIG_RAWBITS
- // Note this uses raw bits and is not the same as aom_daala_write(r, 128);
- aom_daala_write_bit(w, bit);
-#else
aom_write(w, bit, 128); // aom_prob_half
-#endif
-}
-
-static INLINE void aom_write_bit_record(aom_writer *w, int bit,
- TOKEN_STATS *token_stats) {
- aom_write_bit(w, bit);
-#if CONFIG_RD_DEBUG
- token_stats->cost += av1_cost_bit(128, bit); // aom_prob_half
-#else
- (void)token_stats;
-#endif
}
static INLINE void aom_write_literal(aom_writer *w, int data, int bits) {
@@ -125,83 +73,13 @@ static INLINE void aom_write_literal(aom_writer *w, int data, int bits) {
static INLINE void aom_write_cdf(aom_writer *w, int symb,
const aom_cdf_prob *cdf, int nsymbs) {
-#if CONFIG_ANS
- (void)nsymbs;
- assert(cdf);
- const aom_cdf_prob cum_prob = symb > 0 ? cdf[symb - 1] : 0;
- const aom_cdf_prob prob = cdf[symb] - cum_prob;
- buf_rans_write(w, cum_prob, prob);
-#else
daala_write_symbol(w, symb, cdf, nsymbs);
-#endif
}
static INLINE void aom_write_symbol(aom_writer *w, int symb, aom_cdf_prob *cdf,
int nsymbs) {
aom_write_cdf(w, symb, cdf, nsymbs);
- update_cdf(cdf, symb, nsymbs);
-}
-
-#if CONFIG_LV_MAP
-static INLINE void aom_write_bin(aom_writer *w, int symb, aom_cdf_prob *cdf,
- int nsymbs) {
- aom_write_cdf(w, symb, cdf, nsymbs);
- update_cdf(cdf, symb, nsymbs);
-}
-#endif
-
-static INLINE void aom_write_tree_as_cdf(aom_writer *w,
- const aom_tree_index *tree,
- const aom_prob *probs, int bits,
- int len, aom_tree_index i) {
- aom_tree_index root;
- root = i;
- do {
- aom_cdf_prob cdf[16];
- aom_tree_index index[16];
- int path[16];
- int dist[16];
- int nsymbs;
- int symb;
- int j;
- /* Compute the CDF of the binary tree using the given probabilities. */
- nsymbs = tree_to_cdf(tree, probs, root, cdf, index, path, dist);
- /* Find the symbol to code. */
- symb = -1;
- for (j = 0; j < nsymbs; j++) {
- /* If this symbol codes a leaf node, */
- if (index[j] <= 0) {
- if (len == dist[j] && path[j] == bits) {
- symb = j;
- break;
- }
- } else {
- if (len > dist[j] && path[j] == bits >> (len - dist[j])) {
- symb = j;
- break;
- }
- }
- }
- OD_ASSERT(symb != -1);
- aom_write_cdf(w, symb, cdf, nsymbs);
- bits &= (1 << (len - dist[symb])) - 1;
- len -= dist[symb];
- } 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_as_cdf(w, tree, probs, bits, len, i);
-}
-
-static INLINE void aom_write_tree_record(aom_writer *w,
- const aom_tree_index *tree,
- const aom_prob *probs, int bits,
- int len, aom_tree_index i,
- TOKEN_STATS *token_stats) {
- (void)token_stats;
- aom_write_tree_as_cdf(w, tree, probs, bits, len, i);
+ if (w->allow_update_cdf) update_cdf(cdf, symb, nsymbs);
}
#ifdef __cplusplus