#include <assert.h>
#include "./vpx_config.h"
#include "vpx/vpx_integer.h"
+#include "vpx_dsp/prob.h"
#include "vpx_ports/mem_ops.h"
#define ANS_DIVIDE_BY_MULTIPLY 1
return literal;
}
+// TODO(aconverse): Replace trees with tokensets.
+static INLINE int uabs_read_tree(struct AnsDecoder *ans,
+ const vpx_tree_index *tree,
+ const AnsP8 *probs) {
+ vpx_tree_index i = 0;
+
+ while ((i = tree[i + uabs_read(ans, probs[i >> 1])]) > 0)
+ continue;
+
+ return -i;
+}
+
struct rans_sym {
AnsP8 prob;
AnsP8 cum_prob; // not-inclusive
--- /dev/null
+/*
+ * Copyright (c) 2016 The WebM project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+/* The purpose of this header is to provide compile time pluggable bit reader
+ * implementations with a common interface. */
+
+#ifndef VPX10_DECODER_BITREADER_H_
+#define VPX10_DECODER_BITREADER_H_
+
+#include "./vpx_config.h"
+
+#if CONFIG_ANS
+#include "vp10/common/ans.h"
+#include "vpx/vp8dx.h" // for vp10_decrypt_cb
+#define vp10_reader struct AnsDecoder
+#define vp10_reader_has_error ans_reader_has_error
+#define vp10_read uabs_read
+#define vp10_read_bit uabs_read_bit
+#define vp10_read_literal uabs_read_literal
+#define vp10_read_tree uabs_read_tree
+#else
+#include "vpx_dsp/bitreader.h"
+#define vp10_reader vpx_reader
+#define vp10_reader_has_error vpx_reader_has_error
+#define vp10_read vpx_read
+#define vp10_read_bit vpx_read_bit
+#define vp10_read_literal vpx_read_literal
+#define vp10_read_tree vpx_read_tree
+#endif
+
+#endif // VPX10_DECODER_BITREADER_H_
VP10_DX_SRCS-yes += decoder/decoder.h
VP10_DX_SRCS-yes += decoder/dsubexp.c
VP10_DX_SRCS-yes += decoder/dsubexp.h
+VP10_DX_SRCS-yes += decoder/bitreader.h
VP10_DX_SRCS-yes := $(filter-out $(VP10_DX_SRCS_REMOVE-yes),$(VP10_DX_SRCS-yes))