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