| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- /* Copyright Statement:
- *
- * This software/firmware and related documentation ("MediaTek Software") are
- * protected under relevant copyright laws. The information contained herein
- * is confidential and proprietary to MediaTek Inc. and/or its licensors.
- * Without the prior written permission of MediaTek inc. and/or its licensors,
- * any reproduction, modification, use or disclosure of MediaTek Software,
- * and information contained herein, in whole or in part, shall be strictly prohibited.
- */
- /* MediaTek Inc. (C) 2015. All rights reserved.
- *
- * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
- * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
- * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
- * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
- * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
- * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
- * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
- * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
- * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
- * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
- * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
- * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
- * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
- * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
- * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
- * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
- */
- #ifndef _DDP_MATRIX_PARA_H_
- #define _DDP_MATRIX_PARA_H_
- #define TABLE_NO 10
- #define YUV2RGB_601_16_16 0
- #define YUV2RGB_601_16_0 1
- #define YUV2RGB_601_0_0 2
- #define YUV2RGB_709_16_16 3
- #define YUV2RGB_709_16_0 4
- #define YUV2RGB_709_0_0 5
- #define RGB2YUV_601 6
- #define RGB2YUV_601_XVYCC 7
- #define RGB2YUV_709 8
- #define RGB2YUV_709_XVYCC 9
- static const short int coef_rdma_601_r2y[5][3] = {
- {263, 516, 100},
- {-152, -298, 450},
- {450, -377, -73},
- {0, 0, 0},
- {0, 128, 128}
- };
- static const short int coef_rdma_709_r2y[5][3] = {
- {187, 629, 63},
- {-103, -347, 450},
- {450, -409, -41},
- {0, 0, 0},
- {16, 128, 128}
- };
- static const short int coef_rdma_601_y2r[5][3] = {
- {1193, 0, 1633},
- {1193, -400, -832},
- {1193, 2065, 0},
- {-16, -128, -128},
- {0, 0, 0}
- };
- static const short int coef_rdma_709_y2r[5][3] = {
- {1193, 0, 1934},
- {1193, -217, -545},
- {1193, 2163, -1},
- {-16, -128, -128},
- {0, 0, 0}
- };
- static const short int coef[10][5][3] =
- //-----------------------------------------
- // YUV to RGB SD
- //-----------------------------------------
- //yuv2rgb_601_16_16, y=16~235, uv=16~240, rgb=16~235
- { { { 0x0400, 0x0000, 0x057c }, // 1, 0 , 1.371 13bit: sign+2.10
- { 0x0400, 0x1ea8, 0x1d35 }, // 1, -0.336, -0.698 13bit: sign+2.10
- { 0x0400, 0x06ee, 0x0000 }, // 1, 1.732, 0 13bit: sign+2.10
- { 0, 0x180 , 0x180 }, // 0, -128 , -128 9bit: sign+8.0
- { 0, 0, 0 }
- },
- //yuv2rgb_601_16_0, y=16~235, uv=16~240, rgb=0~255
- { { 0x04a7, 0x0000, 0x0662 }, // 1.164, 0 , 1.596 13bit: sign+2.10
- { 0x04a7, 0x1e70, 0x1cc0 }, // 1.164, -0.391 , -0.813 13bit: sign+2.10
- { 0x04a7, 0x0812, 0x0000 }, // 1.164, 2.018 , 0 13bit: sign+2.10
- { 0x1f0 , 0x180 , 0x180 }, // -16, -128 , -128 9bit: sign+8.0
- { 0, 0, 0 }
- },
- //yuv2rgb_601_0_0, yuv=0~255, rgb=0~255
- { { 0x0400, 0x0000, 0x059b }, // 1, 0 , 1.402 13bit: sign+2.10
- { 0x0400, 0x1ea0, 0x1d25 }, // 1, -0.3341, -0.7141 13bit: sign+2.10
- { 0x0400, 0x0716, 0x0000 }, // 1, 1.772 , 0 13bit: sign+2.10
- { 0, 0x180 , 0x180 }, // 0, -128 , -128 9bit: sign+8.0
- { 0, 0, 0 }
- },
- //-----------------------------------------
- // YUV to RGB HD
- //-----------------------------------------
- //yuv2rgb_709_16_16, y=16~235, uv=16~240, rgb=16~235
- { { 0x0400, 0x0000, 0x0628 }, // 1, 0 , 1.54 13bit: sign+2.10
- { 0x0400, 0x1f45, 0x1e2a }, // 1, -0.183, -0.459 13bit: sign+2.10
- { 0x0400, 0x0743, 0x0000 }, // 1, 1.816, 0 13bit: sign+2.10
- { 0, 0x180 , 0x180 }, // 0, -128 , -128 9bit: sign+8.0
- { 0, 0, 0 }
- },
- //yuv2rgb_709_16_0, y=16~235, uv=16~240, rgb=0~255
- { { 0x04a7, 0x0000, 0x072c }, // 1.164, 0 , 1.793 13bit: sign+2.10
- { 0x04a7, 0x1f26, 0x1dde }, // 1.164, -0.213 , -0.534 13bit: sign+2.10
- { 0x04a7, 0x0875, 0x0000 }, // 1.164, 2.115 , 0 13bit: sign+2.10
- { 0x1f0 , 0x180 , 0x180 }, // -16, -128 , -128 9bit: sign+8.0
- { 0, 0, 0 }
- },
- //yuv2rgb_709_0_0, yuv=0~255, rgb=0~255
- { { 0x0400, 0x0000, 0x064d }, // 1, 0 , 1.5748 13bit: sign+2.10
- { 0x0400, 0x1f40, 0x1e21 }, // 1, -0.1873, -0.4681 13bit: sign+2.10
- { 0x0400, 0x076c, 0x0000 }, // 1, 1.8556, 0 13bit: sign+2.10
- { 0, 0x180 , 0x180 }, // 0, -128 , -128 9bit: sign+8.0
- { 0, 0, 0 }
- },
- //-----------------------------------------
- // RGB to YUV SD
- //-----------------------------------------
- //rgb2yuv_601, rgb=0~255, y=16~235, uv=16~240
- { { 0x0107, 0x0204, 0x0064 }, // 0.257 , 0.504 , 0.098 13bit: sign+2.10
- { 0x1f68, 0x1ed6, 0x01c2 }, //-0.148 , -0.291 , 0.439 13bit: sign+2.10
- { 0x01c2, 0x1e87, 0x1fb7 }, // 0.439 , -0.368 , -0.071 13bit: sign+2.10
- { 0, 0, 0 },
- { 0x010 , 0x080 , 0x080 }
- }, // 16 , 128 , 128 9bit: sign+8.0
- //rgb2yuv_601_xvycc, rgb=0~255, yuv=0~255
- { { 0x0132, 0x0259, 0x0075 }, // 0.299 , 0.587 , 0.114 13bit: sign+2.10
- { 0x1f53, 0x1ead, 0x0200 }, //-0.1687, -0.3313, 0.5 13bit: sign+2.10
- { 0x0200, 0x1e53, 0x1fad }, // 0.5 , -0.4187, -0.0813 13bit: sign+2.10
- { 0, 0, 0 },
- { 0x010 , 0x080 , 0x080 }
- }, // 16 , 128 , 128 9bit: sign+8.0
- //-----------------------------------------
- // RGB to YUV SD
- //-----------------------------------------
- //rgb2yuv_709, rgb=0~255, y=16~235, uv=16~240
- { { 0x00bb, 0x0275, 0x003f }, // 0.183 , 0.614 , 0.062 13bit: sign+2.10
- { 0x1f98, 0x1ea6, 0x01c2 }, //-0.101 , -0.338 , 0.439 13bit: sign+2.10
- { 0x01c2, 0x1e67, 0x1fd7 }, // 0.439 , -0.399 , -0.04 13bit: sign+2.10
- { 0, 0, 0 },
- { 0x010 , 0x080 , 0x080 }
- }, // 16 , 128 , 128 9bit: sign+8.0
- //rgb2yuv_709_xvycc, rgb=0~255, yuv=0~255
- { { 0x00da, 0x02dc, 0x004a }, // 0.2126, 0.7152, 0.0722 13bit: sign+2.10
- { 0x1f8b, 0x1e75, 0x0200 }, //-0.1146, -0.3854, 0.5 13bit: sign+2.10
- { 0x0200, 0x1e2f, 0x1fd1 }, // 0.5 , -0.4542, -0.0458 13bit: sign+2.10
- { 0, 0, 0 },
- { 0x010 , 0x080 , 0x080 }
- } // 16 , 128 , 128 9bit: sign+8.0
- };
- #endif
|