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