treereader.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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,
  26. const vp8_prob *const p
  27. )
  28. {
  29. register vp8_tree_index i = 0;
  30. while ((i = t[ i + vp8_read(r, p[i>>1])]) > 0) ;
  31. return -i;
  32. }
  33. #ifdef __cplusplus
  34. } // extern "C"
  35. #endif
  36. #endif // VP8_DECODER_TREEREADER_H_