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
11#ifndef VP8_ENCODER_TOKENIZE_H_
12#define VP8_ENCODER_TOKENIZE_H_
13
14#include "vp8/common/entropy.h"
15#include "block.h"
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21void vp8_tokenize_initialize();
22
23typedef struct {
24  short Token;
25  short Extra;
26} TOKENVALUE;
27
28typedef struct {
29  const vp8_prob *context_tree;
30  short Extra;
31  unsigned char Token;
32  unsigned char skip_eob_node;
33} TOKENEXTRA;
34
35int rd_cost_mby(MACROBLOCKD *);
36
37#ifdef VP8_ENTROPY_STATS
38void init_context_counters();
39void print_context_counters();
40
41extern _int64 context_counters[BLOCK_TYPES][COEF_BANDS][PREV_COEF_CONTEXTS]
42                              [MAX_ENTROPY_TOKENS];
43#endif
44
45extern const short *const vp8_dct_value_cost_ptr;
46/* TODO: The Token field should be broken out into a separate char array to
47 *  improve cache locality, since it's needed for costing when the rest of the
48 *  fields are not.
49 */
50extern const TOKENVALUE *const vp8_dct_value_tokens_ptr;
51
52#ifdef __cplusplus
53}  // extern "C"
54#endif
55
56#endif  // VP8_ENCODER_TOKENIZE_H_
57