libavcodec/dnxhddata.c
d3dc629c
 /*
  * VC3/DNxHD data.
406792e7
  * Copyright (c) 2007 SmartJog S.A., Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
d3dc629c
  *
  * This file is part of FFmpeg.
  *
  * FFmpeg is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2.1 of the License, or (at your option) any later version.
  *
  * FFmpeg is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
0c39c38b
 #include "avcodec.h"
d3dc629c
 #include "dnxhddata.h"
1d9c2dc8
 #include "libavutil/common.h"
d3dc629c
 
99c4e91d
 /* The quantization tables below are in zigzag order! */
 
5ab21439
 static const uint8_t dnxhd_1235_luma_weight[] = {
99c4e91d
      0, 32, 32, 32, 33, 32, 32, 32,
     32, 31, 32, 33, 33, 33, 33, 35,
     36, 36, 34, 34, 36, 37, 37, 36,
     36, 35, 36, 38, 39, 39, 37, 36,
     37, 37, 39, 41, 42, 41, 39, 39,
     40, 41, 42, 43, 42, 42, 41, 41,
     41, 44, 47, 46, 46, 48, 51, 51,
     50, 50, 53, 55, 55, 56, 60, 60,
5ab21439
 };
 
 static const uint8_t dnxhd_1235_chroma_weight[] = {
99c4e91d
      0, 32, 33, 34, 34, 33, 34, 35,
     37, 40, 43, 42, 39, 38, 39, 41,
     43, 44, 47, 50, 55, 61, 63, 56,
     48, 46, 49, 54, 59, 58, 55, 58,
     63, 65, 67, 74, 84, 82, 75, 72,
     70, 74, 84, 87, 87, 94, 93, 81,
     75, 78, 83, 89, 91, 86, 82, 85,
     90, 90, 85, 79, 73, 73, 73, 73,
5ab21439
 };
 
6cb1d361
 static const uint8_t dnxhd_1237_luma_weight[] = {
d3dc629c
      0,  32,  33,  34, 34, 36, 37, 36,
     36,  37,  38,  38, 38, 39, 41, 44,
     43,  41,  40,  41, 46, 49, 47, 46,
     47,  49,  51,  54, 60, 62, 59, 55,
     54,  56,  58,  61, 65, 66, 64, 63,
     66,  73,  78,  79, 80, 79, 78, 78,
     82,  87,  89,  90, 93, 95, 96, 97,
     97, 100, 104, 102, 98, 98, 99, 99,
 };
 
6cb1d361
 static const uint8_t dnxhd_1237_chroma_weight[] = {
d3dc629c
      0,  32,  36,  39, 39, 38, 39,  41,
     45,  51,  57,  58, 53, 48, 47,  51,
     55,  58,  66,  75, 81, 83, 82,  78,
     73,  72,  74,  77, 83, 85, 83,  82,
     89,  99,  96,  90, 94, 97, 99, 105,
    109, 105,  95,  89, 92, 95, 94,  93,
     92,  88,  89,  90, 93, 95, 96,  97,
     97, 100, 104, 102, 98, 98, 99,  99,
 };
 
6cb1d361
 static const uint8_t dnxhd_1238_luma_weight[] = {
d3dc629c
      0, 32, 32, 33, 34, 33, 33, 33,
     33, 33, 33, 33, 33, 35, 37, 37,
     36, 36, 35, 36, 38, 38, 36, 35,
     36, 37, 38, 41, 42, 41, 39, 38,
     38, 38, 39, 41, 42, 41, 39, 39,
     40, 41, 43, 44, 44, 44, 44, 44,
     45, 47, 47, 47, 49, 50, 51, 51,
     51, 53, 55, 57, 58, 59, 57, 57,
 };
 
6cb1d361
 static const uint8_t dnxhd_1238_chroma_weight[] = {
d3dc629c
      0, 32, 35, 35, 35, 34, 34, 35,
     39, 43, 45, 45, 41, 39, 40, 41,
     42, 44, 48, 55, 59, 63, 65, 59,
     53, 52, 52, 55, 61, 62, 58, 58,
     63, 66, 66, 65, 70, 74, 70, 66,
     65, 68, 75, 77, 74, 74, 77, 76,
     73, 73, 73, 73, 76, 80, 89, 90,
     82, 77, 80, 86, 84, 82, 82, 82,
 };
 
cd52a9ca
 static const uint8_t dnxhd_1241_luma_weight[] = {
      0, 32, 33, 34, 34, 35, 36, 37,
     36, 37, 38, 38, 38, 39, 39, 40,
     40, 38, 38, 39, 38, 37, 39, 41,
     41, 42, 43, 45, 45, 46, 47, 46,
     45, 43, 39, 37, 37, 40, 44, 45,
     45, 46, 46, 46, 47, 47, 46, 44,
     42, 43, 45, 47, 48, 49, 50, 49,
     48, 46, 47, 48, 48, 49, 49, 49,
 };
 
 static const uint8_t dnxhd_1241_chroma_weight[] = {
      0, 32, 36, 38, 37, 37, 40, 41,
     40, 40, 42, 42, 41, 41, 41, 41,
     42, 43, 44, 44, 45, 46, 46, 45,
     44, 45, 45, 45, 45, 46, 47, 46,
     45, 44, 42, 41, 43, 45, 45, 47,
     48, 48, 48, 46, 47, 47, 46, 47,
     46, 45, 45, 47, 48, 49, 50, 49,
     48, 46, 48, 49, 48, 49, 49, 49,
 };
 
6cb1d361
 static const uint8_t dnxhd_1242_luma_weight[] = {
6aacfd22
      0, 32, 33, 33, 34, 35, 36, 35,
     33, 33, 35, 36, 37, 37, 38, 37,
     37, 37, 36, 37, 37, 37, 38, 39,
     37, 36, 37, 40, 42, 45, 46, 44,
     41, 42, 44, 45, 47, 49, 50, 48,
     46, 48, 49, 50, 52, 52, 50, 49,
     47, 48, 50, 50, 51, 51, 50, 49,
     49, 51, 52, 51, 49, 47, 47, 47,
 };
 
6cb1d361
 static const uint8_t dnxhd_1242_chroma_weight[] = {
6aacfd22
      0, 32, 37, 42, 45, 45, 45, 44,
     38, 37, 40, 42, 44, 49, 51, 47,
     41, 40, 43, 44, 46, 48, 51, 54,
     51, 47, 47, 45, 47, 50, 51, 49,
     46, 47, 49, 47, 50, 55, 55, 51,
     48, 49, 51, 51, 52, 52, 54, 54,
     49, 49, 52, 53, 54, 54, 53, 53,
     55, 59, 63, 62, 60, 60, 60, 60,
ecf86e1a
 };
6aacfd22
 
6cb1d361
 static const uint8_t dnxhd_1243_luma_weight[] = {
d3dc629c
      0, 32, 32, 33, 33, 35, 35, 35,
     35, 35, 35, 35, 34, 35, 38, 40,
     39, 37, 37, 37, 36, 35, 36, 38,
     40, 41, 42, 44, 45, 44, 42, 41,
     40, 38, 36, 36, 37, 38, 40, 43,
     44, 45, 45, 45, 45, 45, 45, 41,
     39, 41, 45, 47, 47, 48, 48, 48,
     46, 44, 45, 47, 47, 48, 47, 47,
 };
 
6cb1d361
 static const uint8_t dnxhd_1243_chroma_weight[] = {
d3dc629c
      0, 32, 36, 37, 36, 37, 39, 39,
     41, 43, 43, 42, 41, 41, 41, 42,
     43, 43, 43, 44, 44, 44, 46, 47,
     46, 45, 45, 45, 45, 46, 44, 44,
     45, 44, 42, 41, 43, 46, 45, 44,
     45, 45, 45, 46, 46, 46, 45, 44,
     45, 44, 45, 47, 47, 48, 49, 48,
     46, 45, 46, 47, 47, 48, 47, 47,
 };
 
5ab21439
 static const uint8_t dnxhd_1250_luma_weight[] = {
99c4e91d
      0, 32, 32, 33, 34, 35, 35, 35,
     34, 34, 35, 36, 36, 36, 36, 36,
     37, 38, 38, 38, 38, 38, 39, 39,
     38, 38, 39, 41, 43, 43, 42, 41,
     40, 40, 39, 40, 41, 41, 39, 39,
     40, 42, 47, 50, 47, 45, 46, 46,
     44, 45, 46, 47, 49, 54, 58, 54,
     48, 49, 54, 57, 60, 62, 63, 63,
5ab21439
 };
 
 static const uint8_t dnxhd_1250_chroma_weight[] = {
99c4e91d
      0, 32, 35, 36, 36, 35, 36, 39,
     41, 43, 45, 44, 41, 39, 40, 42,
     43, 43, 45, 48, 49, 51, 52, 50,
     50, 51, 51, 51, 51, 52, 53, 54,
     51, 49, 51, 52, 52, 56, 57, 55,
     54, 54, 55, 56, 55, 58, 58, 58,
     60, 61, 62, 62, 59, 57, 58, 58,
     61, 59, 59, 59, 60, 62, 63, 63,
5ab21439
 };
 
cc3a9708
 static const uint8_t dnxhd_1251_luma_weight[] = {
      0, 32, 32, 34, 34, 34, 34, 35,
     35, 35, 36, 37, 36, 36, 35, 36,
     38, 38, 38, 38, 38, 38, 38, 38,
     38, 38, 39, 41, 44, 43, 41, 40,
     40, 40, 40, 39, 40, 41, 40, 39,
     40, 43, 46, 46, 44, 44, 44, 42,
     41, 43, 46, 48, 50, 55, 58, 53,
     48, 50, 55, 58, 61, 62, 62, 62,
 };
 
 static const uint8_t dnxhd_1251_chroma_weight[] = {
      0, 32, 35, 36, 36, 35, 36, 39,
     41, 43, 45, 44, 41, 39, 40, 42,
     43, 43, 45, 48, 48, 48, 50, 50,
     50, 51, 51, 51, 51, 52, 53, 54,
     51, 49, 51, 52, 52, 56, 57, 55,
     54, 54, 55, 56, 55, 58, 58, 58,
     60, 61, 62, 62, 59, 57, 58, 58,
     61, 59, 59, 59, 61, 62, 62, 62,
 };
 
 static const uint8_t dnxhd_1252_luma_weight[] = {
       0,  32,  34, 35, 36, 36, 36, 37,
      36,  37,  39, 40, 41, 40, 40, 40,
      41,  41,  42, 41, 41, 43, 44, 44,
      45,  46,  48, 55, 60, 57, 52, 50,
      49,  49,  52, 52, 53, 55, 58, 62,
      65,  73,  82, 82, 80, 78, 73, 68,
      71,  82,  90, 90, 88, 87, 90, 95,
     100, 107, 103, 97, 95, 93, 99, 99,
 };
 static const uint8_t dnxhd_1252_chroma_weight[] = {
       0,  32,  35,  36,  37,  37,  38,  40,
      42,  46,  49,  50,  50,  49,  49,  53,
      56,  56,  57,  58,  60,  62,  64,  65,
      63,  64,  64,  65,  66,  65,  67,  71,
      72,  74,  74,  74,  74,  77,  81,  78,
      72,  73,  82,  85,  89,  88,  84,  80,
      90, 100,  90,  90,  88,  87,  90,  95,
     114, 128, 125, 129, 134, 125, 116, 116,
 };
 
d3dc629c
 static const uint8_t dnxhd_1237_dc_codes[12] = {
     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
 };
 
 static const uint8_t dnxhd_1237_dc_bits[12] = {
     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
 };
 
 static const uint16_t dnxhd_1237_ac_codes[257] = {
ecf86e1a
         0,     1,     4,     5,    12,    26,    27,    56,
        57,    58,    59,   120,   121,   244,   245,   246,
       247,   248,   498,   499,   500,   501,   502,  1006,
      1007,  1008,  1009,  1010,  1011,  2024,  2025,  2026,
      2027,  2028,  2029,  2030,  2031,  4064,  4065,  4066,
      4067,  4068,  4069,  4070,  4071,  4072,  4073,  8148,
      8149,  8150,  8151,  8152,  8153,  8154,  8155,  8156,
      8157,  8158, 16318, 16319, 16320, 16321, 16322, 16323,
     16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331,
     16332, 16333, 32668, 32669, 32670, 32671, 32672, 32673,
     32674, 32675, 32676, 32677, 32678, 32679, 32680, 32681,
     32682, 32683, 32684, 65370, 65371, 65372, 65373, 65374,
     65375, 65376, 65377, 65378, 65379, 65380, 65381, 65382,
     65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390,
     65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
     65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
     65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
     65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
     65535,
d3dc629c
 };
 
 static const uint8_t dnxhd_1237_ac_bits[257] = {
ecf86e1a
      2,  2,  3,  3,  4,  5,  5,  6,  6,  6,  6,  7,  7,  8,  8,  8,
      8,  8,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
     11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16,
d3dc629c
 };
 
 static const uint8_t dnxhd_1237_ac_level[257] = {
185a2c08
       3,  3,  5,  0,  7,  9,  5, 11, 13, 15,  7, 17, 19, 21, 23, 25,
       9, 11, 27, 29, 31, 33, 13, 35, 37, 39, 41, 43, 15, 45, 47, 49,
      51, 53, 55, 17, 19, 57, 59, 61, 63, 65, 67, 69, 21, 23, 25, 71,
      73, 75, 77, 79, 81, 83, 27, 29, 31, 33, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105, 35, 37, 39, 41, 43,107,109,111,113,115,117,
     119,121,123,129,  3, 45, 47, 49, 51, 53, 55,125,127,  5,  7,  9,
      11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41,
      43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73,
      75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,
     107,109,111,113,115,117,119,121,123,125,127,129, 57, 59, 61, 63,
      65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
      33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
      65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129,
d3dc629c
 };
 
9dfd89b8
 static const uint8_t dnxhd_1237_ac_flags[257] = {
     0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0,
     2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,
     0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0,
     0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1,
ecf86e1a
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9dfd89b8
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3,
d3dc629c
 };
 
 static const uint16_t dnxhd_1237_run_codes[62] = {
ecf86e1a
        0,    4,   10,   11,   24,   25,   26,   54,
       55,   56,   57,   58,  118,  119,  240,  482,
      483,  484,  485,  486,  487,  488,  489,  490,
      491,  492,  493,  494,  990,  991,  992,  993,
      994,  995,  996,  997,  998,  999, 1000, 1001,
     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
     1018, 1019, 1020, 1021, 1022, 1023,
d3dc629c
 };
 
 static const uint8_t dnxhd_1237_run_bits[62] = {
ecf86e1a
      1,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  6,  7,  7,  8,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
d3dc629c
 };
 
 static const uint8_t dnxhd_1237_run[62] = {
ecf86e1a
      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
     17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
     26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
     42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
d3dc629c
 };
 
 static const uint8_t dnxhd_1238_dc_codes[12] = {
     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
 };
 
 static const uint8_t dnxhd_1238_dc_bits[12] = {
     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
 };
 
 static const uint16_t dnxhd_1238_ac_codes[257] = {
ecf86e1a
         0,     1,     4,    10,    11,    24,    25,    26,
        54,    55,    56,    57,   116,   117,   118,   119,
       240,   241,   242,   243,   244,   245,   492,   493,
       494,   495,   496,   497,   498,   499,  1000,  1001,
      1002,  1003,  1004,  1005,  1006,  1007,  1008,  2018,
      2019,  2020,  2021,  2022,  2023,  2024,  2025,  2026,
      2027,  4056,  4057,  4058,  4059,  4060,  4061,  4062,
      4063,  4064,  4065,  4066,  4067,  4068,  4069,  8140,
      8141,  8142,  8143,  8144,  8145,  8146,  8147,  8148,
      8149,  8150,  8151,  8152,  8153,  8154,  8155,  8156,
     16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
     16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
     16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
     16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
     32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
     32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
     32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
     65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
     65535,
d3dc629c
 };
 
 static const uint8_t dnxhd_1238_ac_bits[257] = {
ecf86e1a
      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16,
d3dc629c
 };
 
 static const uint8_t dnxhd_1238_ac_level[257] = {
185a2c08
       3,  3,  5,  7,  0,  9, 11,  5, 13, 15, 17,  7, 19, 21, 23,  9,
      25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 45, 13, 15, 47, 49,
      51, 53, 55, 57, 59, 17, 19, 61, 63, 65, 67, 69, 71, 73, 75, 21,
      23, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 25, 27, 29, 99,
     101,103,105,107,109,111,113,115,117,119,121,123, 31, 33, 35, 37,
     125,127,129,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27,
      29, 31, 33, 39, 41, 43, 45, 47, 49, 35, 37, 39, 41, 43, 45, 47,
      49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 81, 51,
      53, 55, 57, 59, 61, 77, 79, 83, 85, 87, 89, 91, 93, 95, 97, 99,
     101,103,105,107,109,111,113,115,117,119,121,123,125,127,129, 63,
      65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
      33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
      65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129,
d3dc629c
 }; /* 0 is EOB */
 
9dfd89b8
 static const uint8_t dnxhd_1238_ac_flags[257] = {
     0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
     0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
     0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2,
     2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2,
     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
     2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3,
d3dc629c
 };
 
36204ed8
 static const uint16_t dnxhd_1235_1238_1241_run_codes[62] = {
ecf86e1a
        0,    4,   10,   11,   24,   25,   26,   27,
       56,   57,   58,   59,  120,  242,  486,  487,
      488,  489,  980,  981,  982,  983,  984,  985,
      986,  987,  988,  989,  990,  991,  992,  993,
      994,  995,  996,  997,  998,  999, 1000, 1001,
     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
     1018, 1019, 1020, 1021, 1022, 1023,
d3dc629c
 };
 
36204ed8
 static const uint8_t dnxhd_1235_1238_1241_run_bits[62] = {
ecf86e1a
      1,  3,  4,  4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  8,  9,  9,
      9,  9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
d3dc629c
 };
 
 static const uint8_t dnxhd_1238_run[62] = {
ecf86e1a
      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
     20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
d3dc629c
 };
 
36204ed8
 static const uint8_t dnxhd_1235_1241_dc_codes[14] = {
cd52a9ca
     10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
 };
 
36204ed8
 static const uint8_t dnxhd_1235_1241_dc_bits[14] = {
cd52a9ca
     4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
 };
ecf86e1a
 
36204ed8
 static const uint16_t dnxhd_1235_1241_ac_codes[257] = {
ecf86e1a
         0,     1,     4,    10,    11,    24,    25,    26,
        54,    55,    56,    57,   116,   117,   118,   119,
       240,   241,   242,   243,   244,   245,   492,   493,
       494,   495,   496,   497,   498,   998,   999,  1000,
      1001,  1002,  1003,  1004,  1005,  1006,  1007,  2016,
      2017,  2018,  2019,  2020,  2021,  2022,  2023,  2024,
      2025,  2026,  4054,  4055,  4056,  4057,  4058,  4059,
      4060,  4061,  4062,  4063,  4064,  4065,  4066,  4067,
      4068,  4069,  8140,  8141,  8142,  8143,  8144,  8145,
      8146,  8147,  8148,  8149,  8150,  8151,  8152,  8153,
      8154,  8155,  8156,  8157, 16316, 16317, 16318, 16319,
     16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
     16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
     16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
     32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
     32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
     32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
     32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
     65535,
cd52a9ca
 };
 
36204ed8
 static const uint8_t dnxhd_1235_1241_ac_bits[257] = {
ecf86e1a
      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16,
cd52a9ca
 };
 
36204ed8
 static const uint8_t dnxhd_1235_1241_ac_level[257] = {
185a2c08
       3,  3,  5,  7,  0,  9, 11,  5, 13, 15, 17,  7, 19, 21, 23,  9,
      25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 13, 15, 45, 47, 49,
      51, 53, 55, 57, 59, 17, 19, 61, 63, 65, 67, 69, 71, 73, 75, 77,
      21, 23, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101, 25, 27,
      29, 31,103,105,107,109,111,113,115,117,119,121,123,125,127,  3,
      33, 35, 37, 39,129,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25,
      27, 29, 31, 33, 35, 41, 43, 45, 47, 49, 37, 39, 41, 43, 45, 47,
      49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
      81, 83, 85, 51, 53, 55, 57, 59, 61, 63, 65, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
      33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
      65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129,
cd52a9ca
 };
 
9dfd89b8
 static const uint8_t dnxhd_1235_1241_ac_flags[257] = {
     0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
     0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
     0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
     2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
     2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
ecf86e1a
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9dfd89b8
     1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
ecf86e1a
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9dfd89b8
     1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3,
cd52a9ca
 };
 
36204ed8
 static const uint8_t dnxhd_1235_1241_run[62] = {
ecf86e1a
      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
     18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
cd52a9ca
 };
 
5ab21439
 static const uint8_t dnxhd_1250_dc_codes[14] = {
     10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127
 };
 static const uint8_t dnxhd_1250_dc_bits[14] = {
     4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7
 };
 static const uint16_t dnxhd_1250_ac_codes[257] = {
         0,     1,     4,    10,    11,    24,    25,    26,
        54,    55,    56,    57,   116,   117,   118,   119,
       240,   241,   242,   243,   244,   245,   492,   493,
       494,   495,   496,   497,   498,   998,   999,  1000,
      1001,  1002,  1003,  1004,  1005,  1006,  2014,  2015,
      2016,  2017,  2018,  2019,  2020,  2021,  2022,  2023,
      2024,  2025,  4052,  4053,  4054,  4055,  4056,  4057,
      4058,  4059,  4060,  4061,  4062,  4063,  4064,  4065,
      4066,  4067,  8136,  8137,  8138,  8139,  8140,  8141,
      8142,  8143,  8144,  8145,  8146,  8147,  8148,  8149,
      8150,  8151,  8152,  8153,  8154,  8155,  8156, 16314,
     16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
     16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
     16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
     32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
     32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
     32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
     32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
     32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
     65535
 };
 static const uint8_t dnxhd_1250_ac_bits[257] = {
      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16
 };
 static const uint8_t dnxhd_1250_ac_level[257] = {
185a2c08
       3,  3,  5,  7,  0,  9, 11,  5, 13, 15, 17,  7, 19, 21, 23,  9,
      25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 45, 13, 47, 49, 51,
      53, 55, 57, 59, 15, 17, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
      19, 21, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105, 23,
      25, 27,107,109,111,113,115,117,119,121,123,125,127,129,  3,  5,
       7,  9, 11, 29, 31, 33, 35, 13, 15, 17, 19, 21, 23, 25, 27, 29,
      31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 37, 39, 41, 43,
      55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85,
      87, 89, 91, 93, 95, 97, 99,101,103,105,107,111,113, 45, 47, 49,
      51, 53, 55,109,115,117,119,121,123,125,127,129, 57, 59, 61, 63,
      65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
      33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
      65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129
5ab21439
 };
9dfd89b8
 static const uint8_t dnxhd_1250_ac_flags[257] = {
     0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
     0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
     0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
     2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
     1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
5ab21439
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9dfd89b8
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
     2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3,
5ab21439
 };
 static const uint16_t dnxhd_1250_run_codes[62] = {
        0,    4,    5,   12,   26,   27,   28,   58,
      118,  119,  120,  242,  486,  487,  976,  977,
      978,  979,  980,  981,  982,  983,  984,  985,
      986,  987,  988,  989,  990,  991,  992,  993,
      994,  995,  996,  997,  998,  999, 1000, 1001,
     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
     1018, 1019, 1020, 1021, 1022, 1023
 };
 static const uint8_t dnxhd_1250_run_bits[62] = {
      1,  3,  3,  4,  5,  5,  5,  6,  7,  7,  7,  8,  9,  9, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
 };
 static const uint8_t dnxhd_1250_run[62] = {
      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62
 };
 
cc3a9708
 static const uint8_t dnxhd_1251_dc_codes[12] = {
     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
 };
ecf86e1a
 
cc3a9708
 static const uint8_t dnxhd_1251_dc_bits[12] = {
     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
 };
ecf86e1a
 
cc3a9708
 static const uint16_t dnxhd_1251_ac_codes[257] = {
ecf86e1a
         0,     1,     4,    10,    11,    24,    25,    26,
        54,    55,    56,    57,   116,   117,   118,   119,
       240,   241,   242,   243,   244,   245,   492,   493,
       494,   495,   496,   497,   996,   997,   998,   999,
      1000,  1001,  1002,  1003,  1004,  1005,  2012,  2013,
      2014,  2015,  2016,  2017,  2018,  2019,  2020,  2021,
      2022,  2023,  2024,  2025,  4052,  4053,  4054,  4055,
      4056,  4057,  4058,  4059,  4060,  4061,  4062,  4063,
      4064,  4065,  4066,  8134,  8135,  8136,  8137,  8138,
      8139,  8140,  8141,  8142,  8143,  8144,  8145,  8146,
      8147,  8148,  8149,  8150,  8151,  8152,  8153,  8154,
      8155,  8156, 16314, 16315, 16316, 16317, 16318, 16319,
     16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
     16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
     16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
     32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
     32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
     32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
     32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
     65535,
cc3a9708
 };
ecf86e1a
 
cc3a9708
 static const uint8_t dnxhd_1251_ac_bits[257] = {
ecf86e1a
      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16,
cc3a9708
 };
ecf86e1a
 
cc3a9708
 static const uint8_t dnxhd_1251_ac_level[257] = {
185a2c08
       3,  3,  5,  7,  0,  9, 11,  5, 13, 15, 17,  7, 19, 21, 23,  9,
      25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 13, 45, 47, 49, 51,
      53, 55, 57, 59, 15, 17, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
      81, 19, 21, 23, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,
      25, 27, 29,107,109,111,113,115,117,119,121,123,125,127,129,  3,
       5,  7,  9, 11, 13, 15, 17, 31, 33, 35, 19, 21, 23, 25, 27, 29,
      31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 37,
      39, 41, 43, 45, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83,
      85, 87, 89, 91, 93, 95, 97, 99,101,103,105,107,109,111,113,115,
     117, 47, 49, 51, 53, 55, 57,119,121,123,125,127,129, 59, 61, 63,
      65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
      33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
      65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129,
cc3a9708
 };
ecf86e1a
 
9dfd89b8
 static const uint8_t dnxhd_1251_ac_flags[257] = {
     0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
     0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
     0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
     1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
     2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
ecf86e1a
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9dfd89b8
     1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3,
cc3a9708
 };
ecf86e1a
 
cc3a9708
 static const uint16_t dnxhd_1251_run_codes[62] = {
ecf86e1a
        0,    4,    5,   12,   26,   27,   28,   58,
      118,  119,  120,  242,  486,  487,  976,  977,
      978,  979,  980,  981,  982,  983,  984,  985,
      986,  987,  988,  989,  990,  991,  992,  993,
      994,  995,  996,  997,  998,  999, 1000, 1001,
     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
     1018, 1019, 1020, 1021, 1022, 1023,
cc3a9708
 };
ecf86e1a
 
cc3a9708
 static const uint8_t dnxhd_1251_run_bits[62] = {
ecf86e1a
      1,  3,  3,  4,  5,  5,  5,  6,  7,  7,  7,  8,  9,  9, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
cc3a9708
 };
ecf86e1a
 
cc3a9708
 static const uint8_t dnxhd_1251_run[62] = {
ecf86e1a
      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
cc3a9708
 };
 
 static const uint8_t dnxhd_1252_dc_codes[12] = {
     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
 };
ecf86e1a
 
cc3a9708
 static const uint8_t dnxhd_1252_dc_bits[12] = {
     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
 };
ecf86e1a
 
cc3a9708
 static const uint16_t dnxhd_1252_ac_codes[257] = {
ecf86e1a
         0,     1,     4,    10,    11,    12,    26,    27,
        56,    57,    58,   118,   119,   120,   242,   243,
       244,   245,   246,   247,   496,   497,   498,   499,
       500,  1002,  1003,  1004,  1005,  1006,  1007,  1008,
      1009,  2020,  2021,  2022,  2023,  2024,  2025,  2026,
      2027,  2028,  2029,  4060,  4061,  4062,  4063,  4064,
      4065,  4066,  4067,  4068,  4069,  4070,  4071,  8144,
      8145,  8146,  8147,  8148,  8149,  8150,  8151,  8152,
      8153,  8154,  8155,  8156,  8157,  8158, 16318, 16319,
     16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
     16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
     32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
     32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
     32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
     65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
     65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
     65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
     65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
     65535,
cc3a9708
 };
ecf86e1a
 
cc3a9708
 static const uint8_t dnxhd_1252_ac_bits[257] = {
ecf86e1a
      2,  2,  3,  4,  4,  4,  5,  5,  6,  6,  6,  7,  7,  7,  8,  8,
      8,  8,  8,  8,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 10,
     10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
     12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
     16,
cc3a9708
 };
ecf86e1a
 
cc3a9708
 static const uint8_t dnxhd_1252_ac_level[257] = {
185a2c08
       3,  3,  5,  7,  5,  0,  9, 11, 13, 15,  7, 17, 19, 21, 23, 25,
      27, 29,  9, 11, 31, 33, 35, 37, 13, 39, 41, 43, 45, 47, 49, 15,
      17, 51, 53, 55, 57, 59, 61, 63, 65, 19, 21, 67, 69, 71, 73, 75,
      77, 79, 81, 83, 23, 25, 27, 85, 87, 89, 91, 93, 95, 97, 99,101,
     103,105,107, 29, 31, 33,109,111,113,115,117,119,121,123,125,127,
     129,  3,  5,  7, 35, 37, 39, 41,  9, 11, 13, 15, 17, 19, 21, 23,
      25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 43, 45, 47, 49, 51, 45,
      47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
      79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,107,109,
     111,113,115,117,119,121,123,125,127,129, 53, 55, 57, 59, 61, 63,
      65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
      33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
      65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
      97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
     129,
cc3a9708
 };
ecf86e1a
 
9dfd89b8
 static const uint8_t dnxhd_1252_ac_flags[257] = {
     0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
     0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2,
     2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1,
ecf86e1a
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9dfd89b8
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3,
cc3a9708
 };
 
d3dc629c
 const CIDEntry ff_dnxhd_cid_table[] = {
185a2c08
     { 1235, 1920, 1080, 0, 917504, 917504, 6, 10, 4,
5ab21439
       dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
       dnxhd_1235_1241_dc_codes, dnxhd_1235_1241_dc_bits,
       dnxhd_1235_1241_ac_codes, dnxhd_1235_1241_ac_bits, dnxhd_1235_1241_ac_level,
9dfd89b8
       dnxhd_1235_1241_ac_flags,
5ab21439
       dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1235_1241_run,
       { 175, 185, 365, 440 } },
185a2c08
     { 1237, 1920, 1080, 0, 606208, 606208, 4, 8, 3,
6cb1d361
       dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
d3dc629c
       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
9dfd89b8
       dnxhd_1237_ac_flags,
0c39c38b
       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
       { 115, 120, 145, 240, 290 } },
185a2c08
     { 1238, 1920, 1080, 0, 917504, 917504, 4, 8, 4,
6cb1d361
       dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
d3dc629c
       dnxhd_1238_dc_codes, dnxhd_1238_dc_bits,
       dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
9dfd89b8
       dnxhd_1238_ac_flags,
36204ed8
       dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1238_run,
0c39c38b
       { 175, 185, 220, 365, 440 } },
185a2c08
     { 1241, 1920, 1080, 1, 917504, 458752, 6, 10, 4,
cd52a9ca
       dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
36204ed8
       dnxhd_1235_1241_dc_codes, dnxhd_1235_1241_dc_bits,
       dnxhd_1235_1241_ac_codes, dnxhd_1235_1241_ac_bits, dnxhd_1235_1241_ac_level,
9dfd89b8
       dnxhd_1235_1241_ac_flags,
36204ed8
       dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1235_1241_run,
0c39c38b
       { 185, 220 } },
185a2c08
     { 1242, 1920, 1080, 1, 606208, 303104, 4, 8, 3,
6cb1d361
       dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
6aacfd22
       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
9dfd89b8
       dnxhd_1237_ac_flags,
0c39c38b
       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
       { 120, 145 } },
185a2c08
     { 1243, 1920, 1080, 1, 917504, 458752, 4, 8, 4,
6cb1d361
       dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
d3dc629c
       dnxhd_1238_dc_codes, dnxhd_1238_dc_bits,
       dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
9dfd89b8
       dnxhd_1238_ac_flags,
36204ed8
       dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1238_run,
0c39c38b
       { 185, 220 } },
185a2c08
     { 1250, 1280,  720, 0, 458752, 458752, 6, 10, 4,
5ab21439
       dnxhd_1250_luma_weight, dnxhd_1250_chroma_weight,
       dnxhd_1250_dc_codes, dnxhd_1250_dc_bits,
       dnxhd_1250_ac_codes, dnxhd_1250_ac_bits, dnxhd_1250_ac_level,
9dfd89b8
       dnxhd_1250_ac_flags,
5ab21439
       dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
       { 90, 180, 220 } },
185a2c08
     { 1251, 1280,  720, 0, 458752, 458752, 4, 8, 4,
cc3a9708
       dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
       dnxhd_1251_dc_codes, dnxhd_1251_dc_bits,
       dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_level,
9dfd89b8
       dnxhd_1251_ac_flags,
0c39c38b
       dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
       { 90, 110, 175, 220 } },
185a2c08
     { 1252, 1280,  720, 0, 303104, 303104, 4, 8, 5,
cc3a9708
       dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
       dnxhd_1252_dc_codes, dnxhd_1252_dc_bits,
       dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
9dfd89b8
       dnxhd_1252_ac_flags,
439c6503
       dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
0c39c38b
       { 60, 75, 115, 145 } },
185a2c08
     { 1253, 1920, 1080, 0, 188416, 188416, 4, 8, 3,
2e85b344
       dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
9dfd89b8
       dnxhd_1237_ac_flags,
0c39c38b
       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
       { 36, 45, 75, 90 } },
d3dc629c
 };
 
 int ff_dnxhd_get_cid_table(int cid)
 {
     int i;
37d3e066
     for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
d3dc629c
         if (ff_dnxhd_cid_table[i].cid == cid)
             return i;
     return -1;
 }
0c39c38b
 
3db02b83
 int avpriv_dnxhd_get_frame_size(int cid)
 {
     int i = ff_dnxhd_get_cid_table(cid);
     if (i<0)
         return i;
     return ff_dnxhd_cid_table[i].frame_size;
 }
 
5ab21439
 int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
0c39c38b
 {
     int i, j;
     int mbs = avctx->bit_rate/1000000;
892d2268
     if (!mbs)
         return 0;
37d3e066
     for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
0c39c38b
         const CIDEntry *cid = &ff_dnxhd_cid_table[i];
         if (cid->width == avctx->width && cid->height == avctx->height &&
             cid->interlaced == !!(avctx->flags & CODEC_FLAG_INTERLACED_DCT) &&
5ab21439
             cid->bit_depth == bit_depth) {
1037e484
             for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
0c39c38b
                 if (cid->bit_rates[j] == mbs)
                     return cid->cid;
             }
         }
     }
     return 0;
 }