• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • Examples
  • File List
  • Globals

libavcodec/dnxhddata.c

Go to the documentation of this file.
00001 /*
00002  * VC3/DNxHD data.
00003  * Copyright (c) 2007 SmartJog S.A., Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
00004  *
00005  * This file is part of Libav.
00006  *
00007  * Libav is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU Lesser General Public
00009  * License as published by the Free Software Foundation; either
00010  * version 2.1 of the License, or (at your option) any later version.
00011  *
00012  * Libav is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  * Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public
00018  * License along with Libav; if not, write to the Free Software
00019  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
00020  */
00021 
00022 #include "avcodec.h"
00023 #include "dnxhddata.h"
00024 
00025 static const uint8_t dnxhd_1235_luma_weight[] = {
00026      0, 32, 32, 32, 33, 35, 38, 39,
00027     32, 33, 32, 33, 36, 36, 39, 42,
00028     32, 32, 33, 36, 35, 37, 41, 43,
00029     31, 33, 34, 36, 36, 40, 42, 48,
00030     32, 34, 36, 37, 39, 42, 46, 51,
00031     36, 37, 37, 39, 41, 46, 51, 55,
00032     37, 39, 41, 41, 47, 50, 55, 56,
00033     41, 42, 41, 44, 50, 53, 60, 60
00034 };
00035 
00036 static const uint8_t dnxhd_1235_chroma_weight[] = {
00037      0, 32, 33, 34, 39, 41, 54, 59,
00038     33, 34, 35, 38, 43, 49, 58, 84,
00039     34, 37, 39, 44, 46, 55, 74, 87,
00040     40, 42, 47, 48, 58, 70, 87, 86,
00041     43, 50, 56, 63, 72, 94, 91, 82,
00042     55, 63, 65, 75, 93, 89, 85, 73,
00043     61, 67, 82, 81, 83, 90, 79, 73,
00044     74, 84, 75, 78, 90, 85, 73, 73
00045 };
00046 
00047 static const uint8_t dnxhd_1237_luma_weight[] = {
00048      0,  32,  33,  34, 34, 36, 37, 36,
00049     36,  37,  38,  38, 38, 39, 41, 44,
00050     43,  41,  40,  41, 46, 49, 47, 46,
00051     47,  49,  51,  54, 60, 62, 59, 55,
00052     54,  56,  58,  61, 65, 66, 64, 63,
00053     66,  73,  78,  79, 80, 79, 78, 78,
00054     82,  87,  89,  90, 93, 95, 96, 97,
00055     97, 100, 104, 102, 98, 98, 99, 99,
00056 };
00057 
00058 static const uint8_t dnxhd_1237_chroma_weight[] = {
00059      0,  32,  36,  39, 39, 38, 39,  41,
00060     45,  51,  57,  58, 53, 48, 47,  51,
00061     55,  58,  66,  75, 81, 83, 82,  78,
00062     73,  72,  74,  77, 83, 85, 83,  82,
00063     89,  99,  96,  90, 94, 97, 99, 105,
00064    109, 105,  95,  89, 92, 95, 94,  93,
00065     92,  88,  89,  90, 93, 95, 96,  97,
00066     97, 100, 104, 102, 98, 98, 99,  99,
00067 };
00068 
00069 static const uint8_t dnxhd_1238_luma_weight[] = {
00070      0, 32, 32, 33, 34, 33, 33, 33,
00071     33, 33, 33, 33, 33, 35, 37, 37,
00072     36, 36, 35, 36, 38, 38, 36, 35,
00073     36, 37, 38, 41, 42, 41, 39, 38,
00074     38, 38, 39, 41, 42, 41, 39, 39,
00075     40, 41, 43, 44, 44, 44, 44, 44,
00076     45, 47, 47, 47, 49, 50, 51, 51,
00077     51, 53, 55, 57, 58, 59, 57, 57,
00078 };
00079 
00080 static const uint8_t dnxhd_1238_chroma_weight[] = {
00081      0, 32, 35, 35, 35, 34, 34, 35,
00082     39, 43, 45, 45, 41, 39, 40, 41,
00083     42, 44, 48, 55, 59, 63, 65, 59,
00084     53, 52, 52, 55, 61, 62, 58, 58,
00085     63, 66, 66, 65, 70, 74, 70, 66,
00086     65, 68, 75, 77, 74, 74, 77, 76,
00087     73, 73, 73, 73, 76, 80, 89, 90,
00088     82, 77, 80, 86, 84, 82, 82, 82,
00089 };
00090 
00091 static const uint8_t dnxhd_1241_luma_weight[] = {
00092      0, 32, 33, 34, 34, 35, 36, 37,
00093     36, 37, 38, 38, 38, 39, 39, 40,
00094     40, 38, 38, 39, 38, 37, 39, 41,
00095     41, 42, 43, 45, 45, 46, 47, 46,
00096     45, 43, 39, 37, 37, 40, 44, 45,
00097     45, 46, 46, 46, 47, 47, 46, 44,
00098     42, 43, 45, 47, 48, 49, 50, 49,
00099     48, 46, 47, 48, 48, 49, 49, 49,
00100 };
00101 
00102 static const uint8_t dnxhd_1241_chroma_weight[] = {
00103      0, 32, 36, 38, 37, 37, 40, 41,
00104     40, 40, 42, 42, 41, 41, 41, 41,
00105     42, 43, 44, 44, 45, 46, 46, 45,
00106     44, 45, 45, 45, 45, 46, 47, 46,
00107     45, 44, 42, 41, 43, 45, 45, 47,
00108     48, 48, 48, 46, 47, 47, 46, 47,
00109     46, 45, 45, 47, 48, 49, 50, 49,
00110     48, 46, 48, 49, 48, 49, 49, 49,
00111 };
00112 
00113 static const uint8_t dnxhd_1242_luma_weight[] = {
00114      0, 32, 33, 33, 34, 35, 36, 35,
00115     33, 33, 35, 36, 37, 37, 38, 37,
00116     37, 37, 36, 37, 37, 37, 38, 39,
00117     37, 36, 37, 40, 42, 45, 46, 44,
00118     41, 42, 44, 45, 47, 49, 50, 48,
00119     46, 48, 49, 50, 52, 52, 50, 49,
00120     47, 48, 50, 50, 51, 51, 50, 49,
00121     49, 51, 52, 51, 49, 47, 47, 47,
00122 };
00123 
00124 static const uint8_t dnxhd_1242_chroma_weight[] = {
00125      0, 32, 37, 42, 45, 45, 45, 44,
00126     38, 37, 40, 42, 44, 49, 51, 47,
00127     41, 40, 43, 44, 46, 48, 51, 54,
00128     51, 47, 47, 45, 47, 50, 51, 49,
00129     46, 47, 49, 47, 50, 55, 55, 51,
00130     48, 49, 51, 51, 52, 52, 54, 54,
00131     49, 49, 52, 53, 54, 54, 53, 53,
00132     55, 59, 63, 62, 60, 60, 60, 60,
00133 };
00134 
00135 static const uint8_t dnxhd_1243_luma_weight[] = {
00136      0, 32, 32, 33, 33, 35, 35, 35,
00137     35, 35, 35, 35, 34, 35, 38, 40,
00138     39, 37, 37, 37, 36, 35, 36, 38,
00139     40, 41, 42, 44, 45, 44, 42, 41,
00140     40, 38, 36, 36, 37, 38, 40, 43,
00141     44, 45, 45, 45, 45, 45, 45, 41,
00142     39, 41, 45, 47, 47, 48, 48, 48,
00143     46, 44, 45, 47, 47, 48, 47, 47,
00144 };
00145 
00146 static const uint8_t dnxhd_1243_chroma_weight[] = {
00147      0, 32, 36, 37, 36, 37, 39, 39,
00148     41, 43, 43, 42, 41, 41, 41, 42,
00149     43, 43, 43, 44, 44, 44, 46, 47,
00150     46, 45, 45, 45, 45, 46, 44, 44,
00151     45, 44, 42, 41, 43, 46, 45, 44,
00152     45, 45, 45, 46, 46, 46, 45, 44,
00153     45, 44, 45, 47, 47, 48, 49, 48,
00154     46, 45, 46, 47, 47, 48, 47, 47,
00155 };
00156 
00157 static const uint8_t dnxhd_1250_luma_weight[] = {
00158      0, 32, 35, 35, 36, 36, 41, 43,
00159     32, 34, 35, 36, 37, 39, 43, 47,
00160     33, 34, 36, 38, 38, 42, 42, 50,
00161     34, 36, 38, 38, 41, 40, 47, 54,
00162     35, 38, 39, 40, 39, 45, 49, 58,
00163     38, 39, 40, 39, 46, 47, 54, 60,
00164     38, 39, 41, 46, 46, 48, 57, 62,
00165     40, 41, 44, 45, 49, 54, 63, 63
00166 };
00167 
00168 static const uint8_t dnxhd_1250_chroma_weight[] = {
00169      0, 32, 35, 36, 40, 42, 51, 51,
00170     35, 36, 39, 39, 43, 51, 52, 55,
00171     36, 41, 41, 43, 51, 53, 54, 56,
00172     43, 44, 45, 50, 54, 54, 55, 57,
00173     45, 48, 50, 51, 55, 58, 59, 58,
00174     49, 52, 49, 57, 58, 62, 58, 60,
00175     51, 51, 56, 58, 62, 61, 59, 62,
00176     52, 52, 60, 61, 59, 59, 63, 63
00177 };
00178 
00179 static const uint8_t dnxhd_1251_luma_weight[] = {
00180      0, 32, 32, 34, 34, 34, 34, 35,
00181     35, 35, 36, 37, 36, 36, 35, 36,
00182     38, 38, 38, 38, 38, 38, 38, 38,
00183     38, 38, 39, 41, 44, 43, 41, 40,
00184     40, 40, 40, 39, 40, 41, 40, 39,
00185     40, 43, 46, 46, 44, 44, 44, 42,
00186     41, 43, 46, 48, 50, 55, 58, 53,
00187     48, 50, 55, 58, 61, 62, 62, 62,
00188 };
00189 
00190 static const uint8_t dnxhd_1251_chroma_weight[] = {
00191      0, 32, 35, 36, 36, 35, 36, 39,
00192     41, 43, 45, 44, 41, 39, 40, 42,
00193     43, 43, 45, 48, 48, 48, 50, 50,
00194     50, 51, 51, 51, 51, 52, 53, 54,
00195     51, 49, 51, 52, 52, 56, 57, 55,
00196     54, 54, 55, 56, 55, 58, 58, 58,
00197     60, 61, 62, 62, 59, 57, 58, 58,
00198     61, 59, 59, 59, 61, 62, 62, 62,
00199 };
00200 
00201 static const uint8_t dnxhd_1252_luma_weight[] = {
00202       0,  32,  34, 35, 36, 36, 36, 37,
00203      36,  37,  39, 40, 41, 40, 40, 40,
00204      41,  41,  42, 41, 41, 43, 44, 44,
00205      45,  46,  48, 55, 60, 57, 52, 50,
00206      49,  49,  52, 52, 53, 55, 58, 62,
00207      65,  73,  82, 82, 80, 78, 73, 68,
00208      71,  82,  90, 90, 88, 87, 90, 95,
00209     100, 107, 103, 97, 95, 93, 99, 99,
00210 };
00211 static const uint8_t dnxhd_1252_chroma_weight[] = {
00212       0,  32,  35,  36,  37,  37,  38,  40,
00213      42,  46,  49,  50,  50,  49,  49,  53,
00214      56,  56,  57,  58,  60,  62,  64,  65,
00215      63,  64,  64,  65,  66,  65,  67,  71,
00216      72,  74,  74,  74,  74,  77,  81,  78,
00217      72,  73,  82,  85,  89,  88,  84,  80,
00218      90, 100,  90,  90,  88,  87,  90,  95,
00219     114, 128, 125, 129, 134, 125, 116, 116,
00220 };
00221 
00222 static const uint8_t dnxhd_1237_dc_codes[12] = {
00223     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
00224 };
00225 
00226 static const uint8_t dnxhd_1237_dc_bits[12] = {
00227     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
00228 };
00229 
00230 static const uint16_t dnxhd_1237_ac_codes[257] = {
00231         0,     1,     4,     5,    12,    26,    27,    56,
00232        57,    58,    59,   120,   121,   244,   245,   246,
00233       247,   248,   498,   499,   500,   501,   502,  1006,
00234      1007,  1008,  1009,  1010,  1011,  2024,  2025,  2026,
00235      2027,  2028,  2029,  2030,  2031,  4064,  4065,  4066,
00236      4067,  4068,  4069,  4070,  4071,  4072,  4073,  8148,
00237      8149,  8150,  8151,  8152,  8153,  8154,  8155,  8156,
00238      8157,  8158, 16318, 16319, 16320, 16321, 16322, 16323,
00239     16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331,
00240     16332, 16333, 32668, 32669, 32670, 32671, 32672, 32673,
00241     32674, 32675, 32676, 32677, 32678, 32679, 32680, 32681,
00242     32682, 32683, 32684, 65370, 65371, 65372, 65373, 65374,
00243     65375, 65376, 65377, 65378, 65379, 65380, 65381, 65382,
00244     65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390,
00245     65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
00246     65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
00247     65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
00248     65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
00249     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
00250     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
00251     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
00252     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
00253     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
00254     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
00255     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
00256     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
00257     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
00258     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
00259     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
00260     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
00261     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
00262     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
00263     65535,
00264 };
00265 
00266 static const uint8_t dnxhd_1237_ac_bits[257] = {
00267      2,  2,  3,  3,  4,  5,  5,  6,  6,  6,  6,  7,  7,  8,  8,  8,
00268      8,  8,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
00269     11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
00270     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
00271     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
00272     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
00273     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00274     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00275     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00276     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00277     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00278     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00279     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00280     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00281     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00282     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00283     16,
00284 };
00285 
00286 static const uint8_t dnxhd_1237_ac_level[257] = {
00287      1,  1,  2,  0,  3,  4,  2,  5,  6,  7,  3,  8,  9, 10, 11, 12,
00288      4,  5, 13, 14, 15, 16,  6, 17, 18, 19, 20, 21,  7, 22, 23, 24,
00289     25, 26, 27,  8,  9, 28, 29, 30, 31, 32, 33, 34, 10, 11, 12, 35,
00290     36, 37, 38, 39, 40, 41, 13, 14, 15, 16, 42, 43, 44, 45, 46, 47,
00291     48, 49, 50, 51, 52, 17, 18, 19, 20, 21, 53, 54, 55, 56, 57, 58,
00292     59, 60, 61, 64,  1, 22, 23, 24, 25, 26, 27, 62, 63,  2,  3,  4,
00293      5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
00294     21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
00295     37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
00296     53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
00297     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00298     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00299     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
00300     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
00301     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00302     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00303     64,
00304 };
00305 
00306 static const uint8_t dnxhd_1237_ac_run_flag[257] = {
00307     0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
00308     1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
00309     0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
00310     0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
00311     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
00312     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
00313     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00314     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00315     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00316     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
00317     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00318     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00319     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00320     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00321     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00322     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00323     1,
00324 };
00325 
00326 static const uint8_t dnxhd_1237_ac_index_flag[257] = {
00327     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00328     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00329     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00330     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00331     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00332     0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
00333     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00334     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00335     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00336     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
00337     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00338     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00339     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00340     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00341     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00342     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00343     1,
00344 };
00345 
00346 static const uint16_t dnxhd_1237_run_codes[62] = {
00347        0,    4,   10,   11,   24,   25,   26,   54,
00348       55,   56,   57,   58,  118,  119,  240,  482,
00349      483,  484,  485,  486,  487,  488,  489,  490,
00350      491,  492,  493,  494,  990,  991,  992,  993,
00351      994,  995,  996,  997,  998,  999, 1000, 1001,
00352     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
00353     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
00354     1018, 1019, 1020, 1021, 1022, 1023,
00355 };
00356 
00357 static const uint8_t dnxhd_1237_run_bits[62] = {
00358      1,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  6,  7,  7,  8,  9,
00359      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10,
00360     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00361     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00362 };
00363 
00364 static const uint8_t dnxhd_1237_run[62] = {
00365      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
00366     17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
00367     26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
00368     42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
00369 };
00370 
00371 static const uint8_t dnxhd_1238_dc_codes[12] = {
00372     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
00373 };
00374 
00375 static const uint8_t dnxhd_1238_dc_bits[12] = {
00376     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
00377 };
00378 
00379 static const uint16_t dnxhd_1238_ac_codes[257] = {
00380         0,     1,     4,    10,    11,    24,    25,    26,
00381        54,    55,    56,    57,   116,   117,   118,   119,
00382       240,   241,   242,   243,   244,   245,   492,   493,
00383       494,   495,   496,   497,   498,   499,  1000,  1001,
00384      1002,  1003,  1004,  1005,  1006,  1007,  1008,  2018,
00385      2019,  2020,  2021,  2022,  2023,  2024,  2025,  2026,
00386      2027,  4056,  4057,  4058,  4059,  4060,  4061,  4062,
00387      4063,  4064,  4065,  4066,  4067,  4068,  4069,  8140,
00388      8141,  8142,  8143,  8144,  8145,  8146,  8147,  8148,
00389      8149,  8150,  8151,  8152,  8153,  8154,  8155,  8156,
00390     16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
00391     16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
00392     16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
00393     16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
00394     32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
00395     32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
00396     32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
00397     65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
00398     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
00399     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
00400     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
00401     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
00402     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
00403     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
00404     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
00405     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
00406     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
00407     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
00408     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
00409     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
00410     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
00411     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
00412     65535,
00413 };
00414 
00415 static const uint8_t dnxhd_1238_ac_bits[257] = {
00416      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
00417      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10,
00418     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
00419     11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
00420     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
00421     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
00422     14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
00423     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
00424     15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00425     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00426     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00427     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00428     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00429     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00430     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00431     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00432     16,
00433 };
00434 
00435 static const uint8_t dnxhd_1238_ac_level[257] = {
00436      1,  1,  2,  3,  0,  4,  5,  2,  6,  7,  8,  3,  9, 10, 11,  4,
00437     12, 13, 14, 15, 16,  5, 17, 18, 19, 20, 21, 22,  6,  7, 23, 24,
00438     25, 26, 27, 28, 29,  8,  9, 30, 31, 32, 33, 34, 35, 36, 37, 10,
00439     11, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 12, 13, 14, 49,
00440     50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 15, 16, 17, 18,
00441     62, 63, 64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13,
00442     14, 15, 16, 19, 20, 21, 22, 23, 24, 17, 18, 19, 20, 21, 22, 23,
00443     24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 25,
00444     26, 27, 28, 29, 30, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49,
00445     50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 31,
00446     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00447     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00448     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
00449     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
00450     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00451     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00452     64,
00453 }; /* 0 is EOB */
00454 
00455 static const uint8_t dnxhd_1238_ac_run_flag[257] = {
00456     0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
00457     0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
00458     0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00459     1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
00460     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
00461     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00462     0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
00463     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00464     1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00465     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00466     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00467     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00468     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00469     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00470     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00471     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00472     1,
00473 };
00474 
00475 static const uint8_t dnxhd_1238_ac_index_flag[257] = {
00476     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00477     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00478     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00479     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00480     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00481     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00482     1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
00483     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
00484     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00485     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
00486     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00487     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00488     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00489     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00490     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00491     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00492     1,
00493 };
00494 
00495 static const uint16_t dnxhd_1235_1238_1241_run_codes[62] = {
00496        0,    4,   10,   11,   24,   25,   26,   27,
00497       56,   57,   58,   59,  120,  242,  486,  487,
00498      488,  489,  980,  981,  982,  983,  984,  985,
00499      986,  987,  988,  989,  990,  991,  992,  993,
00500      994,  995,  996,  997,  998,  999, 1000, 1001,
00501     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
00502     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
00503     1018, 1019, 1020, 1021, 1022, 1023,
00504 };
00505 
00506 static const uint8_t dnxhd_1235_1238_1241_run_bits[62] = {
00507      1,  3,  4,  4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  8,  9,  9,
00508      9,  9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00509     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00510     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00511 };
00512 
00513 static const uint8_t dnxhd_1238_run[62] = {
00514      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
00515     20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
00516     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
00517     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
00518 };
00519 
00520 static const uint8_t dnxhd_1235_1241_dc_codes[14] = {
00521     10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
00522 };
00523 
00524 static const uint8_t dnxhd_1235_1241_dc_bits[14] = {
00525     4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
00526 };
00527 
00528 static const uint16_t dnxhd_1235_1241_ac_codes[257] = {
00529         0,     1,     4,    10,    11,    24,    25,    26,
00530        54,    55,    56,    57,   116,   117,   118,   119,
00531       240,   241,   242,   243,   244,   245,   492,   493,
00532       494,   495,   496,   497,   498,   998,   999,  1000,
00533      1001,  1002,  1003,  1004,  1005,  1006,  1007,  2016,
00534      2017,  2018,  2019,  2020,  2021,  2022,  2023,  2024,
00535      2025,  2026,  4054,  4055,  4056,  4057,  4058,  4059,
00536      4060,  4061,  4062,  4063,  4064,  4065,  4066,  4067,
00537      4068,  4069,  8140,  8141,  8142,  8143,  8144,  8145,
00538      8146,  8147,  8148,  8149,  8150,  8151,  8152,  8153,
00539      8154,  8155,  8156,  8157, 16316, 16317, 16318, 16319,
00540     16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
00541     16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
00542     16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
00543     32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
00544     32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
00545     32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
00546     32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
00547     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
00548     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
00549     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
00550     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
00551     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
00552     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
00553     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
00554     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
00555     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
00556     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
00557     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
00558     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
00559     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
00560     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
00561     65535,
00562 };
00563 
00564 static const uint8_t dnxhd_1235_1241_ac_bits[257] = {
00565      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
00566      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10,
00567     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
00568     11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
00569     12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
00570     13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
00571     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
00572     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
00573     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
00574     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00575     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00576     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00577     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00578     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00579     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00580     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00581     16,
00582 };
00583 
00584 static const uint8_t dnxhd_1235_1241_ac_level[257] = {
00585      1,  1,  2,  3,  0,  4,  5,  2,  6,  7,  8,  3,  9, 10, 11,  4,
00586     12, 13, 14, 15, 16,  5, 17, 18, 19, 20, 21,  6,  7, 22, 23, 24,
00587     25, 26, 27, 28, 29,  8,  9, 30, 31, 32, 33, 34, 35, 36, 37, 38,
00588     10, 11, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 12, 13,
00589     14, 15, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,  1,
00590     16, 17, 18, 19, 64,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12,
00591     13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 18, 19, 20, 21, 22, 23,
00592     24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
00593     40, 41, 42, 25, 26, 27, 28, 29, 30, 31, 32, 43, 44, 45, 46, 47,
00594     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00595     64, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00596     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00597     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
00598     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
00599     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00600     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00601     64,
00602 };
00603 
00604 static const uint8_t dnxhd_1235_1241_ac_run_flag[257] = {
00605     0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
00606     0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
00607     0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00608     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
00609     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00610     1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00611     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
00612     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00613     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
00614     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00615     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00616     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00617     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00618     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00619     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00620     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00621     1,
00622 };
00623 
00624 static const uint8_t dnxhd_1235_1241_ac_index_flag[257] = {
00625     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00626     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00627     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00628     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00629     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00630     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00631     1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
00632     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00633     1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
00634     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00635     1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00636     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00637     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00638     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00639     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00640     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00641     1,
00642 };
00643 
00644 static const uint8_t dnxhd_1235_1241_run[62] = {
00645      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
00646     18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
00647     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
00648     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
00649 };
00650 
00651 static const uint8_t dnxhd_1250_dc_codes[14] = {
00652     10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127
00653 };
00654 static const uint8_t dnxhd_1250_dc_bits[14] = {
00655     4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7
00656 };
00657 static const uint16_t dnxhd_1250_ac_codes[257] = {
00658         0,     1,     4,    10,    11,    24,    25,    26,
00659        54,    55,    56,    57,   116,   117,   118,   119,
00660       240,   241,   242,   243,   244,   245,   492,   493,
00661       494,   495,   496,   497,   498,   998,   999,  1000,
00662      1001,  1002,  1003,  1004,  1005,  1006,  2014,  2015,
00663      2016,  2017,  2018,  2019,  2020,  2021,  2022,  2023,
00664      2024,  2025,  4052,  4053,  4054,  4055,  4056,  4057,
00665      4058,  4059,  4060,  4061,  4062,  4063,  4064,  4065,
00666      4066,  4067,  8136,  8137,  8138,  8139,  8140,  8141,
00667      8142,  8143,  8144,  8145,  8146,  8147,  8148,  8149,
00668      8150,  8151,  8152,  8153,  8154,  8155,  8156, 16314,
00669     16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
00670     16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
00671     16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
00672     32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
00673     32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
00674     32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
00675     32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
00676     32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
00677     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
00678     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
00679     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
00680     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
00681     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
00682     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
00683     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
00684     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
00685     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
00686     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
00687     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
00688     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
00689     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
00690     65535
00691 };
00692 static const uint8_t dnxhd_1250_ac_bits[257] = {
00693      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
00694      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10,
00695     10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
00696     11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
00697     12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
00698     13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
00699     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
00700     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
00701     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
00702     15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00703     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00704     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00705     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00706     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00707     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00708     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00709     16
00710 };
00711 static const uint8_t dnxhd_1250_ac_level[257] = {
00712      1,  1,  2,  3,  0,  4,  5,  2,  6,  7,  8,  3,  9, 10, 11,  4,
00713     12, 13, 14, 15, 16,  5, 17, 18, 19, 20, 21, 22,  6, 23, 24, 25,
00714     26, 27, 28, 29,  7,  8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
00715      9, 10, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 11,
00716     12, 13, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,  1,  2,
00717      3,  4,  5, 14, 15, 16, 17,  6,  7,  8,  9, 10, 11, 12, 13, 14,
00718     15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 18, 19, 20, 21,
00719     27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
00720     43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 22, 23, 24,
00721     25, 26, 27, 54, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
00722     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00723     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00724     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
00725     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
00726     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00727     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00728     64
00729 };
00730 static const uint8_t dnxhd_1250_ac_run_flag[257] = {
00731     0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
00732     0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
00733     0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00734     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00735     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00736     0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00737     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
00738     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00739     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
00740     1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
00741     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00742     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00743     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00744     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00745     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00746     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00747     1
00748 };
00749 static const uint8_t dnxhd_1250_ac_index_flag[257] = {
00750     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00751     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00752     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00753     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00754     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
00755     1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00756     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
00757     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00758     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
00759     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
00760     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00761     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00762     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00763     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00764     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00765     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00766     1
00767 };
00768 static const uint16_t dnxhd_1250_run_codes[62] = {
00769        0,    4,    5,   12,   26,   27,   28,   58,
00770      118,  119,  120,  242,  486,  487,  976,  977,
00771      978,  979,  980,  981,  982,  983,  984,  985,
00772      986,  987,  988,  989,  990,  991,  992,  993,
00773      994,  995,  996,  997,  998,  999, 1000, 1001,
00774     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
00775     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
00776     1018, 1019, 1020, 1021, 1022, 1023
00777 };
00778 static const uint8_t dnxhd_1250_run_bits[62] = {
00779      1,  3,  3,  4,  5,  5,  5,  6,  7,  7,  7,  8,  9,  9, 10, 10,
00780     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00781     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00782     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
00783 };
00784 static const uint8_t dnxhd_1250_run[62] = {
00785      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
00786     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
00787     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
00788     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62
00789 };
00790 
00791 static const uint8_t dnxhd_1251_dc_codes[12] = {
00792     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
00793 };
00794 
00795 static const uint8_t dnxhd_1251_dc_bits[12] = {
00796     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
00797 };
00798 
00799 static const uint16_t dnxhd_1251_ac_codes[257] = {
00800         0,     1,     4,    10,    11,    24,    25,    26,
00801        54,    55,    56,    57,   116,   117,   118,   119,
00802       240,   241,   242,   243,   244,   245,   492,   493,
00803       494,   495,   496,   497,   996,   997,   998,   999,
00804      1000,  1001,  1002,  1003,  1004,  1005,  2012,  2013,
00805      2014,  2015,  2016,  2017,  2018,  2019,  2020,  2021,
00806      2022,  2023,  2024,  2025,  4052,  4053,  4054,  4055,
00807      4056,  4057,  4058,  4059,  4060,  4061,  4062,  4063,
00808      4064,  4065,  4066,  8134,  8135,  8136,  8137,  8138,
00809      8139,  8140,  8141,  8142,  8143,  8144,  8145,  8146,
00810      8147,  8148,  8149,  8150,  8151,  8152,  8153,  8154,
00811      8155,  8156, 16314, 16315, 16316, 16317, 16318, 16319,
00812     16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
00813     16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
00814     16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
00815     32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
00816     32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
00817     32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
00818     32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
00819     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
00820     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
00821     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
00822     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
00823     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
00824     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
00825     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
00826     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
00827     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
00828     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
00829     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
00830     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
00831     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
00832     65535,
00833 };
00834 
00835 static const uint8_t dnxhd_1251_ac_bits[257] = {
00836      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
00837      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10,
00838     10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
00839     11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
00840     12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
00841     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
00842     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
00843     14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
00844     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
00845     15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00846     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00847     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00848     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00849     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00850     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00851     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00852     16,
00853 };
00854 
00855 static const uint8_t dnxhd_1251_ac_level[257] = {
00856      1,  1,  2,  3,  0,  4,  5,  2,  6,  7,  8,  3,  9, 10, 11,  4,
00857     12, 13, 14, 15, 16,  5, 17, 18, 19, 20, 21,  6, 22, 23, 24, 25,
00858     26, 27, 28, 29,  7,  8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
00859     40,  9, 10, 11, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
00860     12, 13, 14, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,  1,
00861      2,  3,  4,  5,  6,  7,  8, 15, 16, 17,  9, 10, 11, 12, 13, 14,
00862     15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 18,
00863     19, 20, 21, 22, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
00864     42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
00865     58, 23, 24, 25, 26, 27, 28, 59, 60, 61, 62, 63, 64, 29, 30, 31,
00866     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00867     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00868     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
00869     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
00870     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00871     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00872     64,
00873 };
00874 
00875 static const uint8_t dnxhd_1251_ac_run_flag[257] = {
00876     0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
00877     0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
00878     0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00879     0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00880     1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00881     0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
00882     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00883     1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00884     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00885     0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
00886     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00887     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00888     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00889     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00890     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00891     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00892     1,
00893 };
00894 
00895 static const uint8_t dnxhd_1251_ac_index_flag[257] = {
00896     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00897     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00898     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00899     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00900     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00901     1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,
00902     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
00903     0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00904     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00905     1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
00906     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00907     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00908     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00909     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00910     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00911     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00912     1,
00913 };
00914 
00915 static const uint16_t dnxhd_1251_run_codes[62] = {
00916        0,    4,    5,   12,   26,   27,   28,   58,
00917      118,  119,  120,  242,  486,  487,  976,  977,
00918      978,  979,  980,  981,  982,  983,  984,  985,
00919      986,  987,  988,  989,  990,  991,  992,  993,
00920      994,  995,  996,  997,  998,  999, 1000, 1001,
00921     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
00922     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
00923     1018, 1019, 1020, 1021, 1022, 1023,
00924 };
00925 
00926 static const uint8_t dnxhd_1251_run_bits[62] = {
00927      1,  3,  3,  4,  5,  5,  5,  6,  7,  7,  7,  8,  9,  9, 10, 10,
00928     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00929     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00930     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00931 };
00932 
00933 static const uint8_t dnxhd_1251_run[62] = {
00934      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
00935     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
00936     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
00937     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
00938 };
00939 
00940 static const uint8_t dnxhd_1252_dc_codes[12] = {
00941     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
00942 };
00943 
00944 static const uint8_t dnxhd_1252_dc_bits[12] = {
00945     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
00946 };
00947 
00948 static const uint16_t dnxhd_1252_ac_codes[257] = {
00949         0,     1,     4,    10,    11,    12,    26,    27,
00950        56,    57,    58,   118,   119,   120,   242,   243,
00951       244,   245,   246,   247,   496,   497,   498,   499,
00952       500,  1002,  1003,  1004,  1005,  1006,  1007,  1008,
00953      1009,  2020,  2021,  2022,  2023,  2024,  2025,  2026,
00954      2027,  2028,  2029,  4060,  4061,  4062,  4063,  4064,
00955      4065,  4066,  4067,  4068,  4069,  4070,  4071,  8144,
00956      8145,  8146,  8147,  8148,  8149,  8150,  8151,  8152,
00957      8153,  8154,  8155,  8156,  8157,  8158, 16318, 16319,
00958     16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
00959     16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
00960     32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
00961     32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
00962     32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
00963     65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
00964     65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
00965     65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
00966     65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
00967     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
00968     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
00969     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
00970     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
00971     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
00972     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
00973     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
00974     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
00975     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
00976     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
00977     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
00978     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
00979     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
00980     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
00981     65535,
00982 };
00983 
00984 static const uint8_t dnxhd_1252_ac_bits[257] = {
00985      2,  2,  3,  4,  4,  4,  5,  5,  6,  6,  6,  7,  7,  7,  8,  8,
00986      8,  8,  8,  8,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 10,
00987     10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
00988     12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
00989     13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
00990     14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
00991     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
00992     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00993     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00994     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00995     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00996     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00997     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00998     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00999     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
01000     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
01001     16,
01002 };
01003 
01004 static const uint8_t dnxhd_1252_ac_level[257] = {
01005      1,  1,  2,  3,  2,  0,  4,  5,  6,  7,  3,  8,  9, 10, 11, 12,
01006     13, 14,  4,  5, 15, 16, 17, 18,  6, 19, 20, 21, 22, 23, 24,  7,
01007      8, 25, 26, 27, 28, 29, 30, 31, 32,  9, 10, 33, 34, 35, 36, 37,
01008     38, 39, 40, 41, 11, 12, 13, 42, 43, 44, 45, 46, 47, 48, 49, 50,
01009     51, 52, 53, 14, 15, 16, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
01010     64,  1,  2,  3, 17, 18, 19, 20,  4,  5,  6,  7,  8,  9, 10, 11,
01011     12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25, 22,
01012     23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
01013     39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
01014     55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 26, 27, 28, 29, 30, 31,
01015     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
01016     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
01017     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
01018     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
01019     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
01020     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
01021     64,
01022 };
01023 
01024 static const uint8_t dnxhd_1252_ac_run_flag[257] = {
01025     0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
01026     0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,
01027     1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
01028     0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01029     0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01030     0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
01031     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
01032     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01033     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01034     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
01035     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01036     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01037     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01038     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01039     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01040     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01041     1,
01042 };
01043 
01044 static const uint8_t dnxhd_1252_ac_index_flag[257] = {
01045     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01046     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01047     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01048     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01049     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01050     0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
01051     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1,
01052     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01053     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01054     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
01055     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01056     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01057     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01058     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01059     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01060     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01061     1,
01062 };
01063 
01064 const CIDEntry ff_dnxhd_cid_table[] = {
01065     { 1235, 1920, 1080, 0, 917504, 917504, 6, 10,
01066       dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
01067       dnxhd_1235_1241_dc_codes, dnxhd_1235_1241_dc_bits,
01068       dnxhd_1235_1241_ac_codes, dnxhd_1235_1241_ac_bits, dnxhd_1235_1241_ac_level,
01069       dnxhd_1235_1241_ac_run_flag, dnxhd_1235_1241_ac_index_flag,
01070       dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1235_1241_run,
01071       { 175, 185, 365, 440 } },
01072     { 1237, 1920, 1080, 0, 606208, 606208, 4, 8,
01073       dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
01074       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
01075       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
01076       dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
01077       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
01078       { 115, 120, 145, 240, 290 } },
01079     { 1238, 1920, 1080, 0, 917504, 917504, 4, 8,
01080       dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
01081       dnxhd_1238_dc_codes, dnxhd_1238_dc_bits,
01082       dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
01083       dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
01084       dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1238_run,
01085       { 175, 185, 220, 365, 440 } },
01086     { 1241, 1920, 1080, 1, 917504, 458752, 6, 10,
01087       dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
01088       dnxhd_1235_1241_dc_codes, dnxhd_1235_1241_dc_bits,
01089       dnxhd_1235_1241_ac_codes, dnxhd_1235_1241_ac_bits, dnxhd_1235_1241_ac_level,
01090       dnxhd_1235_1241_ac_run_flag, dnxhd_1235_1241_ac_index_flag,
01091       dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1235_1241_run,
01092       { 185, 220 } },
01093     { 1242, 1920, 1080, 1, 606208, 303104, 4, 8,
01094       dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
01095       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
01096       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
01097       dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
01098       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
01099       { 120, 145 } },
01100     { 1243, 1920, 1080, 1, 917504, 458752, 4, 8,
01101       dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
01102       dnxhd_1238_dc_codes, dnxhd_1238_dc_bits,
01103       dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
01104       dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
01105       dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1238_run,
01106       { 185, 220 } },
01107     { 1250, 1280,  720, 0, 458752, 458752, 6, 10,
01108       dnxhd_1250_luma_weight, dnxhd_1250_chroma_weight,
01109       dnxhd_1250_dc_codes, dnxhd_1250_dc_bits,
01110       dnxhd_1250_ac_codes, dnxhd_1250_ac_bits, dnxhd_1250_ac_level,
01111       dnxhd_1250_ac_run_flag, dnxhd_1250_ac_index_flag,
01112       dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
01113       { 90, 180, 220 } },
01114     { 1251, 1280,  720, 0, 458752, 458752, 4, 8,
01115       dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
01116       dnxhd_1251_dc_codes, dnxhd_1251_dc_bits,
01117       dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_level,
01118       dnxhd_1251_ac_run_flag, dnxhd_1251_ac_index_flag,
01119       dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
01120       { 90, 110, 175, 220 } },
01121     { 1252, 1280,  720, 0, 303104, 303104, 4, 8,
01122       dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
01123       dnxhd_1252_dc_codes, dnxhd_1252_dc_bits,
01124       dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
01125       dnxhd_1252_ac_run_flag, dnxhd_1252_ac_index_flag,
01126       dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
01127       { 60, 75, 115, 145 } },
01128     { 1253, 1920, 1080, 0, 188416, 188416, 4, 8,
01129       dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
01130       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
01131       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
01132       dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
01133       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
01134       { 36, 45, 75, 90 } },
01135 };
01136 
01137 int ff_dnxhd_get_cid_table(int cid)
01138 {
01139     int i;
01140     for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
01141         if (ff_dnxhd_cid_table[i].cid == cid)
01142             return i;
01143     return -1;
01144 }
01145 
01146 int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
01147 {
01148     int i, j;
01149     int mbs = avctx->bit_rate/1000000;
01150     if (!mbs)
01151         return 0;
01152     for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
01153         const CIDEntry *cid = &ff_dnxhd_cid_table[i];
01154         if (cid->width == avctx->width && cid->height == avctx->height &&
01155             cid->interlaced == !!(avctx->flags & CODEC_FLAG_INTERLACED_DCT) &&
01156             cid->bit_depth == bit_depth) {
01157             for (j = 0; j < sizeof(cid->bit_rates); j++) {
01158                 if (cid->bit_rates[j] == mbs)
01159                     return cid->cid;
01160             }
01161         }
01162     }
01163     return 0;
01164 }
Generated on Sun Apr 22 2012 21:54:00 for Libav by doxygen 1.7.1