LCOV - code coverage report
Current view: top level - Codec - EbCabacContextModel.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 19 26 73.1 %
Date: 2019-11-25 17:38:06 Functions: 4 5 80.0 %

          Line data    Source code
       1             : /*
       2             : * Copyright(c) 2019 Intel Corporation
       3             : * SPDX - License - Identifier: BSD - 2 - Clause - Patent
       4             : */
       5             : 
       6             : /*
       7             : * Copyright (c) 2016, Alliance for Open Media. All rights reserved
       8             : *
       9             : * This source code is subject to the terms of the BSD 2 Clause License and
      10             : * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
      11             : * was not distributed with this source code in the LICENSE file, you can
      12             : * obtain it at www.aomedia.org/license/software. If the Alliance for Open
      13             : * Media Patent License 1.0 was not distributed with this source code in the
      14             : * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
      15             : */
      16             : 
      17             : #ifndef EbCabacContextModel_h
      18             : #define EbCabacContextModel_h
      19             : 
      20             : #include "EbDefinitions.h"
      21             : #include "EbSegmentationParams.h"
      22             : 
      23             : #ifdef __cplusplus
      24             : extern "C" {
      25             : #endif
      26             : 
      27             : #define TOTAL_NUMBER_OF_QP_VALUES                                     64       // qp range is 0 to 63
      28             : 
      29             : #define TOTAL_NUMBER_OF_SLICE_TYPES                                    3       // I, P and B
      30             :     /**********************************************************************************************************************/
      31             :     /**********************************************************************************************************************/
      32             :     /**********************************************************************************************************************/
      33             :     /********************************************************************************************************************************/
      34             :     //prob.h
      35             : 
      36             :     // TODO(negge): Rename this AomProb once we remove vpxbool.
      37             :     typedef uint16_t AomCdfProb;
      38             : 
      39             : #if PAL_SUP
      40             :     typedef struct {
      41             :         AomCdfProb *color_map_cdf;
      42             :         // TODO( use packed enum type if appropriate)
      43             :         uint8_t token;
      44             :     } TOKENEXTRA;
      45             :     typedef struct {
      46             :         TOKENEXTRA *start;
      47             :         TOKENEXTRA *stop;
      48             :         unsigned int count;
      49             :     } TOKENLIST;
      50             : #endif
      51             : #define CDF_SIZE(x) ((x) + 1)
      52             : #define CDF_PROB_BITS 15
      53             : #define CDF_PROB_TOP (1 << CDF_PROB_BITS)
      54             : #define CDF_INIT_TOP 32768
      55             : #define CDF_SHIFT (15 - CDF_PROB_BITS)
      56             :     /*The value stored in an iCDF is CDF_PROB_TOP minus the actual cumulative
      57             :     probability (an "inverse" CDF).
      58             :     This function converts from one representation to the other (and is its own
      59             :     inverse).*/
      60             : #define AOM_ICDF(x) (CDF_PROB_TOP - (x))
      61             : 
      62             : #define SEG_TEMPORAL_PRED_CTXS 3
      63             : #define SPATIAL_PREDICTION_PROBS 3
      64             : #define SEG_TREE_PROBS (MAX_SEGMENTS - 1)
      65             : 
      66             : #if CDF_SHIFT == 0
      67             : 
      68             : #define AOM_CDF2(a0) AOM_ICDF(a0), AOM_ICDF(CDF_PROB_TOP), 0
      69             : #define AOM_CDF3(a0, a1) AOM_ICDF(a0), AOM_ICDF(a1), AOM_ICDF(CDF_PROB_TOP), 0
      70             : #define AOM_CDF4(a0, a1, a2) \
      71             :   AOM_ICDF(a0), AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(CDF_PROB_TOP), 0
      72             : #define AOM_CDF5(a0, a1, a2, a3) \
      73             :   AOM_ICDF(a0)                   \
      74             :   , AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(a3), AOM_ICDF(CDF_PROB_TOP), 0
      75             : #define AOM_CDF6(a0, a1, a2, a3, a4)                        \
      76             :   AOM_ICDF(a0)                                              \
      77             :   , AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(a3), AOM_ICDF(a4), \
      78             :       AOM_ICDF(CDF_PROB_TOP), 0
      79             : #define AOM_CDF7(a0, a1, a2, a3, a4, a5)                                  \
      80             :   AOM_ICDF(a0)                                                            \
      81             :   , AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(a3), AOM_ICDF(a4), AOM_ICDF(a5), \
      82             :       AOM_ICDF(CDF_PROB_TOP), 0
      83             : #define AOM_CDF8(a0, a1, a2, a3, a4, a5, a6)                              \
      84             :   AOM_ICDF(a0)                                                            \
      85             :   , AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(a3), AOM_ICDF(a4), AOM_ICDF(a5), \
      86             :       AOM_ICDF(a6), AOM_ICDF(CDF_PROB_TOP), 0
      87             : #define AOM_CDF9(a0, a1, a2, a3, a4, a5, a6, a7)                          \
      88             :   AOM_ICDF(a0)                                                            \
      89             :   , AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(a3), AOM_ICDF(a4), AOM_ICDF(a5), \
      90             :       AOM_ICDF(a6), AOM_ICDF(a7), AOM_ICDF(CDF_PROB_TOP), 0
      91             : #define AOM_CDF10(a0, a1, a2, a3, a4, a5, a6, a7, a8)                     \
      92             :   AOM_ICDF(a0)                                                            \
      93             :   , AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(a3), AOM_ICDF(a4), AOM_ICDF(a5), \
      94             :       AOM_ICDF(a6), AOM_ICDF(a7), AOM_ICDF(a8), AOM_ICDF(CDF_PROB_TOP), 0
      95             : #define AOM_CDF11(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)                 \
      96             :   AOM_ICDF(a0)                                                            \
      97             :   , AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(a3), AOM_ICDF(a4), AOM_ICDF(a5), \
      98             :       AOM_ICDF(a6), AOM_ICDF(a7), AOM_ICDF(a8), AOM_ICDF(a9),             \
      99             :       AOM_ICDF(CDF_PROB_TOP), 0
     100             : #define AOM_CDF12(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)               \
     101             :   AOM_ICDF(a0)                                                               \
     102             :   , AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(a3), AOM_ICDF(a4), AOM_ICDF(a5),    \
     103             :       AOM_ICDF(a6), AOM_ICDF(a7), AOM_ICDF(a8), AOM_ICDF(a9), AOM_ICDF(a10), \
     104             :       AOM_ICDF(CDF_PROB_TOP), 0
     105             : #define AOM_CDF13(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)          \
     106             :   AOM_ICDF(a0)                                                               \
     107             :   , AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(a3), AOM_ICDF(a4), AOM_ICDF(a5),    \
     108             :       AOM_ICDF(a6), AOM_ICDF(a7), AOM_ICDF(a8), AOM_ICDF(a9), AOM_ICDF(a10), \
     109             :       AOM_ICDF(a11), AOM_ICDF(CDF_PROB_TOP), 0
     110             : #define AOM_CDF14(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)     \
     111             :   AOM_ICDF(a0)                                                               \
     112             :   , AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(a3), AOM_ICDF(a4), AOM_ICDF(a5),    \
     113             :       AOM_ICDF(a6), AOM_ICDF(a7), AOM_ICDF(a8), AOM_ICDF(a9), AOM_ICDF(a10), \
     114             :       AOM_ICDF(a11), AOM_ICDF(a12), AOM_ICDF(CDF_PROB_TOP), 0
     115             : #define AOM_CDF15(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) \
     116             :   AOM_ICDF(a0)                                                                \
     117             :   , AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(a3), AOM_ICDF(a4), AOM_ICDF(a5),     \
     118             :       AOM_ICDF(a6), AOM_ICDF(a7), AOM_ICDF(a8), AOM_ICDF(a9), AOM_ICDF(a10),  \
     119             :       AOM_ICDF(a11), AOM_ICDF(a12), AOM_ICDF(a13), AOM_ICDF(CDF_PROB_TOP), 0
     120             : #define AOM_CDF16(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, \
     121             :                   a14)                                                        \
     122             :   AOM_ICDF(a0)                                                                \
     123             :   , AOM_ICDF(a1), AOM_ICDF(a2), AOM_ICDF(a3), AOM_ICDF(a4), AOM_ICDF(a5),     \
     124             :       AOM_ICDF(a6), AOM_ICDF(a7), AOM_ICDF(a8), AOM_ICDF(a9), AOM_ICDF(a10),  \
     125             :       AOM_ICDF(a11), AOM_ICDF(a12), AOM_ICDF(a13), AOM_ICDF(a14),             \
     126             :       AOM_ICDF(CDF_PROB_TOP), 0
     127             : 
     128             : #else
     129             : #define AOM_CDF2(a0)                                       \
     130             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 2) + \
     131             :             ((CDF_INIT_TOP - 2) >> 1)) /                   \
     132             :                ((CDF_INIT_TOP - 2)) +                      \
     133             :            1)                                              \
     134             :   , AOM_ICDF(CDF_PROB_TOP), 0
     135             : #define AOM_CDF3(a0, a1)                                       \
     136             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 3) +     \
     137             :             ((CDF_INIT_TOP - 3) >> 1)) /                       \
     138             :                ((CDF_INIT_TOP - 3)) +                          \
     139             :            1)                                                  \
     140             :   ,                                                            \
     141             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 3) + \
     142             :                 ((CDF_INIT_TOP - 3) >> 1)) /                   \
     143             :                    ((CDF_INIT_TOP - 3)) +                      \
     144             :                2),                                             \
     145             :       AOM_ICDF(CDF_PROB_TOP), 0
     146             : #define AOM_CDF4(a0, a1, a2)                                   \
     147             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 4) +     \
     148             :             ((CDF_INIT_TOP - 4) >> 1)) /                       \
     149             :                ((CDF_INIT_TOP - 4)) +                          \
     150             :            1)                                                  \
     151             :   ,                                                            \
     152             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 4) + \
     153             :                 ((CDF_INIT_TOP - 4) >> 1)) /                   \
     154             :                    ((CDF_INIT_TOP - 4)) +                      \
     155             :                2),                                             \
     156             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 4) + \
     157             :                 ((CDF_INIT_TOP - 4) >> 1)) /                   \
     158             :                    ((CDF_INIT_TOP - 4)) +                      \
     159             :                3),                                             \
     160             :       AOM_ICDF(CDF_PROB_TOP), 0
     161             : #define AOM_CDF5(a0, a1, a2, a3)                               \
     162             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 5) +     \
     163             :             ((CDF_INIT_TOP - 5) >> 1)) /                       \
     164             :                ((CDF_INIT_TOP - 5)) +                          \
     165             :            1)                                                  \
     166             :   ,                                                            \
     167             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 5) + \
     168             :                 ((CDF_INIT_TOP - 5) >> 1)) /                   \
     169             :                    ((CDF_INIT_TOP - 5)) +                      \
     170             :                2),                                             \
     171             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 5) + \
     172             :                 ((CDF_INIT_TOP - 5) >> 1)) /                   \
     173             :                    ((CDF_INIT_TOP - 5)) +                      \
     174             :                3),                                             \
     175             :       AOM_ICDF((((a3)-4) * ((CDF_INIT_TOP >> CDF_SHIFT) - 5) + \
     176             :                 ((CDF_INIT_TOP - 5) >> 1)) /                   \
     177             :                    ((CDF_INIT_TOP - 5)) +                      \
     178             :                4),                                             \
     179             :       AOM_ICDF(CDF_PROB_TOP), 0
     180             : #define AOM_CDF6(a0, a1, a2, a3, a4)                           \
     181             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 6) +     \
     182             :             ((CDF_INIT_TOP - 6) >> 1)) /                       \
     183             :                ((CDF_INIT_TOP - 6)) +                          \
     184             :            1)                                                  \
     185             :   ,                                                            \
     186             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 6) + \
     187             :                 ((CDF_INIT_TOP - 6) >> 1)) /                   \
     188             :                    ((CDF_INIT_TOP - 6)) +                      \
     189             :                2),                                             \
     190             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 6) + \
     191             :                 ((CDF_INIT_TOP - 6) >> 1)) /                   \
     192             :                    ((CDF_INIT_TOP - 6)) +                      \
     193             :                3),                                             \
     194             :       AOM_ICDF((((a3)-4) * ((CDF_INIT_TOP >> CDF_SHIFT) - 6) + \
     195             :                 ((CDF_INIT_TOP - 6) >> 1)) /                   \
     196             :                    ((CDF_INIT_TOP - 6)) +                      \
     197             :                4),                                             \
     198             :       AOM_ICDF((((a4)-5) * ((CDF_INIT_TOP >> CDF_SHIFT) - 6) + \
     199             :                 ((CDF_INIT_TOP - 6) >> 1)) /                   \
     200             :                    ((CDF_INIT_TOP - 6)) +                      \
     201             :                5),                                             \
     202             :       AOM_ICDF(CDF_PROB_TOP), 0
     203             : #define AOM_CDF7(a0, a1, a2, a3, a4, a5)                       \
     204             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 7) +     \
     205             :             ((CDF_INIT_TOP - 7) >> 1)) /                       \
     206             :                ((CDF_INIT_TOP - 7)) +                          \
     207             :            1)                                                  \
     208             :   ,                                                            \
     209             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 7) + \
     210             :                 ((CDF_INIT_TOP - 7) >> 1)) /                   \
     211             :                    ((CDF_INIT_TOP - 7)) +                      \
     212             :                2),                                             \
     213             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 7) + \
     214             :                 ((CDF_INIT_TOP - 7) >> 1)) /                   \
     215             :                    ((CDF_INIT_TOP - 7)) +                      \
     216             :                3),                                             \
     217             :       AOM_ICDF((((a3)-4) * ((CDF_INIT_TOP >> CDF_SHIFT) - 7) + \
     218             :                 ((CDF_INIT_TOP - 7) >> 1)) /                   \
     219             :                    ((CDF_INIT_TOP - 7)) +                      \
     220             :                4),                                             \
     221             :       AOM_ICDF((((a4)-5) * ((CDF_INIT_TOP >> CDF_SHIFT) - 7) + \
     222             :                 ((CDF_INIT_TOP - 7) >> 1)) /                   \
     223             :                    ((CDF_INIT_TOP - 7)) +                      \
     224             :                5),                                             \
     225             :       AOM_ICDF((((a5)-6) * ((CDF_INIT_TOP >> CDF_SHIFT) - 7) + \
     226             :                 ((CDF_INIT_TOP - 7) >> 1)) /                   \
     227             :                    ((CDF_INIT_TOP - 7)) +                      \
     228             :                6),                                             \
     229             :       AOM_ICDF(CDF_PROB_TOP), 0
     230             : #define AOM_CDF8(a0, a1, a2, a3, a4, a5, a6)                   \
     231             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 8) +     \
     232             :             ((CDF_INIT_TOP - 8) >> 1)) /                       \
     233             :                ((CDF_INIT_TOP - 8)) +                          \
     234             :            1)                                                  \
     235             :   ,                                                            \
     236             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 8) + \
     237             :                 ((CDF_INIT_TOP - 8) >> 1)) /                   \
     238             :                    ((CDF_INIT_TOP - 8)) +                      \
     239             :                2),                                             \
     240             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 8) + \
     241             :                 ((CDF_INIT_TOP - 8) >> 1)) /                   \
     242             :                    ((CDF_INIT_TOP - 8)) +                      \
     243             :                3),                                             \
     244             :       AOM_ICDF((((a3)-4) * ((CDF_INIT_TOP >> CDF_SHIFT) - 8) + \
     245             :                 ((CDF_INIT_TOP - 8) >> 1)) /                   \
     246             :                    ((CDF_INIT_TOP - 8)) +                      \
     247             :                4),                                             \
     248             :       AOM_ICDF((((a4)-5) * ((CDF_INIT_TOP >> CDF_SHIFT) - 8) + \
     249             :                 ((CDF_INIT_TOP - 8) >> 1)) /                   \
     250             :                    ((CDF_INIT_TOP - 8)) +                      \
     251             :                5),                                             \
     252             :       AOM_ICDF((((a5)-6) * ((CDF_INIT_TOP >> CDF_SHIFT) - 8) + \
     253             :                 ((CDF_INIT_TOP - 8) >> 1)) /                   \
     254             :                    ((CDF_INIT_TOP - 8)) +                      \
     255             :                6),                                             \
     256             :       AOM_ICDF((((a6)-7) * ((CDF_INIT_TOP >> CDF_SHIFT) - 8) + \
     257             :                 ((CDF_INIT_TOP - 8) >> 1)) /                   \
     258             :                    ((CDF_INIT_TOP - 8)) +                      \
     259             :                7),                                             \
     260             :       AOM_ICDF(CDF_PROB_TOP), 0
     261             : #define AOM_CDF9(a0, a1, a2, a3, a4, a5, a6, a7)               \
     262             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 9) +     \
     263             :             ((CDF_INIT_TOP - 9) >> 1)) /                       \
     264             :                ((CDF_INIT_TOP - 9)) +                          \
     265             :            1)                                                  \
     266             :   ,                                                            \
     267             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 9) + \
     268             :                 ((CDF_INIT_TOP - 9) >> 1)) /                   \
     269             :                    ((CDF_INIT_TOP - 9)) +                      \
     270             :                2),                                             \
     271             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 9) + \
     272             :                 ((CDF_INIT_TOP - 9) >> 1)) /                   \
     273             :                    ((CDF_INIT_TOP - 9)) +                      \
     274             :                3),                                             \
     275             :       AOM_ICDF((((a3)-4) * ((CDF_INIT_TOP >> CDF_SHIFT) - 9) + \
     276             :                 ((CDF_INIT_TOP - 9) >> 1)) /                   \
     277             :                    ((CDF_INIT_TOP - 9)) +                      \
     278             :                4),                                             \
     279             :       AOM_ICDF((((a4)-5) * ((CDF_INIT_TOP >> CDF_SHIFT) - 9) + \
     280             :                 ((CDF_INIT_TOP - 9) >> 1)) /                   \
     281             :                    ((CDF_INIT_TOP - 9)) +                      \
     282             :                5),                                             \
     283             :       AOM_ICDF((((a5)-6) * ((CDF_INIT_TOP >> CDF_SHIFT) - 9) + \
     284             :                 ((CDF_INIT_TOP - 9) >> 1)) /                   \
     285             :                    ((CDF_INIT_TOP - 9)) +                      \
     286             :                6),                                             \
     287             :       AOM_ICDF((((a6)-7) * ((CDF_INIT_TOP >> CDF_SHIFT) - 9) + \
     288             :                 ((CDF_INIT_TOP - 9) >> 1)) /                   \
     289             :                    ((CDF_INIT_TOP - 9)) +                      \
     290             :                7),                                             \
     291             :       AOM_ICDF((((a7)-8) * ((CDF_INIT_TOP >> CDF_SHIFT) - 9) + \
     292             :                 ((CDF_INIT_TOP - 9) >> 1)) /                   \
     293             :                    ((CDF_INIT_TOP - 9)) +                      \
     294             :                8),                                             \
     295             :       AOM_ICDF(CDF_PROB_TOP), 0
     296             : #define AOM_CDF10(a0, a1, a2, a3, a4, a5, a6, a7, a8)           \
     297             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 10) +     \
     298             :             ((CDF_INIT_TOP - 10) >> 1)) /                       \
     299             :                ((CDF_INIT_TOP - 10)) +                          \
     300             :            1)                                                   \
     301             :   ,                                                             \
     302             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 10) + \
     303             :                 ((CDF_INIT_TOP - 10) >> 1)) /                   \
     304             :                    ((CDF_INIT_TOP - 10)) +                      \
     305             :                2),                                              \
     306             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 10) + \
     307             :                 ((CDF_INIT_TOP - 10) >> 1)) /                   \
     308             :                    ((CDF_INIT_TOP - 10)) +                      \
     309             :                3),                                              \
     310             :       AOM_ICDF((((a3)-4) * ((CDF_INIT_TOP >> CDF_SHIFT) - 10) + \
     311             :                 ((CDF_INIT_TOP - 10) >> 1)) /                   \
     312             :                    ((CDF_INIT_TOP - 10)) +                      \
     313             :                4),                                              \
     314             :       AOM_ICDF((((a4)-5) * ((CDF_INIT_TOP >> CDF_SHIFT) - 10) + \
     315             :                 ((CDF_INIT_TOP - 10) >> 1)) /                   \
     316             :                    ((CDF_INIT_TOP - 10)) +                      \
     317             :                5),                                              \
     318             :       AOM_ICDF((((a5)-6) * ((CDF_INIT_TOP >> CDF_SHIFT) - 10) + \
     319             :                 ((CDF_INIT_TOP - 10) >> 1)) /                   \
     320             :                    ((CDF_INIT_TOP - 10)) +                      \
     321             :                6),                                              \
     322             :       AOM_ICDF((((a6)-7) * ((CDF_INIT_TOP >> CDF_SHIFT) - 10) + \
     323             :                 ((CDF_INIT_TOP - 10) >> 1)) /                   \
     324             :                    ((CDF_INIT_TOP - 10)) +                      \
     325             :                7),                                              \
     326             :       AOM_ICDF((((a7)-8) * ((CDF_INIT_TOP >> CDF_SHIFT) - 10) + \
     327             :                 ((CDF_INIT_TOP - 10) >> 1)) /                   \
     328             :                    ((CDF_INIT_TOP - 10)) +                      \
     329             :                8),                                              \
     330             :       AOM_ICDF((((a8)-9) * ((CDF_INIT_TOP >> CDF_SHIFT) - 10) + \
     331             :                 ((CDF_INIT_TOP - 10) >> 1)) /                   \
     332             :                    ((CDF_INIT_TOP - 10)) +                      \
     333             :                9),                                              \
     334             :       AOM_ICDF(CDF_PROB_TOP), 0
     335             : #define AOM_CDF11(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)        \
     336             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 11) +      \
     337             :             ((CDF_INIT_TOP - 11) >> 1)) /                        \
     338             :                ((CDF_INIT_TOP - 11)) +                           \
     339             :            1)                                                    \
     340             :   ,                                                              \
     341             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 11) +  \
     342             :                 ((CDF_INIT_TOP - 11) >> 1)) /                    \
     343             :                    ((CDF_INIT_TOP - 11)) +                       \
     344             :                2),                                               \
     345             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 11) +  \
     346             :                 ((CDF_INIT_TOP - 11) >> 1)) /                    \
     347             :                    ((CDF_INIT_TOP - 11)) +                       \
     348             :                3),                                               \
     349             :       AOM_ICDF((((a3)-4) * ((CDF_INIT_TOP >> CDF_SHIFT) - 11) +  \
     350             :                 ((CDF_INIT_TOP - 11) >> 1)) /                    \
     351             :                    ((CDF_INIT_TOP - 11)) +                       \
     352             :                4),                                               \
     353             :       AOM_ICDF((((a4)-5) * ((CDF_INIT_TOP >> CDF_SHIFT) - 11) +  \
     354             :                 ((CDF_INIT_TOP - 11) >> 1)) /                    \
     355             :                    ((CDF_INIT_TOP - 11)) +                       \
     356             :                5),                                               \
     357             :       AOM_ICDF((((a5)-6) * ((CDF_INIT_TOP >> CDF_SHIFT) - 11) +  \
     358             :                 ((CDF_INIT_TOP - 11) >> 1)) /                    \
     359             :                    ((CDF_INIT_TOP - 11)) +                       \
     360             :                6),                                               \
     361             :       AOM_ICDF((((a6)-7) * ((CDF_INIT_TOP >> CDF_SHIFT) - 11) +  \
     362             :                 ((CDF_INIT_TOP - 11) >> 1)) /                    \
     363             :                    ((CDF_INIT_TOP - 11)) +                       \
     364             :                7),                                               \
     365             :       AOM_ICDF((((a7)-8) * ((CDF_INIT_TOP >> CDF_SHIFT) - 11) +  \
     366             :                 ((CDF_INIT_TOP - 11) >> 1)) /                    \
     367             :                    ((CDF_INIT_TOP - 11)) +                       \
     368             :                8),                                               \
     369             :       AOM_ICDF((((a8)-9) * ((CDF_INIT_TOP >> CDF_SHIFT) - 11) +  \
     370             :                 ((CDF_INIT_TOP - 11) >> 1)) /                    \
     371             :                    ((CDF_INIT_TOP - 11)) +                       \
     372             :                9),                                               \
     373             :       AOM_ICDF((((a9)-10) * ((CDF_INIT_TOP >> CDF_SHIFT) - 11) + \
     374             :                 ((CDF_INIT_TOP - 11) >> 1)) /                    \
     375             :                    ((CDF_INIT_TOP - 11)) +                       \
     376             :                10),                                              \
     377             :       AOM_ICDF(CDF_PROB_TOP), 0
     378             : #define AOM_CDF12(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)    \
     379             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 12) +       \
     380             :             ((CDF_INIT_TOP - 12) >> 1)) /                         \
     381             :                ((CDF_INIT_TOP - 12)) +                            \
     382             :            1)                                                     \
     383             :   ,                                                               \
     384             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 12) +   \
     385             :                 ((CDF_INIT_TOP - 12) >> 1)) /                     \
     386             :                    ((CDF_INIT_TOP - 12)) +                        \
     387             :                2),                                                \
     388             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 12) +   \
     389             :                 ((CDF_INIT_TOP - 12) >> 1)) /                     \
     390             :                    ((CDF_INIT_TOP - 12)) +                        \
     391             :                3),                                                \
     392             :       AOM_ICDF((((a3)-4) * ((CDF_INIT_TOP >> CDF_SHIFT) - 12) +   \
     393             :                 ((CDF_INIT_TOP - 12) >> 1)) /                     \
     394             :                    ((CDF_INIT_TOP - 12)) +                        \
     395             :                4),                                                \
     396             :       AOM_ICDF((((a4)-5) * ((CDF_INIT_TOP >> CDF_SHIFT) - 12) +   \
     397             :                 ((CDF_INIT_TOP - 12) >> 1)) /                     \
     398             :                    ((CDF_INIT_TOP - 12)) +                        \
     399             :                5),                                                \
     400             :       AOM_ICDF((((a5)-6) * ((CDF_INIT_TOP >> CDF_SHIFT) - 12) +   \
     401             :                 ((CDF_INIT_TOP - 12) >> 1)) /                     \
     402             :                    ((CDF_INIT_TOP - 12)) +                        \
     403             :                6),                                                \
     404             :       AOM_ICDF((((a6)-7) * ((CDF_INIT_TOP >> CDF_SHIFT) - 12) +   \
     405             :                 ((CDF_INIT_TOP - 12) >> 1)) /                     \
     406             :                    ((CDF_INIT_TOP - 12)) +                        \
     407             :                7),                                                \
     408             :       AOM_ICDF((((a7)-8) * ((CDF_INIT_TOP >> CDF_SHIFT) - 12) +   \
     409             :                 ((CDF_INIT_TOP - 12) >> 1)) /                     \
     410             :                    ((CDF_INIT_TOP - 12)) +                        \
     411             :                8),                                                \
     412             :       AOM_ICDF((((a8)-9) * ((CDF_INIT_TOP >> CDF_SHIFT) - 12) +   \
     413             :                 ((CDF_INIT_TOP - 12) >> 1)) /                     \
     414             :                    ((CDF_INIT_TOP - 12)) +                        \
     415             :                9),                                                \
     416             :       AOM_ICDF((((a9)-10) * ((CDF_INIT_TOP >> CDF_SHIFT) - 12) +  \
     417             :                 ((CDF_INIT_TOP - 12) >> 1)) /                     \
     418             :                    ((CDF_INIT_TOP - 12)) +                        \
     419             :                10),                                               \
     420             :       AOM_ICDF((((a10)-11) * ((CDF_INIT_TOP >> CDF_SHIFT) - 12) + \
     421             :                 ((CDF_INIT_TOP - 12) >> 1)) /                     \
     422             :                    ((CDF_INIT_TOP - 12)) +                        \
     423             :                11),                                               \
     424             :       AOM_ICDF(CDF_PROB_TOP), 0
     425             : #define AOM_CDF13(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) \
     426             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 13) +         \
     427             :             ((CDF_INIT_TOP - 13) >> 1)) /                           \
     428             :                ((CDF_INIT_TOP - 13)) +                              \
     429             :            1)                                                       \
     430             :   ,                                                                 \
     431             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 13) +     \
     432             :                 ((CDF_INIT_TOP - 13) >> 1)) /                       \
     433             :                    ((CDF_INIT_TOP - 13)) +                          \
     434             :                2),                                                  \
     435             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 13) +     \
     436             :                 ((CDF_INIT_TOP - 13) >> 1)) /                       \
     437             :                    ((CDF_INIT_TOP - 13)) +                          \
     438             :                3),                                                  \
     439             :       AOM_ICDF((((a3)-4) * ((CDF_INIT_TOP >> CDF_SHIFT) - 13) +     \
     440             :                 ((CDF_INIT_TOP - 13) >> 1)) /                       \
     441             :                    ((CDF_INIT_TOP - 13)) +                          \
     442             :                4),                                                  \
     443             :       AOM_ICDF((((a4)-5) * ((CDF_INIT_TOP >> CDF_SHIFT) - 13) +     \
     444             :                 ((CDF_INIT_TOP - 13) >> 1)) /                       \
     445             :                    ((CDF_INIT_TOP - 13)) +                          \
     446             :                5),                                                  \
     447             :       AOM_ICDF((((a5)-6) * ((CDF_INIT_TOP >> CDF_SHIFT) - 13) +     \
     448             :                 ((CDF_INIT_TOP - 13) >> 1)) /                       \
     449             :                    ((CDF_INIT_TOP - 13)) +                          \
     450             :                6),                                                  \
     451             :       AOM_ICDF((((a6)-7) * ((CDF_INIT_TOP >> CDF_SHIFT) - 13) +     \
     452             :                 ((CDF_INIT_TOP - 13) >> 1)) /                       \
     453             :                    ((CDF_INIT_TOP - 13)) +                          \
     454             :                7),                                                  \
     455             :       AOM_ICDF((((a7)-8) * ((CDF_INIT_TOP >> CDF_SHIFT) - 13) +     \
     456             :                 ((CDF_INIT_TOP - 13) >> 1)) /                       \
     457             :                    ((CDF_INIT_TOP - 13)) +                          \
     458             :                8),                                                  \
     459             :       AOM_ICDF((((a8)-9) * ((CDF_INIT_TOP >> CDF_SHIFT) - 13) +     \
     460             :                 ((CDF_INIT_TOP - 13) >> 1)) /                       \
     461             :                    ((CDF_INIT_TOP - 13)) +                          \
     462             :                9),                                                  \
     463             :       AOM_ICDF((((a9)-10) * ((CDF_INIT_TOP >> CDF_SHIFT) - 13) +    \
     464             :                 ((CDF_INIT_TOP - 13) >> 1)) /                       \
     465             :                    ((CDF_INIT_TOP - 13)) +                          \
     466             :                10),                                                 \
     467             :       AOM_ICDF((((a10)-11) * ((CDF_INIT_TOP >> CDF_SHIFT) - 13) +   \
     468             :                 ((CDF_INIT_TOP - 13) >> 1)) /                       \
     469             :                    ((CDF_INIT_TOP - 13)) +                          \
     470             :                11),                                                 \
     471             :       AOM_ICDF((((a11)-12) * ((CDF_INIT_TOP >> CDF_SHIFT) - 13) +   \
     472             :                 ((CDF_INIT_TOP - 13) >> 1)) /                       \
     473             :                    ((CDF_INIT_TOP - 13)) +                          \
     474             :                12),                                                 \
     475             :       AOM_ICDF(CDF_PROB_TOP), 0
     476             : #define AOM_CDF14(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) \
     477             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +              \
     478             :             ((CDF_INIT_TOP - 14) >> 1)) /                                \
     479             :                ((CDF_INIT_TOP - 14)) +                                   \
     480             :            1)                                                            \
     481             :   ,                                                                      \
     482             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +          \
     483             :                 ((CDF_INIT_TOP - 14) >> 1)) /                            \
     484             :                    ((CDF_INIT_TOP - 14)) +                               \
     485             :                2),                                                       \
     486             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +          \
     487             :                 ((CDF_INIT_TOP - 14) >> 1)) /                            \
     488             :                    ((CDF_INIT_TOP - 14)) +                               \
     489             :                3),                                                       \
     490             :       AOM_ICDF((((a3)-4) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +          \
     491             :                 ((CDF_INIT_TOP - 14) >> 1)) /                            \
     492             :                    ((CDF_INIT_TOP - 14)) +                               \
     493             :                4),                                                       \
     494             :       AOM_ICDF((((a4)-5) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +          \
     495             :                 ((CDF_INIT_TOP - 14) >> 1)) /                            \
     496             :                    ((CDF_INIT_TOP - 14)) +                               \
     497             :                5),                                                       \
     498             :       AOM_ICDF((((a5)-6) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +          \
     499             :                 ((CDF_INIT_TOP - 14) >> 1)) /                            \
     500             :                    ((CDF_INIT_TOP - 14)) +                               \
     501             :                6),                                                       \
     502             :       AOM_ICDF((((a6)-7) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +          \
     503             :                 ((CDF_INIT_TOP - 14) >> 1)) /                            \
     504             :                    ((CDF_INIT_TOP - 14)) +                               \
     505             :                7),                                                       \
     506             :       AOM_ICDF((((a7)-8) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +          \
     507             :                 ((CDF_INIT_TOP - 14) >> 1)) /                            \
     508             :                    ((CDF_INIT_TOP - 14)) +                               \
     509             :                8),                                                       \
     510             :       AOM_ICDF((((a8)-9) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +          \
     511             :                 ((CDF_INIT_TOP - 14) >> 1)) /                            \
     512             :                    ((CDF_INIT_TOP - 14)) +                               \
     513             :                9),                                                       \
     514             :       AOM_ICDF((((a9)-10) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +         \
     515             :                 ((CDF_INIT_TOP - 14) >> 1)) /                            \
     516             :                    ((CDF_INIT_TOP - 14)) +                               \
     517             :                10),                                                      \
     518             :       AOM_ICDF((((a10)-11) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +        \
     519             :                 ((CDF_INIT_TOP - 14) >> 1)) /                            \
     520             :                    ((CDF_INIT_TOP - 14)) +                               \
     521             :                11),                                                      \
     522             :       AOM_ICDF((((a11)-12) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +        \
     523             :                 ((CDF_INIT_TOP - 14) >> 1)) /                            \
     524             :                    ((CDF_INIT_TOP - 14)) +                               \
     525             :                12),                                                      \
     526             :       AOM_ICDF((((a12)-13) * ((CDF_INIT_TOP >> CDF_SHIFT) - 14) +        \
     527             :                 ((CDF_INIT_TOP - 14) >> 1)) /                            \
     528             :                    ((CDF_INIT_TOP - 14)) +                               \
     529             :                13),                                                      \
     530             :       AOM_ICDF(CDF_PROB_TOP), 0
     531             : #define AOM_CDF15(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) \
     532             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +                   \
     533             :             ((CDF_INIT_TOP - 15) >> 1)) /                                     \
     534             :                ((CDF_INIT_TOP - 15)) +                                        \
     535             :            1)                                                                 \
     536             :   ,                                                                           \
     537             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +               \
     538             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     539             :                    ((CDF_INIT_TOP - 15)) +                                    \
     540             :                2),                                                            \
     541             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +               \
     542             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     543             :                    ((CDF_INIT_TOP - 15)) +                                    \
     544             :                3),                                                            \
     545             :       AOM_ICDF((((a3)-4) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +               \
     546             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     547             :                    ((CDF_INIT_TOP - 15)) +                                    \
     548             :                4),                                                            \
     549             :       AOM_ICDF((((a4)-5) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +               \
     550             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     551             :                    ((CDF_INIT_TOP - 15)) +                                    \
     552             :                5),                                                            \
     553             :       AOM_ICDF((((a5)-6) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +               \
     554             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     555             :                    ((CDF_INIT_TOP - 15)) +                                    \
     556             :                6),                                                            \
     557             :       AOM_ICDF((((a6)-7) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +               \
     558             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     559             :                    ((CDF_INIT_TOP - 15)) +                                    \
     560             :                7),                                                            \
     561             :       AOM_ICDF((((a7)-8) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +               \
     562             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     563             :                    ((CDF_INIT_TOP - 15)) +                                    \
     564             :                8),                                                            \
     565             :       AOM_ICDF((((a8)-9) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +               \
     566             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     567             :                    ((CDF_INIT_TOP - 15)) +                                    \
     568             :                9),                                                            \
     569             :       AOM_ICDF((((a9)-10) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +              \
     570             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     571             :                    ((CDF_INIT_TOP - 15)) +                                    \
     572             :                10),                                                           \
     573             :       AOM_ICDF((((a10)-11) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +             \
     574             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     575             :                    ((CDF_INIT_TOP - 15)) +                                    \
     576             :                11),                                                           \
     577             :       AOM_ICDF((((a11)-12) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +             \
     578             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     579             :                    ((CDF_INIT_TOP - 15)) +                                    \
     580             :                12),                                                           \
     581             :       AOM_ICDF((((a12)-13) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +             \
     582             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     583             :                    ((CDF_INIT_TOP - 15)) +                                    \
     584             :                13),                                                           \
     585             :       AOM_ICDF((((a13)-14) * ((CDF_INIT_TOP >> CDF_SHIFT) - 15) +             \
     586             :                 ((CDF_INIT_TOP - 15) >> 1)) /                                 \
     587             :                    ((CDF_INIT_TOP - 15)) +                                    \
     588             :                14),                                                           \
     589             :       AOM_ICDF(CDF_PROB_TOP), 0
     590             : #define AOM_CDF16(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, \
     591             :                   a14)                                                        \
     592             :   AOM_ICDF((((a0)-1) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +                   \
     593             :             ((CDF_INIT_TOP - 16) >> 1)) /                                     \
     594             :                ((CDF_INIT_TOP - 16)) +                                        \
     595             :            1)                                                                 \
     596             :   ,                                                                           \
     597             :       AOM_ICDF((((a1)-2) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +               \
     598             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     599             :                    ((CDF_INIT_TOP - 16)) +                                    \
     600             :                2),                                                            \
     601             :       AOM_ICDF((((a2)-3) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +               \
     602             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     603             :                    ((CDF_INIT_TOP - 16)) +                                    \
     604             :                3),                                                            \
     605             :       AOM_ICDF((((a3)-4) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +               \
     606             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     607             :                    ((CDF_INIT_TOP - 16)) +                                    \
     608             :                4),                                                            \
     609             :       AOM_ICDF((((a4)-5) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +               \
     610             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     611             :                    ((CDF_INIT_TOP - 16)) +                                    \
     612             :                5),                                                            \
     613             :       AOM_ICDF((((a5)-6) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +               \
     614             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     615             :                    ((CDF_INIT_TOP - 16)) +                                    \
     616             :                6),                                                            \
     617             :       AOM_ICDF((((a6)-7) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +               \
     618             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     619             :                    ((CDF_INIT_TOP - 16)) +                                    \
     620             :                7),                                                            \
     621             :       AOM_ICDF((((a7)-8) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +               \
     622             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     623             :                    ((CDF_INIT_TOP - 16)) +                                    \
     624             :                8),                                                            \
     625             :       AOM_ICDF((((a8)-9) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +               \
     626             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     627             :                    ((CDF_INIT_TOP - 16)) +                                    \
     628             :                9),                                                            \
     629             :       AOM_ICDF((((a9)-10) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +              \
     630             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     631             :                    ((CDF_INIT_TOP - 16)) +                                    \
     632             :                10),                                                           \
     633             :       AOM_ICDF((((a10)-11) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +             \
     634             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     635             :                    ((CDF_INIT_TOP - 16)) +                                    \
     636             :                11),                                                           \
     637             :       AOM_ICDF((((a11)-12) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +             \
     638             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     639             :                    ((CDF_INIT_TOP - 16)) +                                    \
     640             :                12),                                                           \
     641             :       AOM_ICDF((((a12)-13) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +             \
     642             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     643             :                    ((CDF_INIT_TOP - 16)) +                                    \
     644             :                13),                                                           \
     645             :       AOM_ICDF((((a13)-14) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +             \
     646             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     647             :                    ((CDF_INIT_TOP - 16)) +                                    \
     648             :                14),                                                           \
     649             :       AOM_ICDF((((a14)-15) * ((CDF_INIT_TOP >> CDF_SHIFT) - 16) +             \
     650             :                 ((CDF_INIT_TOP - 16) >> 1)) /                                 \
     651             :                    ((CDF_INIT_TOP - 16)) +                                    \
     652             :                15),                                                           \
     653             :       AOM_ICDF(CDF_PROB_TOP), 0
     654             : 
     655             : #endif
     656             : 
     657    13673000 :     static INLINE uint8_t get_prob(uint32_t num, uint32_t den) {
     658             :         assert(den != 0);
     659             :         {
     660    13673000 :             const int32_t p = (int32_t)(((uint64_t)num * 256 + (den >> 1)) / den);
     661             :             // (p > 255) ? 255 : (p < 1) ? 1 : p;
     662    13673000 :             const int32_t clipped_prob = p | ((255 - p) >> 23) | (p == 0);
     663    13673000 :             return (uint8_t)clipped_prob;
     664             :         }
     665             :     }
     666             : 
     667     1197702 :     static INLINE void update_cdf(AomCdfProb *cdf, int32_t val, int32_t nsymbs) {
     668             :         int32_t rate;
     669             :         int32_t i/*,tmp*/;
     670             :         AomCdfProb tmp;
     671             : 
     672             :         static const int32_t nsymbs2speed[17] = { 0, 0, 1, 1, 2, 2, 2, 2, 2,
     673             :             2, 2, 2, 2, 2, 2, 2, 2 };
     674             :         assert(nsymbs < 17);
     675     1197702 :         rate = 3 + (cdf[nsymbs] > 15) + (cdf[nsymbs] > 31) +
     676     1197702 :             nsymbs2speed[nsymbs];  // + get_msb(nsymbs);
     677     1197702 :         tmp = AOM_ICDF(0);
     678             : 
     679             :         // Single loop (faster)
     680     4655129 :         for (i = 0; i < nsymbs - 1; ++i) {
     681     3457428 :             tmp = (i == val) ? 0 : tmp;
     682     3457428 :             if (tmp < cdf[i])
     683     2616935 :                 cdf[i] -= ((cdf[i] - tmp) >> rate);
     684             :             else
     685      840494 :                 cdf[i] += ((tmp - cdf[i]) >> rate);
     686             :         }
     687     1197702 :         cdf[nsymbs] += (cdf[nsymbs] < 32);
     688     1197702 :     }
     689             :     /**********************************************************************************************************************/
     690             :     // entropy.h
     691             : #define TOKEN_CDF_Q_CTXS 4
     692             : 
     693             : #define TXB_SKIP_CONTEXTS 13
     694             : 
     695             : #define EOB_COEF_CONTEXTS 22
     696             : 
     697             : #define SIG_COEF_CONTEXTS_2D 26
     698             : #define SIG_COEF_CONTEXTS_1D 16
     699             : #define SIG_COEF_CONTEXTS_EOB 4
     700             : #define SIG_COEF_CONTEXTS (SIG_COEF_CONTEXTS_2D + SIG_COEF_CONTEXTS_1D)
     701             : 
     702             : #define COEFF_BASE_CONTEXTS (SIG_COEF_CONTEXTS)
     703             : #define DC_SIGN_CONTEXTS 3
     704             : 
     705             : #define BR_TMP_OFFSET 12
     706             : #define BR_REF_CAT 4
     707             : #define LEVEL_CONTEXTS 21
     708             : 
     709             : #define NUM_BASE_LEVELS 2
     710             : 
     711             : #define BR_CDF_SIZE (4)
     712             : #define COEFF_BASE_RANGE (4 * (BR_CDF_SIZE - 1))
     713             : 
     714             : #define COEFF_CONTEXT_BITS 6
     715             : #define COEFF_CONTEXT_MASK ((1 << COEFF_CONTEXT_BITS) - 1)
     716             : #define MAX_BASE_BR_RANGE (COEFF_BASE_RANGE + NUM_BASE_LEVELS + 1)
     717             : 
     718             : #define BASE_CONTEXT_POSITION_NUM 12
     719             : 
     720             : #define DCT_MAX_VALUE 16384
     721             : #define DCT_MAX_VALUE_HIGH10 65536
     722             : #define DCT_MAX_VALUE_HIGH12 262144
     723             : 
     724             : /* Coefficients are predicted via a 3-dimensional probability table indexed on
     725             : * REF_TYPES, COEF_BANDS and COEF_CONTEXTS. */
     726             : #define REF_TYPES 2  // intra=0, inter=1
     727             : 
     728             :     struct AV1Common;
     729             :     struct FrameContexts;
     730             :     void eb_av1_reset_cdf_symbol_counters(struct FrameContexts *fc);
     731             :     void eb_av1_default_coef_probs(struct FrameContexts *fc, int32_t base_qindex);
     732             :     void init_mode_probs(struct FrameContexts *fc);
     733             : 
     734             :     struct FrameContexts;
     735             : 
     736             :     typedef char EntropyContext;
     737             : 
     738             :     static INLINE int32_t combine_entropy_contexts(EntropyContext a,
     739             :         EntropyContext b) {
     740             :         return (a != 0) + (b != 0);
     741             :     }
     742             : 
     743             :     static INLINE int32_t get_entropy_context(TxSize tx_size, const EntropyContext *a,
     744             :         const EntropyContext *l) {
     745             :         EntropyContext above_ec = 0, left_ec = 0;
     746             : 
     747             :         switch (tx_size) {
     748             :         case TX_4X4:
     749             :             above_ec = a[0] != 0;
     750             :             left_ec = l[0] != 0;
     751             :             break;
     752             :         case TX_4X8:
     753             :             above_ec = a[0] != 0;
     754             :             left_ec = !!*(const uint16_t *)l;
     755             :             break;
     756             :         case TX_8X4:
     757             :             above_ec = !!*(const uint16_t *)a;
     758             :             left_ec = l[0] != 0;
     759             :             break;
     760             :         case TX_8X16:
     761             :             above_ec = !!*(const uint16_t *)a;
     762             :             left_ec = !!*(const uint32_t *)l;
     763             :             break;
     764             :         case TX_16X8:
     765             :             above_ec = !!*(const uint32_t *)a;
     766             :             left_ec = !!*(const uint16_t *)l;
     767             :             break;
     768             :         case TX_16X32:
     769             :             above_ec = !!*(const uint32_t *)a;
     770             :             left_ec = !!*(const uint64_t *)l;
     771             :             break;
     772             :         case TX_32X16:
     773             :             above_ec = !!*(const uint64_t *)a;
     774             :             left_ec = !!*(const uint32_t *)l;
     775             :             break;
     776             :         case TX_8X8:
     777             :             above_ec = !!*(const uint16_t *)a;
     778             :             left_ec = !!*(const uint16_t *)l;
     779             :             break;
     780             :         case TX_16X16:
     781             :             above_ec = !!*(const uint32_t *)a;
     782             :             left_ec = !!*(const uint32_t *)l;
     783             :             break;
     784             :         case TX_32X32:
     785             :             above_ec = !!*(const uint64_t *)a;
     786             :             left_ec = !!*(const uint64_t *)l;
     787             :             break;
     788             :         case TX_64X64:
     789             :             above_ec = !!(*(const uint64_t *)a | *(const uint64_t *)(a + 8));
     790             :             left_ec = !!(*(const uint64_t *)l | *(const uint64_t *)(l + 8));
     791             :             break;
     792             :         case TX_32X64:
     793             :             above_ec = !!*(const uint64_t *)a;
     794             :             left_ec = !!(*(const uint64_t *)l | *(const uint64_t *)(l + 8));
     795             :             break;
     796             :         case TX_64X32:
     797             :             above_ec = !!(*(const uint64_t *)a | *(const uint64_t *)(a + 8));
     798             :             left_ec = !!*(const uint64_t *)l;
     799             :             break;
     800             :         case TX_4X16:
     801             :             above_ec = a[0] != 0;
     802             :             left_ec = !!*(const uint32_t *)l;
     803             :             break;
     804             :         case TX_16X4:
     805             :             above_ec = !!*(const uint32_t *)a;
     806             :             left_ec = l[0] != 0;
     807             :             break;
     808             :         case TX_8X32:
     809             :             above_ec = !!*(const uint16_t *)a;
     810             :             left_ec = !!*(const uint64_t *)l;
     811             :             break;
     812             :         case TX_32X8:
     813             :             above_ec = !!*(const uint64_t *)a;
     814             :             left_ec = !!*(const uint16_t *)l;
     815             :             break;
     816             :         case TX_16X64:
     817             :             above_ec = !!*(const uint32_t *)a;
     818             :             left_ec = !!(*(const uint64_t *)l | *(const uint64_t *)(l + 8));
     819             :             break;
     820             :         case TX_64X16:
     821             :             above_ec = !!(*(const uint64_t *)a | *(const uint64_t *)(a + 8));
     822             :             left_ec = !!*(const uint32_t *)l;
     823             :             break;
     824             :         default: assert(0 && "Invalid transform size."); break;
     825             :         }
     826             :         return combine_entropy_contexts(above_ec, left_ec);
     827             :     }
     828             : 
     829             :     //**********************************************************************************************************************//
     830             :     // txb_Common.h
     831             :     static const TxClass tx_type_to_class[TX_TYPES] = {
     832             :         TX_CLASS_2D,     // DCT_DCT
     833             :         TX_CLASS_2D,     // ADST_DCT
     834             :         TX_CLASS_2D,     // DCT_ADST
     835             :         TX_CLASS_2D,     // ADST_ADST
     836             :         TX_CLASS_2D,     // FLIPADST_DCT
     837             :         TX_CLASS_2D,     // DCT_FLIPADST
     838             :         TX_CLASS_2D,     // FLIPADST_FLIPADST
     839             :         TX_CLASS_2D,     // ADST_FLIPADST
     840             :         TX_CLASS_2D,     // FLIPADST_ADST
     841             :         TX_CLASS_2D,     // IDTX
     842             :         TX_CLASS_VERT,   // V_DCT
     843             :         TX_CLASS_HORIZ,  // H_DCT
     844             :         TX_CLASS_VERT,   // V_ADST
     845             :         TX_CLASS_HORIZ,  // H_ADST
     846             :         TX_CLASS_VERT,   // V_FLIPADST
     847             :         TX_CLASS_HORIZ,  // H_FLIPADST
     848             :     };
     849             :     /**********************************************************************************************************************/
     850             :     // entropymv.h
     851             : 
     852             : #define MV_UPDATE_PROB 252
     853             : 
     854             : /* Symbols for coding which components are zero jointly */
     855             : #define MV_JOINTS 4
     856             :     typedef enum MvJointType
     857             :     {
     858             :         MV_JOINT_ZERO = 0,   /* Zero vector */
     859             :         MV_JOINT_HNZVZ = 1,  /* Vert zero, hor nonzero */
     860             :         MV_JOINT_HZVNZ = 2,  /* Hor zero, vert nonzero */
     861             :         MV_JOINT_HNZVNZ = 3, /* Both components nonzero */
     862             :     } MvJointType;
     863             : 
     864       16334 :     static INLINE int32_t mv_joint_vertical(MvJointType type) {
     865       16334 :         return type == MV_JOINT_HZVNZ || type == MV_JOINT_HNZVNZ;
     866             :     }
     867             : 
     868       16334 :     static INLINE int32_t mv_joint_horizontal(MvJointType type) {
     869       16334 :         return type == MV_JOINT_HNZVZ || type == MV_JOINT_HNZVNZ;
     870             :     }
     871             : 
     872             :     /* Symbols for coding magnitude class of nonzero components */
     873             : #define MV_CLASSES 11
     874             :     typedef enum MvClassType
     875             :     {
     876             :         MV_CLASS_0 = 0,   /* (0, 2]     integer pel */
     877             :         MV_CLASS_1 = 1,   /* (2, 4]     integer pel */
     878             :         MV_CLASS_2 = 2,   /* (4, 8]     integer pel */
     879             :         MV_CLASS_3 = 3,   /* (8, 16]    integer pel */
     880             :         MV_CLASS_4 = 4,   /* (16, 32]   integer pel */
     881             :         MV_CLASS_5 = 5,   /* (32, 64]   integer pel */
     882             :         MV_CLASS_6 = 6,   /* (64, 128]  integer pel */
     883             :         MV_CLASS_7 = 7,   /* (128, 256] integer pel */
     884             :         MV_CLASS_8 = 8,   /* (256, 512] integer pel */
     885             :         MV_CLASS_9 = 9,   /* (512, 1024] integer pel */
     886             :         MV_CLASS_10 = 10, /* (1024,2048] integer pel */
     887             :     } MvClassType;
     888             : 
     889             : #define CLASS0_BITS 1 /* bits at integer precision for class 0 */
     890             : #define CLASS0_SIZE (1 << CLASS0_BITS)
     891             : #define MV_OFFSET_BITS (MV_CLASSES + CLASS0_BITS - 2)
     892             : #define MV_BITS_CONTEXTS 6
     893             : #define MV_FP_SIZE 4
     894             : 
     895             : #define MV_MAX_BITS (MV_CLASSES + CLASS0_BITS + 2)
     896             : #define MV_MAX ((1 << MV_MAX_BITS) - 1)
     897             : #define MV_VALS ((MV_MAX << 1) + 1)
     898             : 
     899             : #define MV_IN_USE_BITS 14
     900             : #define MV_UPP (1 << MV_IN_USE_BITS)
     901             : #define MV_LOW (-(1 << MV_IN_USE_BITS))
     902             : 
     903             :     typedef struct NmvComponent
     904             :     {
     905             :         AomCdfProb classes_cdf[CDF_SIZE(MV_CLASSES)];
     906             :         AomCdfProb class0_fp_cdf[CLASS0_SIZE][CDF_SIZE(MV_FP_SIZE)];
     907             :         AomCdfProb fp_cdf[CDF_SIZE(MV_FP_SIZE)];
     908             :         AomCdfProb sign_cdf[CDF_SIZE(2)];
     909             :         AomCdfProb class0_hp_cdf[CDF_SIZE(2)];
     910             :         AomCdfProb hp_cdf[CDF_SIZE(2)];
     911             :         AomCdfProb class0_cdf[CDF_SIZE(CLASS0_SIZE)];
     912             :         AomCdfProb bits_cdf[MV_OFFSET_BITS][CDF_SIZE(2)];
     913             :     } NmvComponent;
     914             : 
     915             :     typedef struct NmvContext
     916             :     {
     917             :         AomCdfProb joints_cdf[CDF_SIZE(MV_JOINTS)];
     918             :         NmvComponent comps[2];
     919             :     } NmvContext;
     920             : 
     921             :     MvClassType av1_get_mv_class(int32_t z, int32_t *offset);
     922             : 
     923             :     typedef enum MvSubpelPrecision
     924             :     {
     925             :         MV_SUBPEL_NONE = -1,
     926             :         MV_SUBPEL_LOW_PRECISION = 0,
     927             :         MV_SUBPEL_HIGH_PRECISION,
     928             :     } MvSubpelPrecision;
     929             :     /**********************************************************************************************************************/
     930             :     // entropymode.h
     931             : #define BlockSize_GROUPS 4
     932             : 
     933             : #define TX_SIZE_CONTEXTS 3
     934             : 
     935             : #define INTER_OFFSET(mode) ((mode)-NEARESTMV)
     936             : #define INTER_COMPOUND_OFFSET(mode) (uint8_t)((mode)-NEAREST_NEARESTMV)
     937             : 
     938             : // Number of possible contexts for a color index.
     939             : // As can be seen from av1_get_palette_color_index_context(), the possible
     940             : // contexts are (2,0,0), (2,2,1), (3,2,0), (4,1,0), (5,0,0). These are mapped to
     941             : // a value from 0 to 4 using 'palette_color_index_context_lookup' table.
     942             : #define PALETTE_COLOR_INDEX_CONTEXTS 5
     943             : 
     944             : // Palette Y mode context for a block is determined by number of neighboring
     945             : // blocks (top and/or left) using a palette for Y plane. So, possible Y mode'
     946             : // context values are:
     947             : // 0 if neither left nor top block uses palette for Y plane,
     948             : // 1 if exactly one of left or top block uses palette for Y plane, and
     949             : // 2 if both left and top blocks use palette for Y plane.
     950             : #define PALETTE_Y_MODE_CONTEXTS 3
     951             : 
     952             : // Palette UV mode context for a block is determined by whether this block uses
     953             : // palette for the Y plane. So, possible values are:
     954             : // 0 if this block doesn't use palette for Y plane.
     955             : // 1 if this block uses palette for Y plane (i.e. Y palette size > 0).
     956             : #define PALETTE_UV_MODE_CONTEXTS 2
     957             : 
     958             : // Map the number of pixels in a block size to a context
     959             : //   16(BLOCK_4X4)                          -> 0
     960             : //   32(BLOCK_4X8, BLOCK_8X4)               -> 1
     961             : //   64(BLOCK_8X8, BLOCK_4x16, BLOCK_16X4)  -> 2
     962             : //   ...
     963             : // 4096(BLOCK_64X64)                        -> 8
     964             : #define PALATTE_BSIZE_CTXS 7
     965             : 
     966             : #define KF_MODE_CONTEXTS 5
     967             : 
     968             : #define SEG_TEMPORAL_PRED_CTXS 3
     969             : #define SPATIAL_PREDICTION_PROBS 3
     970             : 
     971             :     typedef struct {
     972             :         const int16_t *scan;
     973             :         const int16_t *iscan;
     974             :         const int16_t *neighbors;
     975             :     } ScanOrder;
     976             : 
     977             :     struct segmentation_probs {
     978             :         AomCdfProb tree_cdf[CDF_SIZE(MAX_SEGMENTS)];
     979             :         AomCdfProb pred_cdf[SEG_TEMPORAL_PRED_CTXS][CDF_SIZE(2)];
     980             :         AomCdfProb spatial_pred_seg_cdf[SPATIAL_PREDICTION_PROBS]
     981             :             [CDF_SIZE(MAX_SEGMENTS)];
     982             :     };
     983             : 
     984             :     typedef struct FrameContexts {
     985             :         AomCdfProb txb_skip_cdf[TX_SIZES][TXB_SKIP_CONTEXTS][CDF_SIZE(2)];
     986             :         AomCdfProb eob_extra_cdf[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS]
     987             :             [CDF_SIZE(2)];
     988             :         AomCdfProb dc_sign_cdf[PLANE_TYPES][DC_SIGN_CONTEXTS][CDF_SIZE(2)];
     989             :         AomCdfProb eob_flag_cdf16[PLANE_TYPES][2][CDF_SIZE(5)];
     990             :         AomCdfProb eob_flag_cdf32[PLANE_TYPES][2][CDF_SIZE(6)];
     991             :         AomCdfProb eob_flag_cdf64[PLANE_TYPES][2][CDF_SIZE(7)];
     992             :         AomCdfProb eob_flag_cdf128[PLANE_TYPES][2][CDF_SIZE(8)];
     993             :         AomCdfProb eob_flag_cdf256[PLANE_TYPES][2][CDF_SIZE(9)];
     994             :         AomCdfProb eob_flag_cdf512[PLANE_TYPES][2][CDF_SIZE(10)];
     995             :         AomCdfProb eob_flag_cdf1024[PLANE_TYPES][2][CDF_SIZE(11)];
     996             :         AomCdfProb coeff_base_eob_cdf[TX_SIZES][PLANE_TYPES][SIG_COEF_CONTEXTS_EOB]
     997             :             [CDF_SIZE(3)];
     998             :         AomCdfProb coeff_base_cdf[TX_SIZES][PLANE_TYPES][SIG_COEF_CONTEXTS]
     999             :             [CDF_SIZE(4)];
    1000             :         AomCdfProb coeff_br_cdf[TX_SIZES][PLANE_TYPES][LEVEL_CONTEXTS]
    1001             :             [CDF_SIZE(BR_CDF_SIZE)];
    1002             : 
    1003             :         AomCdfProb newmv_cdf[NEWMV_MODE_CONTEXTS][CDF_SIZE(2)];
    1004             :         AomCdfProb zeromv_cdf[GLOBALMV_MODE_CONTEXTS][CDF_SIZE(2)];
    1005             :         AomCdfProb refmv_cdf[REFMV_MODE_CONTEXTS][CDF_SIZE(2)];
    1006             :         AomCdfProb drl_cdf[DRL_MODE_CONTEXTS][CDF_SIZE(2)];
    1007             : 
    1008             :         AomCdfProb inter_compound_mode_cdf[INTER_MODE_CONTEXTS]
    1009             :             [CDF_SIZE(INTER_COMPOUND_MODES)];
    1010             :         AomCdfProb compound_type_cdf[BlockSizeS_ALL][CDF_SIZE(MASKED_COMPOUND_TYPES)];
    1011             :         AomCdfProb wedge_idx_cdf[BlockSizeS_ALL][CDF_SIZE(16)];
    1012             :         AomCdfProb interintra_cdf[BlockSize_GROUPS][CDF_SIZE(2)];
    1013             :         AomCdfProb wedge_interintra_cdf[BlockSizeS_ALL][CDF_SIZE(2)];
    1014             :         AomCdfProb interintra_mode_cdf[BlockSize_GROUPS]
    1015             :             [CDF_SIZE(INTERINTRA_MODES)];
    1016             :         AomCdfProb motion_mode_cdf[BlockSizeS_ALL][CDF_SIZE(MOTION_MODES)];
    1017             :         AomCdfProb obmc_cdf[BlockSizeS_ALL][CDF_SIZE(2)];
    1018             :         AomCdfProb palette_y_size_cdf[PALATTE_BSIZE_CTXS][CDF_SIZE(PALETTE_SIZES)];
    1019             :         AomCdfProb palette_uv_size_cdf[PALATTE_BSIZE_CTXS][CDF_SIZE(PALETTE_SIZES)];
    1020             :         AomCdfProb palette_y_color_index_cdf[PALETTE_SIZES]
    1021             :             [PALETTE_COLOR_INDEX_CONTEXTS]
    1022             :         [CDF_SIZE(PALETTE_COLORS)];
    1023             :         AomCdfProb palette_uv_color_index_cdf[PALETTE_SIZES]
    1024             :             [PALETTE_COLOR_INDEX_CONTEXTS]
    1025             :         [CDF_SIZE(PALETTE_COLORS)];
    1026             :         AomCdfProb palette_y_mode_cdf[PALATTE_BSIZE_CTXS][PALETTE_Y_MODE_CONTEXTS]
    1027             :             [CDF_SIZE(2)];
    1028             :         AomCdfProb palette_uv_mode_cdf[PALETTE_UV_MODE_CONTEXTS][CDF_SIZE(2)];
    1029             :         AomCdfProb comp_inter_cdf[COMP_INTER_CONTEXTS][CDF_SIZE(2)];
    1030             :         AomCdfProb single_ref_cdf[REF_CONTEXTS][SINGLE_REFS - 1][CDF_SIZE(2)];
    1031             :         AomCdfProb comp_ref_type_cdf[COMP_REF_TYPE_CONTEXTS][CDF_SIZE(2)];
    1032             :         AomCdfProb uni_comp_ref_cdf[UNI_COMP_REF_CONTEXTS][UNIDIR_COMP_REFS - 1]
    1033             :             [CDF_SIZE(2)];
    1034             : 
    1035             :         AomCdfProb comp_ref_cdf[REF_CONTEXTS][FWD_REFS - 1][CDF_SIZE(2)];
    1036             :         AomCdfProb comp_bwdref_cdf[REF_CONTEXTS][BWD_REFS - 1][CDF_SIZE(2)];
    1037             :         AomCdfProb txfm_partition_cdf[TXFM_PARTITION_CONTEXTS][CDF_SIZE(2)];
    1038             :         AomCdfProb compound_index_cdf[COMP_INDEX_CONTEXTS][CDF_SIZE(2)];
    1039             :         AomCdfProb comp_group_idx_cdf[COMP_GROUP_IDX_CONTEXTS][CDF_SIZE(2)];
    1040             :         AomCdfProb skip_mode_cdfs[SKIP_CONTEXTS][CDF_SIZE(2)];
    1041             :         AomCdfProb skip_cdfs[SKIP_CONTEXTS][CDF_SIZE(2)];
    1042             :         AomCdfProb intra_inter_cdf[INTRA_INTER_CONTEXTS][CDF_SIZE(2)];
    1043             :         NmvContext nmvc;
    1044             :         NmvContext ndvc;
    1045             :         AomCdfProb intrabc_cdf[CDF_SIZE(2)];
    1046             :         struct segmentation_probs seg;
    1047             :         AomCdfProb filter_intra_cdfs[BlockSizeS_ALL][CDF_SIZE(2)];
    1048             :         AomCdfProb filter_intra_mode_cdf[CDF_SIZE(FILTER_INTRA_MODES)];
    1049             :         AomCdfProb switchable_restore_cdf[CDF_SIZE(RESTORE_SWITCHABLE_TYPES)];
    1050             :         AomCdfProb wiener_restore_cdf[CDF_SIZE(2)];
    1051             :         AomCdfProb sgrproj_restore_cdf[CDF_SIZE(2)];
    1052             :         AomCdfProb y_mode_cdf[BlockSize_GROUPS][CDF_SIZE(INTRA_MODES)];
    1053             :         AomCdfProb uv_mode_cdf[CFL_ALLOWED_TYPES][INTRA_MODES]
    1054             :             [CDF_SIZE(UV_INTRA_MODES)];
    1055             :         AomCdfProb partition_cdf[PARTITION_CONTEXTS][CDF_SIZE(EXT_PARTITION_TYPES)];
    1056             : 
    1057             :         AomCdfProb switchable_interp_cdf[SWITCHABLE_FILTER_CONTEXTS]
    1058             :             [CDF_SIZE(SWITCHABLE_FILTERS)];
    1059             :         /* kf_y_cdf is discarded after use, so does not require persistent storage.
    1060             :        However, we keep it with the other CDFs in this struct since it needs to
    1061             :        be copied to each tile to support parallelism just like the others.
    1062             :        */
    1063             :         AomCdfProb kf_y_cdf[KF_MODE_CONTEXTS][KF_MODE_CONTEXTS]
    1064             :             [CDF_SIZE(INTRA_MODES)];
    1065             : 
    1066             :         AomCdfProb angle_delta_cdf[DIRECTIONAL_MODES]
    1067             :             [CDF_SIZE(2 * MAX_ANGLE_DELTA + 1)];
    1068             : 
    1069             :         AomCdfProb tx_size_cdf[MAX_TX_CATS][TX_SIZE_CONTEXTS]
    1070             :             [CDF_SIZE(MAX_TX_DEPTH + 1)];
    1071             :         AomCdfProb delta_q_cdf[CDF_SIZE(DELTA_Q_PROBS + 1)];
    1072             :         AomCdfProb delta_lf_multi_cdf[FRAME_LF_COUNT][CDF_SIZE(DELTA_LF_PROBS + 1)];
    1073             :         AomCdfProb delta_lf_cdf[CDF_SIZE(DELTA_LF_PROBS + 1)];
    1074             :         AomCdfProb intra_ext_tx_cdf[EXT_TX_SETS_INTRA][EXT_TX_SIZES][INTRA_MODES]
    1075             :             [CDF_SIZE(TX_TYPES)];
    1076             :         AomCdfProb inter_ext_tx_cdf[EXT_TX_SETS_INTER][EXT_TX_SIZES]
    1077             :             [CDF_SIZE(TX_TYPES)];
    1078             :         AomCdfProb cfl_sign_cdf[CDF_SIZE(CFL_JOINT_SIGNS)];
    1079             :         AomCdfProb cfl_alpha_cdf[CFL_ALPHA_CONTEXTS][CDF_SIZE(CFL_ALPHABET_SIZE)];
    1080             :         int32_t initialized;
    1081             :     } FRAME_CONTEXT;
    1082             : 
    1083             :     extern const AomCdfProb default_kf_y_mode_cdf[KF_MODE_CONTEXTS]
    1084             :         [KF_MODE_CONTEXTS]
    1085             :     [CDF_SIZE(INTRA_MODES)];
    1086             : 
    1087             :     static const int32_t av1_ext_tx_ind[EXT_TX_SET_TYPES][TX_TYPES] = {
    1088             :         { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    1089             :         { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    1090             :         { 1, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    1091             :         { 1, 5, 6, 4, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0 },
    1092             :         { 3, 4, 5, 8, 6, 7, 9, 10, 11, 0, 1, 2, 0, 0, 0, 0 },
    1093             :         { 7, 8, 9, 12, 10, 11, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6 },
    1094             :     };
    1095             : 
    1096             :     static const int32_t av1_ext_tx_inv[EXT_TX_SET_TYPES][TX_TYPES] = {
    1097             :         { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    1098             :         { 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    1099             :         { 9, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    1100             :         { 9, 0, 10, 11, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    1101             :         { 9, 10, 11, 0, 1, 2, 4, 5, 3, 6, 7, 8, 0, 0, 0, 0 },
    1102             :         { 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 4, 5, 3, 6, 7, 8 },
    1103             :     };
    1104             : 
    1105             :     void av1_set_default_ref_deltas(int8_t *ref_deltas);
    1106             :     void av1_set_default_mode_deltas(int8_t *mode_deltas);
    1107             :     void av1_setup_frame_contexts(struct AV1Common *cm);
    1108             :     void av1_setup_past_independence(struct AV1Common *cm);
    1109             : 
    1110           0 :     static INLINE int32_t av1_ceil_log2(int32_t n) {
    1111           0 :         if (n < 2) return 0;
    1112           0 :         int32_t i = 1, p = 2;
    1113           0 :         while (p < n) {
    1114           0 :             i++;
    1115           0 :             p = p << 1;
    1116             :         }
    1117           0 :         return i;
    1118             :     }
    1119             : 
    1120             :     /**********************************************************************************************************************/
    1121             :     // onyxc_int.h
    1122             : 
    1123             :     /**********************************************************************************************************************/
    1124             :     /**********************************************************************************************************************/
    1125             :     /**********************************************************************************************************************/
    1126             : 
    1127             : #ifdef __cplusplus
    1128             : }
    1129             : #endif
    1130             : #endif //EbCabacContextModel_h

Generated by: LCOV version 1.14