Commit 44460148 authored by Nathan E. Egge's avatar Nathan E. Egge Committed by Yaowu Xu
Browse files

Add API for writing trees using a CDF.

Added aom_write_tree_cdf() and aom_read_tree_cdf() function calls to
 bitwriter.h and bitreader.h respectively.
These calls take a multisymbol CDF and an index and directly encode the
 symbol using the enabled entropy coder.
Currently only the daala entropy encoder supports this (enabled with
 --enable-daala_ec) and a compile error is thrown otherwise.

Change-Id: I2fa1e87af4352c94384e0cfdbfd170ac99cf3705
parent e2ed4118
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "aom_dsp/dkboolreader.h" #include "aom_dsp/dkboolreader.h"
#endif #endif
#include "aom_dsp/prob.h" #include "aom_dsp/prob.h"
#include "av1/common/odintrin.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
...@@ -136,6 +137,19 @@ static INLINE int aom_read_symbol(aom_reader *r, const aom_cdf_prob *cdf, ...@@ -136,6 +137,19 @@ static INLINE int aom_read_symbol(aom_reader *r, const aom_cdf_prob *cdf,
#endif #endif
} }
static INLINE int aom_read_tree_cdf(aom_reader *r, const uint16_t *cdf,
int nsymbs) {
#if CONFIG_DAALA_EC
return daala_read_tree_cdf(r, cdf, nsymbs);
#else
(void)r;
(void)cdf;
(void)nsymbs;
assert(0 && "Unsupported bitreader operation");
return -1;
#endif
}
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
#endif #endif
......
...@@ -116,6 +116,19 @@ static INLINE void aom_write_symbol(aom_writer *w, int symb, ...@@ -116,6 +116,19 @@ static INLINE void aom_write_symbol(aom_writer *w, int symb,
#endif #endif
} }
static INLINE void aom_write_tree_cdf(aom_writer *w, int symb,
const uint16_t *cdf, int nsymbs) {
#if CONFIG_DAALA_EC
daala_write_tree_cdf(w, symb, cdf, nsymbs);
#else
(void)w;
(void)symb;
(void)cdf;
(void)nsymbs;
assert(0 && "Unsupported bitwriter operation");
#endif
}
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
#endif #endif
......
...@@ -66,6 +66,11 @@ static INLINE int daala_read_tree_bits(daala_reader *r, ...@@ -66,6 +66,11 @@ static INLINE int daala_read_tree_bits(daala_reader *r,
return -i; return -i;
} }
static INLINE int daala_read_tree_cdf(daala_reader *r, const uint16_t *cdf,
int nsymbs) {
return od_ec_decode_cdf_q15(&r->ec, cdf, nsymbs, "aom");
}
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
#endif #endif
......
...@@ -78,6 +78,11 @@ static INLINE void daala_write_tree_bits(daala_writer *w, ...@@ -78,6 +78,11 @@ static INLINE void daala_write_tree_bits(daala_writer *w,
} while (len); } while (len);
} }
static INLINE void daala_write_tree_cdf(daala_writer *w, int symb,
const uint16_t *cdf, int nsymbs) {
od_ec_encode_cdf_q15(&w->ec, symb, cdf, nsymbs);
}
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
#endif #endif
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment