16fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org/*
26fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
36fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org *
46fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org *  Use of this source code is governed by a BSD-style license
56fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org *  that can be found in the LICENSE file in the root of the source
66fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org *  tree. An additional intellectual property rights grant can be found
76fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org *  in the file PATENTS.  All contributing project authors may
86fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org *  be found in the AUTHORS file in the root of the source tree.
96fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org */
106fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
113f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org#include "vp9/common/vp9_common.h"
126fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#include "vp9/common/vp9_quant_common.h"
1310a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org#include "vp9/common/vp9_seg_common.h"
146fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
151caff2f5cf4bc45ee1798419784f1416d5787dfefgalligan@chromium.orgstatic const int16_t dc_qlookup[QINDEX_RANGE] = {
16ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  4,       8,    8,    9,   10,   11,   12,   12,
17ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  13,     14,   15,   16,   17,   18,   19,   19,
18ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  20,     21,   22,   23,   24,   25,   26,   26,
19ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  27,     28,   29,   30,   31,   32,   32,   33,
20ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  34,     35,   36,   37,   38,   38,   39,   40,
21ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  41,     42,   43,   43,   44,   45,   46,   47,
22ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  48,     48,   49,   50,   51,   52,   53,   53,
23ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  54,     55,   56,   57,   57,   58,   59,   60,
24ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  61,     62,   62,   63,   64,   65,   66,   66,
25ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  67,     68,   69,   70,   70,   71,   72,   73,
26ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  74,     74,   75,   76,   77,   78,   78,   79,
27ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  80,     81,   81,   82,   83,   84,   85,   85,
28ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  87,     88,   90,   92,   93,   95,   96,   98,
29ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  99,    101,  102,  104,  105,  107,  108,  110,
30ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  111,   113,  114,  116,  117,  118,  120,  121,
31ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  123,   125,  127,  129,  131,  134,  136,  138,
32ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  140,   142,  144,  146,  148,  150,  152,  154,
33ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  156,   158,  161,  164,  166,  169,  172,  174,
34ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  177,   180,  182,  185,  187,  190,  192,  195,
35ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  199,   202,  205,  208,  211,  214,  217,  220,
36ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  223,   226,  230,  233,  237,  240,  243,  247,
37ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  250,   253,  257,  261,  265,  269,  272,  276,
38ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  280,   284,  288,  292,  296,  300,  304,  309,
39ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  313,   317,  322,  326,  330,  335,  340,  344,
40ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  349,   354,  359,  364,  369,  374,  379,  384,
41ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  389,   395,  400,  406,  411,  417,  423,  429,
42ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  435,   441,  447,  454,  461,  467,  475,  482,
43ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  489,   497,  505,  513,  522,  530,  539,  549,
44ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  559,   569,  579,  590,  602,  614,  626,  640,
45ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  654,   668,  684,  700,  717,  736,  755,  775,
46ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  796,   819,  843,  869,  896,  925,  955,  988,
471caff2f5cf4bc45ee1798419784f1416d5787dfefgalligan@chromium.org  1022, 1058, 1098, 1139, 1184, 1232, 1282, 1336,
481caff2f5cf4bc45ee1798419784f1416d5787dfefgalligan@chromium.org};
491caff2f5cf4bc45ee1798419784f1416d5787dfefgalligan@chromium.org
5087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#if CONFIG_VP9_HIGHBITDEPTH
5187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgstatic const int16_t dc_qlookup_10[QINDEX_RANGE] = {
5287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  4,     9,    10,    13,    15,    17,    20,    22,
5387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  25,    28,    31,    34,    37,    40,    43,    47,
5487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  50,    53,    57,    60,    64,    68,    71,    75,
5587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  78,    82,    86,    90,    93,    97,   101,   105,
5687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  109,   113,   116,   120,   124,   128,   132,   136,
5787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  140,   143,   147,   151,   155,   159,   163,   166,
5887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  170,   174,   178,   182,   185,   189,   193,   197,
5987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  200,   204,   208,   212,   215,   219,   223,   226,
6087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  230,   233,   237,   241,   244,   248,   251,   255,
6187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  259,   262,   266,   269,   273,   276,   280,   283,
6287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  287,   290,   293,   297,   300,   304,   307,   310,
6387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  314,   317,   321,   324,   327,   331,   334,   337,
6487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  343,   350,   356,   362,   369,   375,   381,   387,
6587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  394,   400,   406,   412,   418,   424,   430,   436,
6687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  442,   448,   454,   460,   466,   472,   478,   484,
6787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  490,   499,   507,   516,   525,   533,   542,   550,
6887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  559,   567,   576,   584,   592,   601,   609,   617,
6987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  625,   634,   644,   655,   666,   676,   687,   698,
7087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  708,   718,   729,   739,   749,   759,   770,   782,
7187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  795,   807,   819,   831,   844,   856,   868,   880,
7287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  891,   906,   920,   933,   947,   961,   975,   988,
7387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1001,  1015,  1030,  1045,  1061,  1076,  1090,  1105,
7487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1120,  1137,  1153,  1170,  1186,  1202,  1218,  1236,
7587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1253,  1271,  1288,  1306,  1323,  1342,  1361,  1379,
7687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1398,  1416,  1436,  1456,  1476,  1496,  1516,  1537,
7787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1559,  1580,  1601,  1624,  1647,  1670,  1692,  1717,
7887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1741,  1766,  1791,  1817,  1844,  1871,  1900,  1929,
7987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1958,  1990,  2021,  2054,  2088,  2123,  2159,  2197,
8087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  2236,  2276,  2319,  2363,  2410,  2458,  2508,  2561,
8187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  2616,  2675,  2737,  2802,  2871,  2944,  3020,  3102,
8287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  3188,  3280,  3375,  3478,  3586,  3702,  3823,  3953,
8387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  4089,  4236,  4394,  4559,  4737,  4929,  5130,  5347,
8487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org};
8587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org
8687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgstatic const int16_t dc_qlookup_12[QINDEX_RANGE] = {
8787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  4,    12,    18,    25,    33,    41,    50,    60,
8887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  70,    80,    91,   103,   115,   127,   140,   153,
8987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  166,   180,   194,   208,   222,   237,   251,   266,
9087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  281,   296,   312,   327,   343,   358,   374,   390,
9187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  405,   421,   437,   453,   469,   484,   500,   516,
9287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  532,   548,   564,   580,   596,   611,   627,   643,
9387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  659,   674,   690,   706,   721,   737,   752,   768,
9487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  783,   798,   814,   829,   844,   859,   874,   889,
9587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  904,   919,   934,   949,   964,   978,   993,  1008,
9687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1022,  1037,  1051,  1065,  1080,  1094,  1108,  1122,
9787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1136,  1151,  1165,  1179,  1192,  1206,  1220,  1234,
9887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1248,  1261,  1275,  1288,  1302,  1315,  1329,  1342,
9987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1368,  1393,  1419,  1444,  1469,  1494,  1519,  1544,
10087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1569,  1594,  1618,  1643,  1668,  1692,  1717,  1741,
10187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1765,  1789,  1814,  1838,  1862,  1885,  1909,  1933,
10287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1957,  1992,  2027,  2061,  2096,  2130,  2165,  2199,
10387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  2233,  2267,  2300,  2334,  2367,  2400,  2434,  2467,
10487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  2499,  2532,  2575,  2618,  2661,  2704,  2746,  2788,
10587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  2830,  2872,  2913,  2954,  2995,  3036,  3076,  3127,
10687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  3177,  3226,  3275,  3324,  3373,  3421,  3469,  3517,
10787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  3565,  3621,  3677,  3733,  3788,  3843,  3897,  3951,
10887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  4005,  4058,  4119,  4181,  4241,  4301,  4361,  4420,
10987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  4479,  4546,  4612,  4677,  4742,  4807,  4871,  4942,
11087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  5013,  5083,  5153,  5222,  5291,  5367,  5442,  5517,
11187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  5591,  5665,  5745,  5825,  5905,  5984,  6063,  6149,
11287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  6234,  6319,  6404,  6495,  6587,  6678,  6769,  6867,
11387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  6966,  7064,  7163,  7269,  7376,  7483,  7599,  7715,
11487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  7832,  7958,  8085,  8214,  8352,  8492,  8635,  8788,
11587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  8945,  9104,  9275,  9450,  9639,  9832, 10031, 10245,
11687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  10465, 10702, 10946, 11210, 11482, 11776, 12081, 12409,
11787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  12750, 13118, 13501, 13913, 14343, 14807, 15290, 15812,
11887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  16356, 16943, 17575, 18237, 18949, 19718, 20521, 21387,
11987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org};
12087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#endif
12187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org
1221caff2f5cf4bc45ee1798419784f1416d5787dfefgalligan@chromium.orgstatic const int16_t ac_qlookup[QINDEX_RANGE] = {
123ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  4,       8,    9,   10,   11,   12,   13,   14,
124ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  15,     16,   17,   18,   19,   20,   21,   22,
125ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  23,     24,   25,   26,   27,   28,   29,   30,
126ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  31,     32,   33,   34,   35,   36,   37,   38,
127ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  39,     40,   41,   42,   43,   44,   45,   46,
128ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  47,     48,   49,   50,   51,   52,   53,   54,
129ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  55,     56,   57,   58,   59,   60,   61,   62,
130ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  63,     64,   65,   66,   67,   68,   69,   70,
131ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  71,     72,   73,   74,   75,   76,   77,   78,
132ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  79,     80,   81,   82,   83,   84,   85,   86,
133ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  87,     88,   89,   90,   91,   92,   93,   94,
134ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  95,     96,   97,   98,   99,  100,  101,  102,
135ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  104,   106,  108,  110,  112,  114,  116,  118,
136ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  120,   122,  124,  126,  128,  130,  132,  134,
137ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  136,   138,  140,  142,  144,  146,  148,  150,
138ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  152,   155,  158,  161,  164,  167,  170,  173,
139ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  176,   179,  182,  185,  188,  191,  194,  197,
140ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  200,   203,  207,  211,  215,  219,  223,  227,
141ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  231,   235,  239,  243,  247,  251,  255,  260,
142ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  265,   270,  275,  280,  285,  290,  295,  300,
143ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  305,   311,  317,  323,  329,  335,  341,  347,
144ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  353,   359,  366,  373,  380,  387,  394,  401,
145ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  408,   416,  424,  432,  440,  448,  456,  465,
146ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  474,   483,  492,  501,  510,  520,  530,  540,
147ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  550,   560,  571,  582,  593,  604,  615,  627,
148ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  639,   651,  663,  676,  689,  702,  715,  729,
149ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  743,   757,  771,  786,  801,  816,  832,  848,
150ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org  864,   881,  898,  915,  933,  951,  969,  988,
1511caff2f5cf4bc45ee1798419784f1416d5787dfefgalligan@chromium.org  1007, 1026, 1046, 1066, 1087, 1108, 1129, 1151,
1521caff2f5cf4bc45ee1798419784f1416d5787dfefgalligan@chromium.org  1173, 1196, 1219, 1243, 1267, 1292, 1317, 1343,
1531caff2f5cf4bc45ee1798419784f1416d5787dfefgalligan@chromium.org  1369, 1396, 1423, 1451, 1479, 1508, 1537, 1567,
1541caff2f5cf4bc45ee1798419784f1416d5787dfefgalligan@chromium.org  1597, 1628, 1660, 1692, 1725, 1759, 1793, 1828,
1551caff2f5cf4bc45ee1798419784f1416d5787dfefgalligan@chromium.org};
1561caff2f5cf4bc45ee1798419784f1416d5787dfefgalligan@chromium.org
15787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#if CONFIG_VP9_HIGHBITDEPTH
15887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgstatic const int16_t ac_qlookup_10[QINDEX_RANGE] = {
15987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  4,     9,    11,    13,    16,    18,    21,    24,
16087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  27,    30,    33,    37,    40,    44,    48,    51,
16187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  55,    59,    63,    67,    71,    75,    79,    83,
16287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  88,    92,    96,   100,   105,   109,   114,   118,
16387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  122,   127,   131,   136,   140,   145,   149,   154,
16487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  158,   163,   168,   172,   177,   181,   186,   190,
16587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  195,   199,   204,   208,   213,   217,   222,   226,
16687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  231,   235,   240,   244,   249,   253,   258,   262,
16787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  267,   271,   275,   280,   284,   289,   293,   297,
16887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  302,   306,   311,   315,   319,   324,   328,   332,
16987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  337,   341,   345,   349,   354,   358,   362,   367,
17087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  371,   375,   379,   384,   388,   392,   396,   401,
17187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  409,   417,   425,   433,   441,   449,   458,   466,
17287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  474,   482,   490,   498,   506,   514,   523,   531,
17387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  539,   547,   555,   563,   571,   579,   588,   596,
17487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  604,   616,   628,   640,   652,   664,   676,   688,
17587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  700,   713,   725,   737,   749,   761,   773,   785,
17687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  797,   809,   825,   841,   857,   873,   889,   905,
17787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  922,   938,   954,   970,   986,  1002,  1018,  1038,
17887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1058,  1078,  1098,  1118,  1138,  1158,  1178,  1198,
17987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1218,  1242,  1266,  1290,  1314,  1338,  1362,  1386,
18087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1411,  1435,  1463,  1491,  1519,  1547,  1575,  1603,
18187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1631,  1663,  1695,  1727,  1759,  1791,  1823,  1859,
18287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1895,  1931,  1967,  2003,  2039,  2079,  2119,  2159,
18387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  2199,  2239,  2283,  2327,  2371,  2415,  2459,  2507,
18487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  2555,  2603,  2651,  2703,  2755,  2807,  2859,  2915,
18587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  2971,  3027,  3083,  3143,  3203,  3263,  3327,  3391,
18687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  3455,  3523,  3591,  3659,  3731,  3803,  3876,  3952,
18787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  4028,  4104,  4184,  4264,  4348,  4432,  4516,  4604,
18887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  4692,  4784,  4876,  4972,  5068,  5168,  5268,  5372,
18987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  5476,  5584,  5692,  5804,  5916,  6032,  6148,  6268,
19087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  6388,  6512,  6640,  6768,  6900,  7036,  7172,  7312,
19187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org};
19287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org
19387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgstatic const int16_t ac_qlookup_12[QINDEX_RANGE] = {
19487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  4,    13,    19,    27,    35,    44,    54,    64,
19587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  75,    87,    99,   112,   126,   139,   154,   168,
19687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  183,   199,   214,   230,   247,   263,   280,   297,
19787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  314,   331,   349,   366,   384,   402,   420,   438,
19887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  456,   475,   493,   511,   530,   548,   567,   586,
19987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  604,   623,   642,   660,   679,   698,   716,   735,
20087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  753,   772,   791,   809,   828,   846,   865,   884,
20187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  902,   920,   939,   957,   976,   994,  1012,  1030,
20287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1049,  1067,  1085,  1103,  1121,  1139,  1157,  1175,
20387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1193,  1211,  1229,  1246,  1264,  1282,  1299,  1317,
20487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1335,  1352,  1370,  1387,  1405,  1422,  1440,  1457,
20587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1474,  1491,  1509,  1526,  1543,  1560,  1577,  1595,
20687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1627,  1660,  1693,  1725,  1758,  1791,  1824,  1856,
20787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  1889,  1922,  1954,  1987,  2020,  2052,  2085,  2118,
20887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  2150,  2183,  2216,  2248,  2281,  2313,  2346,  2378,
20987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  2411,  2459,  2508,  2556,  2605,  2653,  2701,  2750,
21087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  2798,  2847,  2895,  2943,  2992,  3040,  3088,  3137,
21187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  3185,  3234,  3298,  3362,  3426,  3491,  3555,  3619,
21287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  3684,  3748,  3812,  3876,  3941,  4005,  4069,  4149,
21387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  4230,  4310,  4390,  4470,  4550,  4631,  4711,  4791,
21487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  4871,  4967,  5064,  5160,  5256,  5352,  5448,  5544,
21587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  5641,  5737,  5849,  5961,  6073,  6185,  6297,  6410,
21687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  6522,  6650,  6778,  6906,  7034,  7162,  7290,  7435,
21787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  7579,  7723,  7867,  8011,  8155,  8315,  8475,  8635,
21887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  8795,  8956,  9132,  9308,  9484,  9660,  9836, 10028,
21987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  10220, 10412, 10604, 10812, 11020, 11228, 11437, 11661,
22087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  11885, 12109, 12333, 12573, 12813, 13053, 13309, 13565,
22187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  13821, 14093, 14365, 14637, 14925, 15213, 15502, 15806,
22287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  16110, 16414, 16734, 17054, 17390, 17726, 18062, 18414,
22387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  18766, 19134, 19502, 19886, 20270, 20670, 21070, 21486,
22487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  21902, 22334, 22766, 23214, 23662, 24126, 24590, 25070,
22587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  25551, 26047, 26559, 27071, 27599, 28143, 28687, 29247,
22687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org};
22787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#endif
22887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org
22987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgint16_t vp9_dc_quant(int qindex, int delta, vpx_bit_depth_t bit_depth) {
23087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#if CONFIG_VP9_HIGHBITDEPTH
23187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  switch (bit_depth) {
23287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org    case VPX_BITS_8:
23387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org      return dc_qlookup[clamp(qindex + delta, 0, MAXQ)];
23487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org    case VPX_BITS_10:
23587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org      return dc_qlookup_10[clamp(qindex + delta, 0, MAXQ)];
23687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org    case VPX_BITS_12:
23787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org      return dc_qlookup_12[clamp(qindex + delta, 0, MAXQ)];
23887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org    default:
23987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org      assert(0 && "bit_depth should be VPX_BITS_8, VPX_BITS_10 or VPX_BITS_12");
24087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org      return -1;
24187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  }
24287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#else
24387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  (void) bit_depth;
2443f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org  return dc_qlookup[clamp(qindex + delta, 0, MAXQ)];
24587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#endif
2466fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org}
2476fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
24887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgint16_t vp9_ac_quant(int qindex, int delta, vpx_bit_depth_t bit_depth) {
24987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#if CONFIG_VP9_HIGHBITDEPTH
25087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  switch (bit_depth) {
25187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org    case VPX_BITS_8:
25287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org      return ac_qlookup[clamp(qindex + delta, 0, MAXQ)];
25387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org    case VPX_BITS_10:
25487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org      return ac_qlookup_10[clamp(qindex + delta, 0, MAXQ)];
25587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org    case VPX_BITS_12:
25687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org      return ac_qlookup_12[clamp(qindex + delta, 0, MAXQ)];
25787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org    default:
25887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org      assert(0 && "bit_depth should be VPX_BITS_8, VPX_BITS_10 or VPX_BITS_12");
25987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org      return -1;
26087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  }
26187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#else
26287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org  (void) bit_depth;
26310a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org  return ac_qlookup[clamp(qindex + delta, 0, MAXQ)];
26487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#endif
2656fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org}
2666fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org
26776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgint vp9_get_qindex(const struct segmentation *seg, int segment_id,
26876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org                   int base_qindex) {
26953a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org  if (vp9_segfeature_active(seg, segment_id, SEG_LVL_ALT_Q)) {
27053a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org    const int data = vp9_get_segdata(seg, segment_id, SEG_LVL_ALT_Q);
271411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org    const int seg_qindex = seg->abs_delta == SEGMENT_ABSDATA ?
272411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org        data : base_qindex + data;
273411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org    return clamp(seg_qindex, 0, MAXQ);
27410a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org  } else {
27510a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org    return base_qindex;
27610a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org  }
2776fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org}
27810a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org
279