M4VIFI_Clip.c revision 7c9d8018755adf1857571125ba1b3598c96ea506
1/* 2 * Copyright (C) 2004-2011 NXP Software 3 * Copyright (C) 2011 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17/** 18 ****************************************************************************** 19 * @file M4VIFI_Clip.c 20 * @brief Management of the RGB Clipping matrix inclusion and Division Table 21 * @note -# Clipping Matrix is used in order to properly manage the inclusion of 22 * the external RGB Clipping matrix used for color conversion. 23 * This file HAS TO BE compiled with all color conversion filters project 24 * -# Division table is used in RGB to HLS color conversion 25 * Important: This file must be compiled during the assembly library building 26 ****************************************************************************** 27*/ 28 29/* Prototypes of functions, and type definitions */ 30#include "M4VIFI_FiltersAPI.h" 31 32CNST M4VIFI_UInt8 M4VIFI_ClipTable[1256] 33= { 340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 960x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 970x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 980x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 990x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 1000x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 1010x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 1020x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 1030x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 1040x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 1050x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 1060x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 1070x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 1080x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 1090x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 1100x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 1110x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 1120x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 1130x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 1140x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 1150x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 1160x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 1170xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 1180xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 1190xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 1200xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 1210xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 1220xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 1230xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 1240xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 1250xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 1260xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 1270xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 1280xfc, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 1290xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1300xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1310xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1320xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1330xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1340xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1350xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1360xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1370xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1380xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1390xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1400xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1410xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1420xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1430xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1440xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1450xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1460xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1470xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1480xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1490xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1500xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1510xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1520xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1530xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1540xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1550xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1560xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1570xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1580xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1590xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1600xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1610xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1620xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1630xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1640xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1650xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1660xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1670xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1680xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1690xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1700xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1710xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1720xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1730xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1740xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1750xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1760xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1770xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1780xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1790xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1800xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1810xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1820xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1830xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1840xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1850xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1860xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1870xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1880xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1890xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1900xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 191}; 192 193/* Division table for ( 65535/x ); x = 0 to 512 */ 194CNST M4VIFI_UInt16 M4VIFI_DivTable[512] 195= { 1960, 65535, 32768, 21845, 16384, 13107, 10922, 9362, 1978192, 7281, 6553, 5957, 5461, 5041, 4681, 4369, 1984096, 3855, 3640, 3449, 3276, 3120, 2978, 2849, 1992730, 2621, 2520, 2427, 2340, 2259, 2184, 2114, 2002048, 1985, 1927, 1872, 1820, 1771, 1724, 1680, 2011638, 1598, 1560, 1524, 1489, 1456, 1424, 1394, 2021365, 1337, 1310, 1285, 1260, 1236, 1213, 1191, 2031170, 1149, 1129, 1110, 1092, 1074, 1057, 1040, 2041024, 1008, 992, 978, 963, 949, 936, 923, 205910, 897, 885, 873, 862, 851, 840, 829, 206819, 809, 799, 789, 780, 771, 762, 753, 207744, 736, 728, 720, 712, 704, 697, 689, 208682, 675, 668, 661, 655, 648, 642, 636, 209630, 624, 618, 612, 606, 601, 595, 590, 210585, 579, 574, 569, 564, 560, 555, 550, 211546, 541, 537, 532, 528, 524, 520, 516, 212512, 508, 504, 500, 496, 492, 489, 485, 213481, 478, 474, 471, 468, 464, 461, 458, 214455, 451, 448, 445, 442, 439, 436, 434, 215431, 428, 425, 422, 420, 417, 414, 412, 216409, 407, 404, 402, 399, 397, 394, 392, 217390, 387, 385, 383, 381, 378, 376, 374, 218372, 370, 368, 366, 364, 362, 360, 358, 219356, 354, 352, 350, 348, 346, 344, 343, 220341, 339, 337, 336, 334, 332, 330, 329, 221327, 326, 324, 322, 321, 319, 318, 316, 222315, 313, 312, 310, 309, 307, 306, 304, 223303, 302, 300, 299, 297, 296, 295, 293, 224292, 291, 289, 288, 287, 286, 284, 283, 225282, 281, 280, 278, 277, 276, 275, 274, 226273, 271, 270, 269, 268, 267, 266, 265, 227264, 263, 262, 261, 260, 259, 258, 257, 228256, 255, 254, 253, 252, 251, 250, 249, 229248, 247, 246, 245, 244, 243, 242, 241, 230240, 240, 239, 238, 237, 236, 235, 234, 231234, 233, 232, 231, 230, 229, 229, 228, 232227, 226, 225, 225, 224, 223, 222, 222, 233221, 220, 219, 219, 218, 217, 217, 216, 234215, 214, 214, 213, 212, 212, 211, 210, 235210, 209, 208, 208, 207, 206, 206, 205, 236204, 204, 203, 202, 202, 201, 201, 200, 237199, 199, 198, 197, 197, 196, 196, 195, 238195, 194, 193, 193, 192, 192, 191, 191, 239190, 189, 189, 188, 188, 187, 187, 186, 240186, 185, 185, 184, 184, 183, 183, 182, 241182, 181, 181, 180, 180, 179, 179, 178, 242178, 177, 177, 176, 176, 175, 175, 174, 243174, 173, 173, 172, 172, 172, 171, 171, 244170, 170, 169, 169, 168, 168, 168, 167, 245167, 166, 166, 165, 165, 165, 164, 164, 246163, 163, 163, 162, 162, 161, 161, 161, 247160, 160, 159, 159, 159, 158, 158, 157, 248157, 157, 156, 156, 156, 155, 155, 154, 249154, 154, 153, 153, 153, 152, 152, 152, 250151, 151, 151, 150, 150, 149, 149, 149, 251148, 148, 148, 147, 147, 147, 146, 146, 252146, 145, 145, 145, 144, 144, 144, 144, 253143, 143, 143, 142, 142, 142, 141, 141, 254141, 140, 140, 140, 140, 139, 139, 139, 255138, 138, 138, 137, 137, 137, 137, 136, 256136, 136, 135, 135, 135, 135, 134, 134, 257134, 134, 133, 133, 133, 132, 132, 132, 258132, 131, 131, 131, 131, 130, 130, 130, 259130, 129, 129, 129, 129, 128, 128, 128 260}; 261 262CNST M4VIFI_Int32 const_storage1[8] 263= { 2640x00002568, 0x00003343,0x00000649,0x00000d0f, 0x0000D86C, 0x0000D83B, 0x00010000, 0x00010000 265}; 266 267CNST M4VIFI_Int32 const_storage[8] 268= { 2690x00002568, 0x00003343, 0x1BF800, 0x00000649, 0x00000d0f, 0x110180, 0x40cf, 0x22BE00 270}; 271 272 273CNST M4VIFI_UInt16 *M4VIFI_DivTable_zero 274 = &M4VIFI_DivTable[0]; 275 276CNST M4VIFI_UInt8 *M4VIFI_ClipTable_zero 277 = &M4VIFI_ClipTable[500]; 278 279 280/* End of file M4VIFI_Clip.c */ 281 282