Home | History | Annotate | Download | only in src
      1 /*
      2  * Copyright (C) 2011 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 /**
     17  ******************************************************************************
     18  * @file     M4VIFI_Clip.c
     19  * @brief    Management of the RGB Clipping matrix inclusion and Division Table
     20  * @note     -# Clipping Matrix is used in order to properly manage the inclusion of
     21  *           the external RGB Clipping matrix used for color conversion.
     22  *           This file HAS TO BE compiled with all color conversion filters project
     23  *           -# Division table is used in RGB to HLS color conversion
     24  *           Important: This file must be compiled during the assembly library building
     25  ******************************************************************************
     26 */
     27 
     28 /* Prototypes of functions, and type definitions */
     29 #include    "M4VIFI_FiltersAPI.h"
     30 
     31 CNST M4VIFI_UInt8   M4VIFI_ClipTable[1256]
     32 = {
     33 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     34 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     35 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     36 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     37 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     38 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     39 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     40 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     41 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     42 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     43 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     44 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     45 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     46 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     47 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     48 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     49 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     50 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     51 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     52 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     53 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     54 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     55 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     56 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     57 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     58 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     59 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     60 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     61 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     62 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     63 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     64 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     65 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     66 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     67 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     68 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     69 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     70 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     71 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     72 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     73 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     74 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     75 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     76 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     77 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     78 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     79 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     80 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     81 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     82 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     83 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     84 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     85 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     86 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     87 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     88 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     89 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     90 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     91 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     92 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     93 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     94 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     95 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03,
     96 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b,
     97 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13,
     98 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b,
     99 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23,
    100 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b,
    101 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33,
    102 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
    103 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43,
    104 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b,
    105 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53,
    106 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b,
    107 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63,
    108 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b,
    109 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73,
    110 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b,
    111 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83,
    112 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b,
    113 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93,
    114 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b,
    115 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3,
    116 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab,
    117 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3,
    118 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb,
    119 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3,
    120 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb,
    121 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3,
    122 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb,
    123 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3,
    124 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb,
    125 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3,
    126 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb,
    127 0xfc, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
    128 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    129 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    130 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    131 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    132 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    133 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    134 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    135 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    136 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    137 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    138 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    139 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    140 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    141 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    142 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    143 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    144 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    145 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    146 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    147 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    148 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    149 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    150 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    151 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    152 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    153 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    154 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    155 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    156 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    157 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    158 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    159 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    160 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    161 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    162 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    163 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    164 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    165 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    166 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    167 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    168 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    169 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    170 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    171 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    172 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    173 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    174 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    175 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    176 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    177 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    178 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    179 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    180 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    181 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    182 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    183 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    184 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    185 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    186 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    187 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    188 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    189 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
    190 };
    191 
    192 /* Division table for ( 65535/x ); x = 0 to 512 */
    193 CNST M4VIFI_UInt16  M4VIFI_DivTable[512]
    194 = {
    195 0, 65535, 32768, 21845, 16384, 13107, 10922, 9362,
    196 8192, 7281, 6553, 5957, 5461, 5041, 4681, 4369,
    197 4096, 3855, 3640, 3449, 3276, 3120, 2978, 2849,
    198 2730, 2621, 2520, 2427, 2340, 2259, 2184, 2114,
    199 2048, 1985, 1927, 1872, 1820, 1771, 1724, 1680,
    200 1638, 1598, 1560, 1524, 1489, 1456, 1424, 1394,
    201 1365, 1337, 1310, 1285, 1260, 1236, 1213, 1191,
    202 1170, 1149, 1129, 1110, 1092, 1074, 1057, 1040,
    203 1024, 1008, 992, 978, 963, 949, 936, 923,
    204 910, 897, 885, 873, 862, 851, 840, 829,
    205 819, 809, 799, 789, 780, 771, 762, 753,
    206 744, 736, 728, 720, 712, 704, 697, 689,
    207 682, 675, 668, 661, 655, 648, 642, 636,
    208 630, 624, 618, 612, 606, 601, 595, 590,
    209 585, 579, 574, 569, 564, 560, 555, 550,
    210 546, 541, 537, 532, 528, 524, 520, 516,
    211 512, 508, 504, 500, 496, 492, 489, 485,
    212 481, 478, 474, 471, 468, 464, 461, 458,
    213 455, 451, 448, 445, 442, 439, 436, 434,
    214 431, 428, 425, 422, 420, 417, 414, 412,
    215 409, 407, 404, 402, 399, 397, 394, 392,
    216 390, 387, 385, 383, 381, 378, 376, 374,
    217 372, 370, 368, 366, 364, 362, 360, 358,
    218 356, 354, 352, 350, 348, 346, 344, 343,
    219 341, 339, 337, 336, 334, 332, 330, 329,
    220 327, 326, 324, 322, 321, 319, 318, 316,
    221 315, 313, 312, 310, 309, 307, 306, 304,
    222 303, 302, 300, 299, 297, 296, 295, 293,
    223 292, 291, 289, 288, 287, 286, 284, 283,
    224 282, 281, 280, 278, 277, 276, 275, 274,
    225 273, 271, 270, 269, 268, 267, 266, 265,
    226 264, 263, 262, 261, 260, 259, 258, 257,
    227 256, 255, 254, 253, 252, 251, 250, 249,
    228 248, 247, 246, 245, 244, 243, 242, 241,
    229 240, 240, 239, 238, 237, 236, 235, 234,
    230 234, 233, 232, 231, 230, 229, 229, 228,
    231 227, 226, 225, 225, 224, 223, 222, 222,
    232 221, 220, 219, 219, 218, 217, 217, 216,
    233 215, 214, 214, 213, 212, 212, 211, 210,
    234 210, 209, 208, 208, 207, 206, 206, 205,
    235 204, 204, 203, 202, 202, 201, 201, 200,
    236 199, 199, 198, 197, 197, 196, 196, 195,
    237 195, 194, 193, 193, 192, 192, 191, 191,
    238 190, 189, 189, 188, 188, 187, 187, 186,
    239 186, 185, 185, 184, 184, 183, 183, 182,
    240 182, 181, 181, 180, 180, 179, 179, 178,
    241 178, 177, 177, 176, 176, 175, 175, 174,
    242 174, 173, 173, 172, 172, 172, 171, 171,
    243 170, 170, 169, 169, 168, 168, 168, 167,
    244 167, 166, 166, 165, 165, 165, 164, 164,
    245 163, 163, 163, 162, 162, 161, 161, 161,
    246 160, 160, 159, 159, 159, 158, 158, 157,
    247 157, 157, 156, 156, 156, 155, 155, 154,
    248 154, 154, 153, 153, 153, 152, 152, 152,
    249 151, 151, 151, 150, 150, 149, 149, 149,
    250 148, 148, 148, 147, 147, 147, 146, 146,
    251 146, 145, 145, 145, 144, 144, 144, 144,
    252 143, 143, 143, 142, 142, 142, 141, 141,
    253 141, 140, 140, 140, 140, 139, 139, 139,
    254 138, 138, 138, 137, 137, 137, 137, 136,
    255 136, 136, 135, 135, 135, 135, 134, 134,
    256 134, 134, 133, 133, 133, 132, 132, 132,
    257 132, 131, 131, 131, 131, 130, 130, 130,
    258 130, 129, 129, 129, 129, 128, 128, 128
    259 };
    260 
    261 CNST M4VIFI_Int32  const_storage1[8]
    262 = {
    263 0x00002568, 0x00003343,0x00000649,0x00000d0f, 0x0000D86C, 0x0000D83B, 0x00010000, 0x00010000
    264 };
    265 
    266 CNST M4VIFI_Int32  const_storage[8]
    267 = {
    268 0x00002568, 0x00003343, 0x1BF800, 0x00000649, 0x00000d0f, 0x110180, 0x40cf, 0x22BE00
    269 };
    270 
    271 
    272 CNST M4VIFI_UInt16  *M4VIFI_DivTable_zero
    273  = &M4VIFI_DivTable[0];
    274 
    275 CNST M4VIFI_UInt8   *M4VIFI_ClipTable_zero
    276  = &M4VIFI_ClipTable[500];
    277 
    278 
    279 /* End of file M4VIFI_Clip.c */
    280 
    281