Home | History | Annotate | Download | only in simd
      1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "media/base/simd/yuv_to_rgb_table.h"
      6 
      7 extern "C" {
      8 
      9 // Defines the R,G,B,A contributions from Y.
     10 #define RGBY(i) { \
     11   static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
     12   static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
     13   static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
     14   0 \
     15 }
     16 
     17 // Defines the R,G,B,A contributions from U.
     18 // The contribution to A is the same for any value of U
     19 // causing the final A value to be 255 in every conversion.
     20 // Android's pixel layout is RGBA, while other platforms
     21 // are BGRA.
     22 #if defined(OS_ANDROID)
     23 #define RGBU(i) { \
     24   0, \
     25   static_cast<int16>(-0.391 * 64 * (i - 128) + 0.5), \
     26   static_cast<int16>(2.018 * 64 * (i - 128) + 0.5), \
     27   static_cast<int16>(256 * 64 - 1) \
     28 }
     29 #else
     30 #define RGBU(i) { \
     31   static_cast<int16>(2.018 * 64 * (i - 128) + 0.5), \
     32   static_cast<int16>(-0.391 * 64 * (i - 128) + 0.5), \
     33   0, \
     34   static_cast<int16>(256 * 64 - 1) \
     35 }
     36 #endif
     37 
     38 // Defines the R,G,B,A contributions from V.
     39 // Android's pixel layout is RGBA, while other platforms
     40 // are BGRA.
     41 #if defined(OS_ANDROID)
     42 #define RGBV(i) { \
     43   static_cast<int16>(1.596 * 64 * (i - 128) + 0.5), \
     44   static_cast<int16>(-0.813 * 64 * (i - 128) + 0.5), \
     45   0, \
     46   0 \
     47 }
     48 #else
     49 #define RGBV(i) { \
     50   0, \
     51   static_cast<int16>(-0.813 * 64 * (i - 128) + 0.5), \
     52   static_cast<int16>(1.596 * 64 * (i - 128) + 0.5), \
     53   0 \
     54 }
     55 #endif
     56 
     57 // Used to define a set of multiplier words for each alpha level.
     58 #define ALPHA(i) { \
     59   i, i, i, i \
     60 }
     61 
     62 // The following table defines the RGBA contributions
     63 // for each component of YUVA. The Y table is first followed
     64 // by the U, and V tables. The alpha multiplier table follows.
     65 // These tables are aligned and kept adjacent to optimize for
     66 // SIMD and cacheing.
     67 
     68 SIMD_ALIGNED(const int16 kCoefficientsRgbY[256 * 4][4]) = {
     69   RGBY(0x00), RGBY(0x01), RGBY(0x02), RGBY(0x03),
     70   RGBY(0x04), RGBY(0x05), RGBY(0x06), RGBY(0x07),
     71   RGBY(0x08), RGBY(0x09), RGBY(0x0A), RGBY(0x0B),
     72   RGBY(0x0C), RGBY(0x0D), RGBY(0x0E), RGBY(0x0F),
     73   RGBY(0x10), RGBY(0x11), RGBY(0x12), RGBY(0x13),
     74   RGBY(0x14), RGBY(0x15), RGBY(0x16), RGBY(0x17),
     75   RGBY(0x18), RGBY(0x19), RGBY(0x1A), RGBY(0x1B),
     76   RGBY(0x1C), RGBY(0x1D), RGBY(0x1E), RGBY(0x1F),
     77   RGBY(0x20), RGBY(0x21), RGBY(0x22), RGBY(0x23),
     78   RGBY(0x24), RGBY(0x25), RGBY(0x26), RGBY(0x27),
     79   RGBY(0x28), RGBY(0x29), RGBY(0x2A), RGBY(0x2B),
     80   RGBY(0x2C), RGBY(0x2D), RGBY(0x2E), RGBY(0x2F),
     81   RGBY(0x30), RGBY(0x31), RGBY(0x32), RGBY(0x33),
     82   RGBY(0x34), RGBY(0x35), RGBY(0x36), RGBY(0x37),
     83   RGBY(0x38), RGBY(0x39), RGBY(0x3A), RGBY(0x3B),
     84   RGBY(0x3C), RGBY(0x3D), RGBY(0x3E), RGBY(0x3F),
     85   RGBY(0x40), RGBY(0x41), RGBY(0x42), RGBY(0x43),
     86   RGBY(0x44), RGBY(0x45), RGBY(0x46), RGBY(0x47),
     87   RGBY(0x48), RGBY(0x49), RGBY(0x4A), RGBY(0x4B),
     88   RGBY(0x4C), RGBY(0x4D), RGBY(0x4E), RGBY(0x4F),
     89   RGBY(0x50), RGBY(0x51), RGBY(0x52), RGBY(0x53),
     90   RGBY(0x54), RGBY(0x55), RGBY(0x56), RGBY(0x57),
     91   RGBY(0x58), RGBY(0x59), RGBY(0x5A), RGBY(0x5B),
     92   RGBY(0x5C), RGBY(0x5D), RGBY(0x5E), RGBY(0x5F),
     93   RGBY(0x60), RGBY(0x61), RGBY(0x62), RGBY(0x63),
     94   RGBY(0x64), RGBY(0x65), RGBY(0x66), RGBY(0x67),
     95   RGBY(0x68), RGBY(0x69), RGBY(0x6A), RGBY(0x6B),
     96   RGBY(0x6C), RGBY(0x6D), RGBY(0x6E), RGBY(0x6F),
     97   RGBY(0x70), RGBY(0x71), RGBY(0x72), RGBY(0x73),
     98   RGBY(0x74), RGBY(0x75), RGBY(0x76), RGBY(0x77),
     99   RGBY(0x78), RGBY(0x79), RGBY(0x7A), RGBY(0x7B),
    100   RGBY(0x7C), RGBY(0x7D), RGBY(0x7E), RGBY(0x7F),
    101   RGBY(0x80), RGBY(0x81), RGBY(0x82), RGBY(0x83),
    102   RGBY(0x84), RGBY(0x85), RGBY(0x86), RGBY(0x87),
    103   RGBY(0x88), RGBY(0x89), RGBY(0x8A), RGBY(0x8B),
    104   RGBY(0x8C), RGBY(0x8D), RGBY(0x8E), RGBY(0x8F),
    105   RGBY(0x90), RGBY(0x91), RGBY(0x92), RGBY(0x93),
    106   RGBY(0x94), RGBY(0x95), RGBY(0x96), RGBY(0x97),
    107   RGBY(0x98), RGBY(0x99), RGBY(0x9A), RGBY(0x9B),
    108   RGBY(0x9C), RGBY(0x9D), RGBY(0x9E), RGBY(0x9F),
    109   RGBY(0xA0), RGBY(0xA1), RGBY(0xA2), RGBY(0xA3),
    110   RGBY(0xA4), RGBY(0xA5), RGBY(0xA6), RGBY(0xA7),
    111   RGBY(0xA8), RGBY(0xA9), RGBY(0xAA), RGBY(0xAB),
    112   RGBY(0xAC), RGBY(0xAD), RGBY(0xAE), RGBY(0xAF),
    113   RGBY(0xB0), RGBY(0xB1), RGBY(0xB2), RGBY(0xB3),
    114   RGBY(0xB4), RGBY(0xB5), RGBY(0xB6), RGBY(0xB7),
    115   RGBY(0xB8), RGBY(0xB9), RGBY(0xBA), RGBY(0xBB),
    116   RGBY(0xBC), RGBY(0xBD), RGBY(0xBE), RGBY(0xBF),
    117   RGBY(0xC0), RGBY(0xC1), RGBY(0xC2), RGBY(0xC3),
    118   RGBY(0xC4), RGBY(0xC5), RGBY(0xC6), RGBY(0xC7),
    119   RGBY(0xC8), RGBY(0xC9), RGBY(0xCA), RGBY(0xCB),
    120   RGBY(0xCC), RGBY(0xCD), RGBY(0xCE), RGBY(0xCF),
    121   RGBY(0xD0), RGBY(0xD1), RGBY(0xD2), RGBY(0xD3),
    122   RGBY(0xD4), RGBY(0xD5), RGBY(0xD6), RGBY(0xD7),
    123   RGBY(0xD8), RGBY(0xD9), RGBY(0xDA), RGBY(0xDB),
    124   RGBY(0xDC), RGBY(0xDD), RGBY(0xDE), RGBY(0xDF),
    125   RGBY(0xE0), RGBY(0xE1), RGBY(0xE2), RGBY(0xE3),
    126   RGBY(0xE4), RGBY(0xE5), RGBY(0xE6), RGBY(0xE7),
    127   RGBY(0xE8), RGBY(0xE9), RGBY(0xEA), RGBY(0xEB),
    128   RGBY(0xEC), RGBY(0xED), RGBY(0xEE), RGBY(0xEF),
    129   RGBY(0xF0), RGBY(0xF1), RGBY(0xF2), RGBY(0xF3),
    130   RGBY(0xF4), RGBY(0xF5), RGBY(0xF6), RGBY(0xF7),
    131   RGBY(0xF8), RGBY(0xF9), RGBY(0xFA), RGBY(0xFB),
    132   RGBY(0xFC), RGBY(0xFD), RGBY(0xFE), RGBY(0xFF),
    133 
    134   // Chroma U table.
    135   RGBU(0x00), RGBU(0x01), RGBU(0x02), RGBU(0x03),
    136   RGBU(0x04), RGBU(0x05), RGBU(0x06), RGBU(0x07),
    137   RGBU(0x08), RGBU(0x09), RGBU(0x0A), RGBU(0x0B),
    138   RGBU(0x0C), RGBU(0x0D), RGBU(0x0E), RGBU(0x0F),
    139   RGBU(0x10), RGBU(0x11), RGBU(0x12), RGBU(0x13),
    140   RGBU(0x14), RGBU(0x15), RGBU(0x16), RGBU(0x17),
    141   RGBU(0x18), RGBU(0x19), RGBU(0x1A), RGBU(0x1B),
    142   RGBU(0x1C), RGBU(0x1D), RGBU(0x1E), RGBU(0x1F),
    143   RGBU(0x20), RGBU(0x21), RGBU(0x22), RGBU(0x23),
    144   RGBU(0x24), RGBU(0x25), RGBU(0x26), RGBU(0x27),
    145   RGBU(0x28), RGBU(0x29), RGBU(0x2A), RGBU(0x2B),
    146   RGBU(0x2C), RGBU(0x2D), RGBU(0x2E), RGBU(0x2F),
    147   RGBU(0x30), RGBU(0x31), RGBU(0x32), RGBU(0x33),
    148   RGBU(0x34), RGBU(0x35), RGBU(0x36), RGBU(0x37),
    149   RGBU(0x38), RGBU(0x39), RGBU(0x3A), RGBU(0x3B),
    150   RGBU(0x3C), RGBU(0x3D), RGBU(0x3E), RGBU(0x3F),
    151   RGBU(0x40), RGBU(0x41), RGBU(0x42), RGBU(0x43),
    152   RGBU(0x44), RGBU(0x45), RGBU(0x46), RGBU(0x47),
    153   RGBU(0x48), RGBU(0x49), RGBU(0x4A), RGBU(0x4B),
    154   RGBU(0x4C), RGBU(0x4D), RGBU(0x4E), RGBU(0x4F),
    155   RGBU(0x50), RGBU(0x51), RGBU(0x52), RGBU(0x53),
    156   RGBU(0x54), RGBU(0x55), RGBU(0x56), RGBU(0x57),
    157   RGBU(0x58), RGBU(0x59), RGBU(0x5A), RGBU(0x5B),
    158   RGBU(0x5C), RGBU(0x5D), RGBU(0x5E), RGBU(0x5F),
    159   RGBU(0x60), RGBU(0x61), RGBU(0x62), RGBU(0x63),
    160   RGBU(0x64), RGBU(0x65), RGBU(0x66), RGBU(0x67),
    161   RGBU(0x68), RGBU(0x69), RGBU(0x6A), RGBU(0x6B),
    162   RGBU(0x6C), RGBU(0x6D), RGBU(0x6E), RGBU(0x6F),
    163   RGBU(0x70), RGBU(0x71), RGBU(0x72), RGBU(0x73),
    164   RGBU(0x74), RGBU(0x75), RGBU(0x76), RGBU(0x77),
    165   RGBU(0x78), RGBU(0x79), RGBU(0x7A), RGBU(0x7B),
    166   RGBU(0x7C), RGBU(0x7D), RGBU(0x7E), RGBU(0x7F),
    167   RGBU(0x80), RGBU(0x81), RGBU(0x82), RGBU(0x83),
    168   RGBU(0x84), RGBU(0x85), RGBU(0x86), RGBU(0x87),
    169   RGBU(0x88), RGBU(0x89), RGBU(0x8A), RGBU(0x8B),
    170   RGBU(0x8C), RGBU(0x8D), RGBU(0x8E), RGBU(0x8F),
    171   RGBU(0x90), RGBU(0x91), RGBU(0x92), RGBU(0x93),
    172   RGBU(0x94), RGBU(0x95), RGBU(0x96), RGBU(0x97),
    173   RGBU(0x98), RGBU(0x99), RGBU(0x9A), RGBU(0x9B),
    174   RGBU(0x9C), RGBU(0x9D), RGBU(0x9E), RGBU(0x9F),
    175   RGBU(0xA0), RGBU(0xA1), RGBU(0xA2), RGBU(0xA3),
    176   RGBU(0xA4), RGBU(0xA5), RGBU(0xA6), RGBU(0xA7),
    177   RGBU(0xA8), RGBU(0xA9), RGBU(0xAA), RGBU(0xAB),
    178   RGBU(0xAC), RGBU(0xAD), RGBU(0xAE), RGBU(0xAF),
    179   RGBU(0xB0), RGBU(0xB1), RGBU(0xB2), RGBU(0xB3),
    180   RGBU(0xB4), RGBU(0xB5), RGBU(0xB6), RGBU(0xB7),
    181   RGBU(0xB8), RGBU(0xB9), RGBU(0xBA), RGBU(0xBB),
    182   RGBU(0xBC), RGBU(0xBD), RGBU(0xBE), RGBU(0xBF),
    183   RGBU(0xC0), RGBU(0xC1), RGBU(0xC2), RGBU(0xC3),
    184   RGBU(0xC4), RGBU(0xC5), RGBU(0xC6), RGBU(0xC7),
    185   RGBU(0xC8), RGBU(0xC9), RGBU(0xCA), RGBU(0xCB),
    186   RGBU(0xCC), RGBU(0xCD), RGBU(0xCE), RGBU(0xCF),
    187   RGBU(0xD0), RGBU(0xD1), RGBU(0xD2), RGBU(0xD3),
    188   RGBU(0xD4), RGBU(0xD5), RGBU(0xD6), RGBU(0xD7),
    189   RGBU(0xD8), RGBU(0xD9), RGBU(0xDA), RGBU(0xDB),
    190   RGBU(0xDC), RGBU(0xDD), RGBU(0xDE), RGBU(0xDF),
    191   RGBU(0xE0), RGBU(0xE1), RGBU(0xE2), RGBU(0xE3),
    192   RGBU(0xE4), RGBU(0xE5), RGBU(0xE6), RGBU(0xE7),
    193   RGBU(0xE8), RGBU(0xE9), RGBU(0xEA), RGBU(0xEB),
    194   RGBU(0xEC), RGBU(0xED), RGBU(0xEE), RGBU(0xEF),
    195   RGBU(0xF0), RGBU(0xF1), RGBU(0xF2), RGBU(0xF3),
    196   RGBU(0xF4), RGBU(0xF5), RGBU(0xF6), RGBU(0xF7),
    197   RGBU(0xF8), RGBU(0xF9), RGBU(0xFA), RGBU(0xFB),
    198   RGBU(0xFC), RGBU(0xFD), RGBU(0xFE), RGBU(0xFF),
    199 
    200   // Chroma V table.
    201   RGBV(0x00), RGBV(0x01), RGBV(0x02), RGBV(0x03),
    202   RGBV(0x04), RGBV(0x05), RGBV(0x06), RGBV(0x07),
    203   RGBV(0x08), RGBV(0x09), RGBV(0x0A), RGBV(0x0B),
    204   RGBV(0x0C), RGBV(0x0D), RGBV(0x0E), RGBV(0x0F),
    205   RGBV(0x10), RGBV(0x11), RGBV(0x12), RGBV(0x13),
    206   RGBV(0x14), RGBV(0x15), RGBV(0x16), RGBV(0x17),
    207   RGBV(0x18), RGBV(0x19), RGBV(0x1A), RGBV(0x1B),
    208   RGBV(0x1C), RGBV(0x1D), RGBV(0x1E), RGBV(0x1F),
    209   RGBV(0x20), RGBV(0x21), RGBV(0x22), RGBV(0x23),
    210   RGBV(0x24), RGBV(0x25), RGBV(0x26), RGBV(0x27),
    211   RGBV(0x28), RGBV(0x29), RGBV(0x2A), RGBV(0x2B),
    212   RGBV(0x2C), RGBV(0x2D), RGBV(0x2E), RGBV(0x2F),
    213   RGBV(0x30), RGBV(0x31), RGBV(0x32), RGBV(0x33),
    214   RGBV(0x34), RGBV(0x35), RGBV(0x36), RGBV(0x37),
    215   RGBV(0x38), RGBV(0x39), RGBV(0x3A), RGBV(0x3B),
    216   RGBV(0x3C), RGBV(0x3D), RGBV(0x3E), RGBV(0x3F),
    217   RGBV(0x40), RGBV(0x41), RGBV(0x42), RGBV(0x43),
    218   RGBV(0x44), RGBV(0x45), RGBV(0x46), RGBV(0x47),
    219   RGBV(0x48), RGBV(0x49), RGBV(0x4A), RGBV(0x4B),
    220   RGBV(0x4C), RGBV(0x4D), RGBV(0x4E), RGBV(0x4F),
    221   RGBV(0x50), RGBV(0x51), RGBV(0x52), RGBV(0x53),
    222   RGBV(0x54), RGBV(0x55), RGBV(0x56), RGBV(0x57),
    223   RGBV(0x58), RGBV(0x59), RGBV(0x5A), RGBV(0x5B),
    224   RGBV(0x5C), RGBV(0x5D), RGBV(0x5E), RGBV(0x5F),
    225   RGBV(0x60), RGBV(0x61), RGBV(0x62), RGBV(0x63),
    226   RGBV(0x64), RGBV(0x65), RGBV(0x66), RGBV(0x67),
    227   RGBV(0x68), RGBV(0x69), RGBV(0x6A), RGBV(0x6B),
    228   RGBV(0x6C), RGBV(0x6D), RGBV(0x6E), RGBV(0x6F),
    229   RGBV(0x70), RGBV(0x71), RGBV(0x72), RGBV(0x73),
    230   RGBV(0x74), RGBV(0x75), RGBV(0x76), RGBV(0x77),
    231   RGBV(0x78), RGBV(0x79), RGBV(0x7A), RGBV(0x7B),
    232   RGBV(0x7C), RGBV(0x7D), RGBV(0x7E), RGBV(0x7F),
    233   RGBV(0x80), RGBV(0x81), RGBV(0x82), RGBV(0x83),
    234   RGBV(0x84), RGBV(0x85), RGBV(0x86), RGBV(0x87),
    235   RGBV(0x88), RGBV(0x89), RGBV(0x8A), RGBV(0x8B),
    236   RGBV(0x8C), RGBV(0x8D), RGBV(0x8E), RGBV(0x8F),
    237   RGBV(0x90), RGBV(0x91), RGBV(0x92), RGBV(0x93),
    238   RGBV(0x94), RGBV(0x95), RGBV(0x96), RGBV(0x97),
    239   RGBV(0x98), RGBV(0x99), RGBV(0x9A), RGBV(0x9B),
    240   RGBV(0x9C), RGBV(0x9D), RGBV(0x9E), RGBV(0x9F),
    241   RGBV(0xA0), RGBV(0xA1), RGBV(0xA2), RGBV(0xA3),
    242   RGBV(0xA4), RGBV(0xA5), RGBV(0xA6), RGBV(0xA7),
    243   RGBV(0xA8), RGBV(0xA9), RGBV(0xAA), RGBV(0xAB),
    244   RGBV(0xAC), RGBV(0xAD), RGBV(0xAE), RGBV(0xAF),
    245   RGBV(0xB0), RGBV(0xB1), RGBV(0xB2), RGBV(0xB3),
    246   RGBV(0xB4), RGBV(0xB5), RGBV(0xB6), RGBV(0xB7),
    247   RGBV(0xB8), RGBV(0xB9), RGBV(0xBA), RGBV(0xBB),
    248   RGBV(0xBC), RGBV(0xBD), RGBV(0xBE), RGBV(0xBF),
    249   RGBV(0xC0), RGBV(0xC1), RGBV(0xC2), RGBV(0xC3),
    250   RGBV(0xC4), RGBV(0xC5), RGBV(0xC6), RGBV(0xC7),
    251   RGBV(0xC8), RGBV(0xC9), RGBV(0xCA), RGBV(0xCB),
    252   RGBV(0xCC), RGBV(0xCD), RGBV(0xCE), RGBV(0xCF),
    253   RGBV(0xD0), RGBV(0xD1), RGBV(0xD2), RGBV(0xD3),
    254   RGBV(0xD4), RGBV(0xD5), RGBV(0xD6), RGBV(0xD7),
    255   RGBV(0xD8), RGBV(0xD9), RGBV(0xDA), RGBV(0xDB),
    256   RGBV(0xDC), RGBV(0xDD), RGBV(0xDE), RGBV(0xDF),
    257   RGBV(0xE0), RGBV(0xE1), RGBV(0xE2), RGBV(0xE3),
    258   RGBV(0xE4), RGBV(0xE5), RGBV(0xE6), RGBV(0xE7),
    259   RGBV(0xE8), RGBV(0xE9), RGBV(0xEA), RGBV(0xEB),
    260   RGBV(0xEC), RGBV(0xED), RGBV(0xEE), RGBV(0xEF),
    261   RGBV(0xF0), RGBV(0xF1), RGBV(0xF2), RGBV(0xF3),
    262   RGBV(0xF4), RGBV(0xF5), RGBV(0xF6), RGBV(0xF7),
    263   RGBV(0xF8), RGBV(0xF9), RGBV(0xFA), RGBV(0xFB),
    264   RGBV(0xFC), RGBV(0xFD), RGBV(0xFE), RGBV(0xFF),
    265 
    266   // Alpha multipliers for each  alpha level.
    267   ALPHA(0x00), ALPHA(0x01), ALPHA(0x02), ALPHA(0x03),
    268   ALPHA(0x04), ALPHA(0x05), ALPHA(0x06), ALPHA(0x07),
    269   ALPHA(0x08), ALPHA(0x09), ALPHA(0x0A), ALPHA(0x0B),
    270   ALPHA(0x0C), ALPHA(0x0D), ALPHA(0x0E), ALPHA(0x0F),
    271   ALPHA(0x10), ALPHA(0x11), ALPHA(0x12), ALPHA(0x13),
    272   ALPHA(0x14), ALPHA(0x15), ALPHA(0x16), ALPHA(0x17),
    273   ALPHA(0x18), ALPHA(0x19), ALPHA(0x1A), ALPHA(0x1B),
    274   ALPHA(0x1C), ALPHA(0x1D), ALPHA(0x1E), ALPHA(0x1F),
    275   ALPHA(0x20), ALPHA(0x21), ALPHA(0x22), ALPHA(0x23),
    276   ALPHA(0x24), ALPHA(0x25), ALPHA(0x26), ALPHA(0x27),
    277   ALPHA(0x28), ALPHA(0x29), ALPHA(0x2A), ALPHA(0x2B),
    278   ALPHA(0x2C), ALPHA(0x2D), ALPHA(0x2E), ALPHA(0x2F),
    279   ALPHA(0x30), ALPHA(0x31), ALPHA(0x32), ALPHA(0x33),
    280   ALPHA(0x34), ALPHA(0x35), ALPHA(0x36), ALPHA(0x37),
    281   ALPHA(0x38), ALPHA(0x39), ALPHA(0x3A), ALPHA(0x3B),
    282   ALPHA(0x3C), ALPHA(0x3D), ALPHA(0x3E), ALPHA(0x3F),
    283   ALPHA(0x40), ALPHA(0x41), ALPHA(0x42), ALPHA(0x43),
    284   ALPHA(0x44), ALPHA(0x45), ALPHA(0x46), ALPHA(0x47),
    285   ALPHA(0x48), ALPHA(0x49), ALPHA(0x4A), ALPHA(0x4B),
    286   ALPHA(0x4C), ALPHA(0x4D), ALPHA(0x4E), ALPHA(0x4F),
    287   ALPHA(0x50), ALPHA(0x51), ALPHA(0x52), ALPHA(0x53),
    288   ALPHA(0x54), ALPHA(0x55), ALPHA(0x56), ALPHA(0x57),
    289   ALPHA(0x58), ALPHA(0x59), ALPHA(0x5A), ALPHA(0x5B),
    290   ALPHA(0x5C), ALPHA(0x5D), ALPHA(0x5E), ALPHA(0x5F),
    291   ALPHA(0x60), ALPHA(0x61), ALPHA(0x62), ALPHA(0x63),
    292   ALPHA(0x64), ALPHA(0x65), ALPHA(0x66), ALPHA(0x67),
    293   ALPHA(0x68), ALPHA(0x69), ALPHA(0x6A), ALPHA(0x6B),
    294   ALPHA(0x6C), ALPHA(0x6D), ALPHA(0x6E), ALPHA(0x6F),
    295   ALPHA(0x70), ALPHA(0x71), ALPHA(0x72), ALPHA(0x73),
    296   ALPHA(0x74), ALPHA(0x75), ALPHA(0x76), ALPHA(0x77),
    297   ALPHA(0x78), ALPHA(0x79), ALPHA(0x7A), ALPHA(0x7B),
    298   ALPHA(0x7C), ALPHA(0x7D), ALPHA(0x7E), ALPHA(0x7F),
    299   ALPHA(0x80), ALPHA(0x81), ALPHA(0x82), ALPHA(0x83),
    300   ALPHA(0x84), ALPHA(0x85), ALPHA(0x86), ALPHA(0x87),
    301   ALPHA(0x88), ALPHA(0x89), ALPHA(0x8A), ALPHA(0x8B),
    302   ALPHA(0x8C), ALPHA(0x8D), ALPHA(0x8E), ALPHA(0x8F),
    303   ALPHA(0x90), ALPHA(0x91), ALPHA(0x92), ALPHA(0x93),
    304   ALPHA(0x94), ALPHA(0x95), ALPHA(0x96), ALPHA(0x97),
    305   ALPHA(0x98), ALPHA(0x99), ALPHA(0x9A), ALPHA(0x9B),
    306   ALPHA(0x9C), ALPHA(0x9D), ALPHA(0x9E), ALPHA(0x9F),
    307   ALPHA(0xA0), ALPHA(0xA1), ALPHA(0xA2), ALPHA(0xA3),
    308   ALPHA(0xA4), ALPHA(0xA5), ALPHA(0xA6), ALPHA(0xA7),
    309   ALPHA(0xA8), ALPHA(0xA9), ALPHA(0xAA), ALPHA(0xAB),
    310   ALPHA(0xAC), ALPHA(0xAD), ALPHA(0xAE), ALPHA(0xAF),
    311   ALPHA(0xB0), ALPHA(0xB1), ALPHA(0xB2), ALPHA(0xB3),
    312   ALPHA(0xB4), ALPHA(0xB5), ALPHA(0xB6), ALPHA(0xB7),
    313   ALPHA(0xB8), ALPHA(0xB9), ALPHA(0xBA), ALPHA(0xBB),
    314   ALPHA(0xBC), ALPHA(0xBD), ALPHA(0xBE), ALPHA(0xBF),
    315   ALPHA(0xC0), ALPHA(0xC1), ALPHA(0xC2), ALPHA(0xC3),
    316   ALPHA(0xC4), ALPHA(0xC5), ALPHA(0xC6), ALPHA(0xC7),
    317   ALPHA(0xC8), ALPHA(0xC9), ALPHA(0xCA), ALPHA(0xCB),
    318   ALPHA(0xCC), ALPHA(0xCD), ALPHA(0xCE), ALPHA(0xCF),
    319   ALPHA(0xD0), ALPHA(0xD1), ALPHA(0xD2), ALPHA(0xD3),
    320   ALPHA(0xD4), ALPHA(0xD5), ALPHA(0xD6), ALPHA(0xD7),
    321   ALPHA(0xD8), ALPHA(0xD9), ALPHA(0xDA), ALPHA(0xDB),
    322   ALPHA(0xDC), ALPHA(0xDD), ALPHA(0xDE), ALPHA(0xDF),
    323   ALPHA(0xE0), ALPHA(0xE1), ALPHA(0xE2), ALPHA(0xE3),
    324   ALPHA(0xE4), ALPHA(0xE5), ALPHA(0xE6), ALPHA(0xE7),
    325   ALPHA(0xE8), ALPHA(0xE9), ALPHA(0xEA), ALPHA(0xEB),
    326   ALPHA(0xEC), ALPHA(0xED), ALPHA(0xEE), ALPHA(0xEF),
    327   ALPHA(0xF0), ALPHA(0xF1), ALPHA(0xF2), ALPHA(0xF3),
    328   ALPHA(0xF4), ALPHA(0xF5), ALPHA(0xF6), ALPHA(0xF7),
    329   ALPHA(0xF8), ALPHA(0xF9), ALPHA(0xFA), ALPHA(0xFB),
    330   ALPHA(0xFC), ALPHA(0xFD), ALPHA(0xFE), ALPHA(0xFF),
    331 };
    332 
    333 #undef RGBY
    334 #undef RGBU
    335 #undef RGBV
    336 #undef ALPHA
    337 
    338 // JPEG color range version:
    339 
    340 // Defines the R,G,B,A contributions from Y.
    341 #define RGBY(i) { \
    342   static_cast<int16>(64 * i + 0.5), \
    343   static_cast<int16>(64 * i + 0.5), \
    344   static_cast<int16>(64 * i + 0.5), \
    345   0 \
    346 }
    347 
    348 // Defines the R,G,B,A contributions from U.
    349 // The contribution to A is the same for any value of U
    350 // causing the final A value to be 255 in every conversion.
    351 // Android's pixel layout is RGBA, while other platforms
    352 // are BGRA.
    353 #if defined(OS_ANDROID)
    354 #define RGBU(i) { \
    355   0, \
    356   static_cast<int16>(-0.34414 * 64 * (i - 128) + 0.5), \
    357   static_cast<int16>(1.772 * 64 * (i - 128) + 0.5), \
    358   static_cast<int16>(256 * 64 - 1) \
    359 }
    360 #else
    361 #define RGBU(i) { \
    362   static_cast<int16>(1.772 * 64 * (i - 128) + 0.5), \
    363   static_cast<int16>(-0.34414 * 64 * (i - 128) + 0.5), \
    364   0, \
    365   static_cast<int16>(256 * 64 - 1) \
    366 }
    367 #endif
    368 
    369 // Defines the R,G,B,A contributions from V.
    370 // Android's pixel layout is RGBA, while other platforms
    371 // are BGRA.
    372 #if defined(OS_ANDROID)
    373 #define RGBV(i) { \
    374   static_cast<int16>(1.402 * 64 * (i - 128) + 0.5), \
    375   static_cast<int16>(-0.71414 * 64 * (i - 128) + 0.5), \
    376   0, \
    377   0 \
    378 }
    379 #else
    380 #define RGBV(i) { \
    381   0, \
    382   static_cast<int16>(-0.813 * 64 * (i - 128) + 0.5), \
    383   static_cast<int16>(1.402 * 64 * (i - 128) + 0.5), \
    384   0 \
    385 }
    386 #endif
    387 
    388 // Used to define a set of multiplier words for each alpha level.
    389 #define ALPHA(i) { \
    390   i, i, i, i \
    391 }
    392 
    393 // The following table defines the RGBA contributions
    394 // for each component of YUVA. The Y table is first followed
    395 // by the U, and V tables. The alpha multiplier table follows.
    396 // These tables are aligned and kept adjacent to optimize for
    397 // SIMD and caching.
    398 
    399 SIMD_ALIGNED(const int16 kCoefficientsRgbY_JPEG[256 * 4][4]) = {
    400   RGBY(0x00), RGBY(0x01), RGBY(0x02), RGBY(0x03),
    401   RGBY(0x04), RGBY(0x05), RGBY(0x06), RGBY(0x07),
    402   RGBY(0x08), RGBY(0x09), RGBY(0x0A), RGBY(0x0B),
    403   RGBY(0x0C), RGBY(0x0D), RGBY(0x0E), RGBY(0x0F),
    404   RGBY(0x10), RGBY(0x11), RGBY(0x12), RGBY(0x13),
    405   RGBY(0x14), RGBY(0x15), RGBY(0x16), RGBY(0x17),
    406   RGBY(0x18), RGBY(0x19), RGBY(0x1A), RGBY(0x1B),
    407   RGBY(0x1C), RGBY(0x1D), RGBY(0x1E), RGBY(0x1F),
    408   RGBY(0x20), RGBY(0x21), RGBY(0x22), RGBY(0x23),
    409   RGBY(0x24), RGBY(0x25), RGBY(0x26), RGBY(0x27),
    410   RGBY(0x28), RGBY(0x29), RGBY(0x2A), RGBY(0x2B),
    411   RGBY(0x2C), RGBY(0x2D), RGBY(0x2E), RGBY(0x2F),
    412   RGBY(0x30), RGBY(0x31), RGBY(0x32), RGBY(0x33),
    413   RGBY(0x34), RGBY(0x35), RGBY(0x36), RGBY(0x37),
    414   RGBY(0x38), RGBY(0x39), RGBY(0x3A), RGBY(0x3B),
    415   RGBY(0x3C), RGBY(0x3D), RGBY(0x3E), RGBY(0x3F),
    416   RGBY(0x40), RGBY(0x41), RGBY(0x42), RGBY(0x43),
    417   RGBY(0x44), RGBY(0x45), RGBY(0x46), RGBY(0x47),
    418   RGBY(0x48), RGBY(0x49), RGBY(0x4A), RGBY(0x4B),
    419   RGBY(0x4C), RGBY(0x4D), RGBY(0x4E), RGBY(0x4F),
    420   RGBY(0x50), RGBY(0x51), RGBY(0x52), RGBY(0x53),
    421   RGBY(0x54), RGBY(0x55), RGBY(0x56), RGBY(0x57),
    422   RGBY(0x58), RGBY(0x59), RGBY(0x5A), RGBY(0x5B),
    423   RGBY(0x5C), RGBY(0x5D), RGBY(0x5E), RGBY(0x5F),
    424   RGBY(0x60), RGBY(0x61), RGBY(0x62), RGBY(0x63),
    425   RGBY(0x64), RGBY(0x65), RGBY(0x66), RGBY(0x67),
    426   RGBY(0x68), RGBY(0x69), RGBY(0x6A), RGBY(0x6B),
    427   RGBY(0x6C), RGBY(0x6D), RGBY(0x6E), RGBY(0x6F),
    428   RGBY(0x70), RGBY(0x71), RGBY(0x72), RGBY(0x73),
    429   RGBY(0x74), RGBY(0x75), RGBY(0x76), RGBY(0x77),
    430   RGBY(0x78), RGBY(0x79), RGBY(0x7A), RGBY(0x7B),
    431   RGBY(0x7C), RGBY(0x7D), RGBY(0x7E), RGBY(0x7F),
    432   RGBY(0x80), RGBY(0x81), RGBY(0x82), RGBY(0x83),
    433   RGBY(0x84), RGBY(0x85), RGBY(0x86), RGBY(0x87),
    434   RGBY(0x88), RGBY(0x89), RGBY(0x8A), RGBY(0x8B),
    435   RGBY(0x8C), RGBY(0x8D), RGBY(0x8E), RGBY(0x8F),
    436   RGBY(0x90), RGBY(0x91), RGBY(0x92), RGBY(0x93),
    437   RGBY(0x94), RGBY(0x95), RGBY(0x96), RGBY(0x97),
    438   RGBY(0x98), RGBY(0x99), RGBY(0x9A), RGBY(0x9B),
    439   RGBY(0x9C), RGBY(0x9D), RGBY(0x9E), RGBY(0x9F),
    440   RGBY(0xA0), RGBY(0xA1), RGBY(0xA2), RGBY(0xA3),
    441   RGBY(0xA4), RGBY(0xA5), RGBY(0xA6), RGBY(0xA7),
    442   RGBY(0xA8), RGBY(0xA9), RGBY(0xAA), RGBY(0xAB),
    443   RGBY(0xAC), RGBY(0xAD), RGBY(0xAE), RGBY(0xAF),
    444   RGBY(0xB0), RGBY(0xB1), RGBY(0xB2), RGBY(0xB3),
    445   RGBY(0xB4), RGBY(0xB5), RGBY(0xB6), RGBY(0xB7),
    446   RGBY(0xB8), RGBY(0xB9), RGBY(0xBA), RGBY(0xBB),
    447   RGBY(0xBC), RGBY(0xBD), RGBY(0xBE), RGBY(0xBF),
    448   RGBY(0xC0), RGBY(0xC1), RGBY(0xC2), RGBY(0xC3),
    449   RGBY(0xC4), RGBY(0xC5), RGBY(0xC6), RGBY(0xC7),
    450   RGBY(0xC8), RGBY(0xC9), RGBY(0xCA), RGBY(0xCB),
    451   RGBY(0xCC), RGBY(0xCD), RGBY(0xCE), RGBY(0xCF),
    452   RGBY(0xD0), RGBY(0xD1), RGBY(0xD2), RGBY(0xD3),
    453   RGBY(0xD4), RGBY(0xD5), RGBY(0xD6), RGBY(0xD7),
    454   RGBY(0xD8), RGBY(0xD9), RGBY(0xDA), RGBY(0xDB),
    455   RGBY(0xDC), RGBY(0xDD), RGBY(0xDE), RGBY(0xDF),
    456   RGBY(0xE0), RGBY(0xE1), RGBY(0xE2), RGBY(0xE3),
    457   RGBY(0xE4), RGBY(0xE5), RGBY(0xE6), RGBY(0xE7),
    458   RGBY(0xE8), RGBY(0xE9), RGBY(0xEA), RGBY(0xEB),
    459   RGBY(0xEC), RGBY(0xED), RGBY(0xEE), RGBY(0xEF),
    460   RGBY(0xF0), RGBY(0xF1), RGBY(0xF2), RGBY(0xF3),
    461   RGBY(0xF4), RGBY(0xF5), RGBY(0xF6), RGBY(0xF7),
    462   RGBY(0xF8), RGBY(0xF9), RGBY(0xFA), RGBY(0xFB),
    463   RGBY(0xFC), RGBY(0xFD), RGBY(0xFE), RGBY(0xFF),
    464 
    465   // Chroma U table.
    466   RGBU(0x00), RGBU(0x01), RGBU(0x02), RGBU(0x03),
    467   RGBU(0x04), RGBU(0x05), RGBU(0x06), RGBU(0x07),
    468   RGBU(0x08), RGBU(0x09), RGBU(0x0A), RGBU(0x0B),
    469   RGBU(0x0C), RGBU(0x0D), RGBU(0x0E), RGBU(0x0F),
    470   RGBU(0x10), RGBU(0x11), RGBU(0x12), RGBU(0x13),
    471   RGBU(0x14), RGBU(0x15), RGBU(0x16), RGBU(0x17),
    472   RGBU(0x18), RGBU(0x19), RGBU(0x1A), RGBU(0x1B),
    473   RGBU(0x1C), RGBU(0x1D), RGBU(0x1E), RGBU(0x1F),
    474   RGBU(0x20), RGBU(0x21), RGBU(0x22), RGBU(0x23),
    475   RGBU(0x24), RGBU(0x25), RGBU(0x26), RGBU(0x27),
    476   RGBU(0x28), RGBU(0x29), RGBU(0x2A), RGBU(0x2B),
    477   RGBU(0x2C), RGBU(0x2D), RGBU(0x2E), RGBU(0x2F),
    478   RGBU(0x30), RGBU(0x31), RGBU(0x32), RGBU(0x33),
    479   RGBU(0x34), RGBU(0x35), RGBU(0x36), RGBU(0x37),
    480   RGBU(0x38), RGBU(0x39), RGBU(0x3A), RGBU(0x3B),
    481   RGBU(0x3C), RGBU(0x3D), RGBU(0x3E), RGBU(0x3F),
    482   RGBU(0x40), RGBU(0x41), RGBU(0x42), RGBU(0x43),
    483   RGBU(0x44), RGBU(0x45), RGBU(0x46), RGBU(0x47),
    484   RGBU(0x48), RGBU(0x49), RGBU(0x4A), RGBU(0x4B),
    485   RGBU(0x4C), RGBU(0x4D), RGBU(0x4E), RGBU(0x4F),
    486   RGBU(0x50), RGBU(0x51), RGBU(0x52), RGBU(0x53),
    487   RGBU(0x54), RGBU(0x55), RGBU(0x56), RGBU(0x57),
    488   RGBU(0x58), RGBU(0x59), RGBU(0x5A), RGBU(0x5B),
    489   RGBU(0x5C), RGBU(0x5D), RGBU(0x5E), RGBU(0x5F),
    490   RGBU(0x60), RGBU(0x61), RGBU(0x62), RGBU(0x63),
    491   RGBU(0x64), RGBU(0x65), RGBU(0x66), RGBU(0x67),
    492   RGBU(0x68), RGBU(0x69), RGBU(0x6A), RGBU(0x6B),
    493   RGBU(0x6C), RGBU(0x6D), RGBU(0x6E), RGBU(0x6F),
    494   RGBU(0x70), RGBU(0x71), RGBU(0x72), RGBU(0x73),
    495   RGBU(0x74), RGBU(0x75), RGBU(0x76), RGBU(0x77),
    496   RGBU(0x78), RGBU(0x79), RGBU(0x7A), RGBU(0x7B),
    497   RGBU(0x7C), RGBU(0x7D), RGBU(0x7E), RGBU(0x7F),
    498   RGBU(0x80), RGBU(0x81), RGBU(0x82), RGBU(0x83),
    499   RGBU(0x84), RGBU(0x85), RGBU(0x86), RGBU(0x87),
    500   RGBU(0x88), RGBU(0x89), RGBU(0x8A), RGBU(0x8B),
    501   RGBU(0x8C), RGBU(0x8D), RGBU(0x8E), RGBU(0x8F),
    502   RGBU(0x90), RGBU(0x91), RGBU(0x92), RGBU(0x93),
    503   RGBU(0x94), RGBU(0x95), RGBU(0x96), RGBU(0x97),
    504   RGBU(0x98), RGBU(0x99), RGBU(0x9A), RGBU(0x9B),
    505   RGBU(0x9C), RGBU(0x9D), RGBU(0x9E), RGBU(0x9F),
    506   RGBU(0xA0), RGBU(0xA1), RGBU(0xA2), RGBU(0xA3),
    507   RGBU(0xA4), RGBU(0xA5), RGBU(0xA6), RGBU(0xA7),
    508   RGBU(0xA8), RGBU(0xA9), RGBU(0xAA), RGBU(0xAB),
    509   RGBU(0xAC), RGBU(0xAD), RGBU(0xAE), RGBU(0xAF),
    510   RGBU(0xB0), RGBU(0xB1), RGBU(0xB2), RGBU(0xB3),
    511   RGBU(0xB4), RGBU(0xB5), RGBU(0xB6), RGBU(0xB7),
    512   RGBU(0xB8), RGBU(0xB9), RGBU(0xBA), RGBU(0xBB),
    513   RGBU(0xBC), RGBU(0xBD), RGBU(0xBE), RGBU(0xBF),
    514   RGBU(0xC0), RGBU(0xC1), RGBU(0xC2), RGBU(0xC3),
    515   RGBU(0xC4), RGBU(0xC5), RGBU(0xC6), RGBU(0xC7),
    516   RGBU(0xC8), RGBU(0xC9), RGBU(0xCA), RGBU(0xCB),
    517   RGBU(0xCC), RGBU(0xCD), RGBU(0xCE), RGBU(0xCF),
    518   RGBU(0xD0), RGBU(0xD1), RGBU(0xD2), RGBU(0xD3),
    519   RGBU(0xD4), RGBU(0xD5), RGBU(0xD6), RGBU(0xD7),
    520   RGBU(0xD8), RGBU(0xD9), RGBU(0xDA), RGBU(0xDB),
    521   RGBU(0xDC), RGBU(0xDD), RGBU(0xDE), RGBU(0xDF),
    522   RGBU(0xE0), RGBU(0xE1), RGBU(0xE2), RGBU(0xE3),
    523   RGBU(0xE4), RGBU(0xE5), RGBU(0xE6), RGBU(0xE7),
    524   RGBU(0xE8), RGBU(0xE9), RGBU(0xEA), RGBU(0xEB),
    525   RGBU(0xEC), RGBU(0xED), RGBU(0xEE), RGBU(0xEF),
    526   RGBU(0xF0), RGBU(0xF1), RGBU(0xF2), RGBU(0xF3),
    527   RGBU(0xF4), RGBU(0xF5), RGBU(0xF6), RGBU(0xF7),
    528   RGBU(0xF8), RGBU(0xF9), RGBU(0xFA), RGBU(0xFB),
    529   RGBU(0xFC), RGBU(0xFD), RGBU(0xFE), RGBU(0xFF),
    530 
    531   // Chroma V table.
    532   RGBV(0x00), RGBV(0x01), RGBV(0x02), RGBV(0x03),
    533   RGBV(0x04), RGBV(0x05), RGBV(0x06), RGBV(0x07),
    534   RGBV(0x08), RGBV(0x09), RGBV(0x0A), RGBV(0x0B),
    535   RGBV(0x0C), RGBV(0x0D), RGBV(0x0E), RGBV(0x0F),
    536   RGBV(0x10), RGBV(0x11), RGBV(0x12), RGBV(0x13),
    537   RGBV(0x14), RGBV(0x15), RGBV(0x16), RGBV(0x17),
    538   RGBV(0x18), RGBV(0x19), RGBV(0x1A), RGBV(0x1B),
    539   RGBV(0x1C), RGBV(0x1D), RGBV(0x1E), RGBV(0x1F),
    540   RGBV(0x20), RGBV(0x21), RGBV(0x22), RGBV(0x23),
    541   RGBV(0x24), RGBV(0x25), RGBV(0x26), RGBV(0x27),
    542   RGBV(0x28), RGBV(0x29), RGBV(0x2A), RGBV(0x2B),
    543   RGBV(0x2C), RGBV(0x2D), RGBV(0x2E), RGBV(0x2F),
    544   RGBV(0x30), RGBV(0x31), RGBV(0x32), RGBV(0x33),
    545   RGBV(0x34), RGBV(0x35), RGBV(0x36), RGBV(0x37),
    546   RGBV(0x38), RGBV(0x39), RGBV(0x3A), RGBV(0x3B),
    547   RGBV(0x3C), RGBV(0x3D), RGBV(0x3E), RGBV(0x3F),
    548   RGBV(0x40), RGBV(0x41), RGBV(0x42), RGBV(0x43),
    549   RGBV(0x44), RGBV(0x45), RGBV(0x46), RGBV(0x47),
    550   RGBV(0x48), RGBV(0x49), RGBV(0x4A), RGBV(0x4B),
    551   RGBV(0x4C), RGBV(0x4D), RGBV(0x4E), RGBV(0x4F),
    552   RGBV(0x50), RGBV(0x51), RGBV(0x52), RGBV(0x53),
    553   RGBV(0x54), RGBV(0x55), RGBV(0x56), RGBV(0x57),
    554   RGBV(0x58), RGBV(0x59), RGBV(0x5A), RGBV(0x5B),
    555   RGBV(0x5C), RGBV(0x5D), RGBV(0x5E), RGBV(0x5F),
    556   RGBV(0x60), RGBV(0x61), RGBV(0x62), RGBV(0x63),
    557   RGBV(0x64), RGBV(0x65), RGBV(0x66), RGBV(0x67),
    558   RGBV(0x68), RGBV(0x69), RGBV(0x6A), RGBV(0x6B),
    559   RGBV(0x6C), RGBV(0x6D), RGBV(0x6E), RGBV(0x6F),
    560   RGBV(0x70), RGBV(0x71), RGBV(0x72), RGBV(0x73),
    561   RGBV(0x74), RGBV(0x75), RGBV(0x76), RGBV(0x77),
    562   RGBV(0x78), RGBV(0x79), RGBV(0x7A), RGBV(0x7B),
    563   RGBV(0x7C), RGBV(0x7D), RGBV(0x7E), RGBV(0x7F),
    564   RGBV(0x80), RGBV(0x81), RGBV(0x82), RGBV(0x83),
    565   RGBV(0x84), RGBV(0x85), RGBV(0x86), RGBV(0x87),
    566   RGBV(0x88), RGBV(0x89), RGBV(0x8A), RGBV(0x8B),
    567   RGBV(0x8C), RGBV(0x8D), RGBV(0x8E), RGBV(0x8F),
    568   RGBV(0x90), RGBV(0x91), RGBV(0x92), RGBV(0x93),
    569   RGBV(0x94), RGBV(0x95), RGBV(0x96), RGBV(0x97),
    570   RGBV(0x98), RGBV(0x99), RGBV(0x9A), RGBV(0x9B),
    571   RGBV(0x9C), RGBV(0x9D), RGBV(0x9E), RGBV(0x9F),
    572   RGBV(0xA0), RGBV(0xA1), RGBV(0xA2), RGBV(0xA3),
    573   RGBV(0xA4), RGBV(0xA5), RGBV(0xA6), RGBV(0xA7),
    574   RGBV(0xA8), RGBV(0xA9), RGBV(0xAA), RGBV(0xAB),
    575   RGBV(0xAC), RGBV(0xAD), RGBV(0xAE), RGBV(0xAF),
    576   RGBV(0xB0), RGBV(0xB1), RGBV(0xB2), RGBV(0xB3),
    577   RGBV(0xB4), RGBV(0xB5), RGBV(0xB6), RGBV(0xB7),
    578   RGBV(0xB8), RGBV(0xB9), RGBV(0xBA), RGBV(0xBB),
    579   RGBV(0xBC), RGBV(0xBD), RGBV(0xBE), RGBV(0xBF),
    580   RGBV(0xC0), RGBV(0xC1), RGBV(0xC2), RGBV(0xC3),
    581   RGBV(0xC4), RGBV(0xC5), RGBV(0xC6), RGBV(0xC7),
    582   RGBV(0xC8), RGBV(0xC9), RGBV(0xCA), RGBV(0xCB),
    583   RGBV(0xCC), RGBV(0xCD), RGBV(0xCE), RGBV(0xCF),
    584   RGBV(0xD0), RGBV(0xD1), RGBV(0xD2), RGBV(0xD3),
    585   RGBV(0xD4), RGBV(0xD5), RGBV(0xD6), RGBV(0xD7),
    586   RGBV(0xD8), RGBV(0xD9), RGBV(0xDA), RGBV(0xDB),
    587   RGBV(0xDC), RGBV(0xDD), RGBV(0xDE), RGBV(0xDF),
    588   RGBV(0xE0), RGBV(0xE1), RGBV(0xE2), RGBV(0xE3),
    589   RGBV(0xE4), RGBV(0xE5), RGBV(0xE6), RGBV(0xE7),
    590   RGBV(0xE8), RGBV(0xE9), RGBV(0xEA), RGBV(0xEB),
    591   RGBV(0xEC), RGBV(0xED), RGBV(0xEE), RGBV(0xEF),
    592   RGBV(0xF0), RGBV(0xF1), RGBV(0xF2), RGBV(0xF3),
    593   RGBV(0xF4), RGBV(0xF5), RGBV(0xF6), RGBV(0xF7),
    594   RGBV(0xF8), RGBV(0xF9), RGBV(0xFA), RGBV(0xFB),
    595   RGBV(0xFC), RGBV(0xFD), RGBV(0xFE), RGBV(0xFF),
    596 
    597   // Alpha multipliers for each  alpha level.
    598   ALPHA(0x00), ALPHA(0x01), ALPHA(0x02), ALPHA(0x03),
    599   ALPHA(0x04), ALPHA(0x05), ALPHA(0x06), ALPHA(0x07),
    600   ALPHA(0x08), ALPHA(0x09), ALPHA(0x0A), ALPHA(0x0B),
    601   ALPHA(0x0C), ALPHA(0x0D), ALPHA(0x0E), ALPHA(0x0F),
    602   ALPHA(0x10), ALPHA(0x11), ALPHA(0x12), ALPHA(0x13),
    603   ALPHA(0x14), ALPHA(0x15), ALPHA(0x16), ALPHA(0x17),
    604   ALPHA(0x18), ALPHA(0x19), ALPHA(0x1A), ALPHA(0x1B),
    605   ALPHA(0x1C), ALPHA(0x1D), ALPHA(0x1E), ALPHA(0x1F),
    606   ALPHA(0x20), ALPHA(0x21), ALPHA(0x22), ALPHA(0x23),
    607   ALPHA(0x24), ALPHA(0x25), ALPHA(0x26), ALPHA(0x27),
    608   ALPHA(0x28), ALPHA(0x29), ALPHA(0x2A), ALPHA(0x2B),
    609   ALPHA(0x2C), ALPHA(0x2D), ALPHA(0x2E), ALPHA(0x2F),
    610   ALPHA(0x30), ALPHA(0x31), ALPHA(0x32), ALPHA(0x33),
    611   ALPHA(0x34), ALPHA(0x35), ALPHA(0x36), ALPHA(0x37),
    612   ALPHA(0x38), ALPHA(0x39), ALPHA(0x3A), ALPHA(0x3B),
    613   ALPHA(0x3C), ALPHA(0x3D), ALPHA(0x3E), ALPHA(0x3F),
    614   ALPHA(0x40), ALPHA(0x41), ALPHA(0x42), ALPHA(0x43),
    615   ALPHA(0x44), ALPHA(0x45), ALPHA(0x46), ALPHA(0x47),
    616   ALPHA(0x48), ALPHA(0x49), ALPHA(0x4A), ALPHA(0x4B),
    617   ALPHA(0x4C), ALPHA(0x4D), ALPHA(0x4E), ALPHA(0x4F),
    618   ALPHA(0x50), ALPHA(0x51), ALPHA(0x52), ALPHA(0x53),
    619   ALPHA(0x54), ALPHA(0x55), ALPHA(0x56), ALPHA(0x57),
    620   ALPHA(0x58), ALPHA(0x59), ALPHA(0x5A), ALPHA(0x5B),
    621   ALPHA(0x5C), ALPHA(0x5D), ALPHA(0x5E), ALPHA(0x5F),
    622   ALPHA(0x60), ALPHA(0x61), ALPHA(0x62), ALPHA(0x63),
    623   ALPHA(0x64), ALPHA(0x65), ALPHA(0x66), ALPHA(0x67),
    624   ALPHA(0x68), ALPHA(0x69), ALPHA(0x6A), ALPHA(0x6B),
    625   ALPHA(0x6C), ALPHA(0x6D), ALPHA(0x6E), ALPHA(0x6F),
    626   ALPHA(0x70), ALPHA(0x71), ALPHA(0x72), ALPHA(0x73),
    627   ALPHA(0x74), ALPHA(0x75), ALPHA(0x76), ALPHA(0x77),
    628   ALPHA(0x78), ALPHA(0x79), ALPHA(0x7A), ALPHA(0x7B),
    629   ALPHA(0x7C), ALPHA(0x7D), ALPHA(0x7E), ALPHA(0x7F),
    630   ALPHA(0x80), ALPHA(0x81), ALPHA(0x82), ALPHA(0x83),
    631   ALPHA(0x84), ALPHA(0x85), ALPHA(0x86), ALPHA(0x87),
    632   ALPHA(0x88), ALPHA(0x89), ALPHA(0x8A), ALPHA(0x8B),
    633   ALPHA(0x8C), ALPHA(0x8D), ALPHA(0x8E), ALPHA(0x8F),
    634   ALPHA(0x90), ALPHA(0x91), ALPHA(0x92), ALPHA(0x93),
    635   ALPHA(0x94), ALPHA(0x95), ALPHA(0x96), ALPHA(0x97),
    636   ALPHA(0x98), ALPHA(0x99), ALPHA(0x9A), ALPHA(0x9B),
    637   ALPHA(0x9C), ALPHA(0x9D), ALPHA(0x9E), ALPHA(0x9F),
    638   ALPHA(0xA0), ALPHA(0xA1), ALPHA(0xA2), ALPHA(0xA3),
    639   ALPHA(0xA4), ALPHA(0xA5), ALPHA(0xA6), ALPHA(0xA7),
    640   ALPHA(0xA8), ALPHA(0xA9), ALPHA(0xAA), ALPHA(0xAB),
    641   ALPHA(0xAC), ALPHA(0xAD), ALPHA(0xAE), ALPHA(0xAF),
    642   ALPHA(0xB0), ALPHA(0xB1), ALPHA(0xB2), ALPHA(0xB3),
    643   ALPHA(0xB4), ALPHA(0xB5), ALPHA(0xB6), ALPHA(0xB7),
    644   ALPHA(0xB8), ALPHA(0xB9), ALPHA(0xBA), ALPHA(0xBB),
    645   ALPHA(0xBC), ALPHA(0xBD), ALPHA(0xBE), ALPHA(0xBF),
    646   ALPHA(0xC0), ALPHA(0xC1), ALPHA(0xC2), ALPHA(0xC3),
    647   ALPHA(0xC4), ALPHA(0xC5), ALPHA(0xC6), ALPHA(0xC7),
    648   ALPHA(0xC8), ALPHA(0xC9), ALPHA(0xCA), ALPHA(0xCB),
    649   ALPHA(0xCC), ALPHA(0xCD), ALPHA(0xCE), ALPHA(0xCF),
    650   ALPHA(0xD0), ALPHA(0xD1), ALPHA(0xD2), ALPHA(0xD3),
    651   ALPHA(0xD4), ALPHA(0xD5), ALPHA(0xD6), ALPHA(0xD7),
    652   ALPHA(0xD8), ALPHA(0xD9), ALPHA(0xDA), ALPHA(0xDB),
    653   ALPHA(0xDC), ALPHA(0xDD), ALPHA(0xDE), ALPHA(0xDF),
    654   ALPHA(0xE0), ALPHA(0xE1), ALPHA(0xE2), ALPHA(0xE3),
    655   ALPHA(0xE4), ALPHA(0xE5), ALPHA(0xE6), ALPHA(0xE7),
    656   ALPHA(0xE8), ALPHA(0xE9), ALPHA(0xEA), ALPHA(0xEB),
    657   ALPHA(0xEC), ALPHA(0xED), ALPHA(0xEE), ALPHA(0xEF),
    658   ALPHA(0xF0), ALPHA(0xF1), ALPHA(0xF2), ALPHA(0xF3),
    659   ALPHA(0xF4), ALPHA(0xF5), ALPHA(0xF6), ALPHA(0xF7),
    660   ALPHA(0xF8), ALPHA(0xF9), ALPHA(0xFA), ALPHA(0xFB),
    661   ALPHA(0xFC), ALPHA(0xFD), ALPHA(0xFE), ALPHA(0xFF),
    662 };
    663 
    664 #undef RGBY
    665 #undef RGBU
    666 #undef RGBV
    667 #undef ALPHA
    668 
    669 }  // extern "C"
    670