treereader.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
  3. *
  4. * Use of this source code is governed by a BSD-style license
  5. * that can be found in the LICENSE file in the root of the source
  6. * tree. An additional intellectual property rights grant can be found
  7. * in the file PATENTS. All contributing project authors may
  8. * be found in the AUTHORS file in the root of the source tree.
  9. */
  10. #ifndef VP8_DECODER_TREEREADER_H_
  11. #define VP8_DECODER_TREEREADER_H_
  12. #include "./vpx_config.h"
  13. #include "vp8/common/treecoder.h"
  14. #include "dboolhuff.h"
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18. typedef BOOL_DECODER vp8_reader;
  19. #define vp8_read vp8dx_decode_bool
  20. #define vp8_read_literal vp8_decode_value
  21. #define vp8_read_bit(R) vp8_read(R, vp8_prob_half)
  22. /* Intent of tree data structure is to make decoding trivial. */
  23. static INLINE int vp8_treed_read(
  24. vp8_reader *const r, /* !!! must return a 0 or 1 !!! */
  25. vp8_tree t, const vp8_prob *const p) {
  26. register vp8_tree_index i = 0;
  27. while ((i = t[i + vp8_read(r, p[i >> 1])]) > 0) {
  28. }
  29. return -i;
  30. }
  31. #ifdef __cplusplus
  32. } // extern "C"
  33. #endif
  34. #endif // VP8_DECODER_TREEREADER_H_