1ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang/*
2ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *
4ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *  Use of this source code is governed by a BSD-style license
5ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *  that can be found in the LICENSE file in the root of the source
6ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *  tree. An additional intellectual property rights grant can be found
7ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *  in the file PATENTS.  All contributing project authors may
8ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *  be found in the AUTHORS file in the root of the source tree.
9ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang */
10ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang
11ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang
12ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#include "vp9/common/vp9_blockd.h"
13ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#include "vp9/encoder/vp9_onyx_int.h"
14ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#include "vp9/encoder/vp9_treewriter.h"
15ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#include "vp9/common/vp9_entropymode.h"
16ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang
17ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang
18ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangvoid vp9_init_mode_costs(VP9_COMP *c) {
191184aebb761cbeac9124c37189a80a1a58f04b6bhkuang  VP9_COMMON *const cm = &c->common;
205ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang  const vp9_tree_index *KT = vp9_intra_mode_tree;
21ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang  int i, j;
22ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang
231184aebb761cbeac9124c37189a80a1a58f04b6bhkuang  for (i = 0; i < INTRA_MODES; i++) {
241184aebb761cbeac9124c37189a80a1a58f04b6bhkuang    for (j = 0; j < INTRA_MODES; j++) {
2591037db265ecdd914a26e056cf69207b4f50924ehkuang      vp9_cost_tokens((int *)c->mb.y_mode_costs[i][j], vp9_kf_y_mode_prob[i][j],
2691037db265ecdd914a26e056cf69207b4f50924ehkuang                      KT);
27ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    }
28ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang  }
29ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang
30ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang  // TODO(rbultje) separate tables for superblock costing?
311184aebb761cbeac9124c37189a80a1a58f04b6bhkuang  vp9_cost_tokens(c->mb.mbmode_cost, cm->fc.y_mode_prob[1],
32ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                  vp9_intra_mode_tree);
33ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang  vp9_cost_tokens(c->mb.intra_uv_mode_cost[1],
341184aebb761cbeac9124c37189a80a1a58f04b6bhkuang                  cm->fc.uv_mode_prob[INTRA_MODES - 1], vp9_intra_mode_tree);
35ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang  vp9_cost_tokens(c->mb.intra_uv_mode_cost[0],
361184aebb761cbeac9124c37189a80a1a58f04b6bhkuang                  vp9_kf_uv_mode_prob[INTRA_MODES - 1],
3791037db265ecdd914a26e056cf69207b4f50924ehkuang                  vp9_intra_mode_tree);
38ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang
395ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang  for (i = 0; i < SWITCHABLE_FILTER_CONTEXTS; ++i)
40ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    vp9_cost_tokens((int *)c->mb.switchable_interp_costs[i],
411184aebb761cbeac9124c37189a80a1a58f04b6bhkuang                    cm->fc.switchable_interp_prob[i],
42ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                    vp9_switchable_interp_tree);
43ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang}
44