ddp_matrix_para.h 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. /* Copyright Statement:
  2. *
  3. * This software/firmware and related documentation ("MediaTek Software") are
  4. * protected under relevant copyright laws. The information contained herein
  5. * is confidential and proprietary to MediaTek Inc. and/or its licensors.
  6. * Without the prior written permission of MediaTek inc. and/or its licensors,
  7. * any reproduction, modification, use or disclosure of MediaTek Software,
  8. * and information contained herein, in whole or in part, shall be strictly prohibited.
  9. */
  10. /* MediaTek Inc. (C) 2015. All rights reserved.
  11. *
  12. * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  13. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  14. * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
  15. * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  16. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  17. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  18. * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  19. * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  20. * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
  21. * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
  22. * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
  23. * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
  24. * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  25. * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
  26. * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  27. * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  28. * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
  29. * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  30. */
  31. #ifndef _DDP_MATRIX_PARA_H_
  32. #define _DDP_MATRIX_PARA_H_
  33. #define TABLE_NO 10
  34. #define YUV2RGB_601_16_16 0
  35. #define YUV2RGB_601_16_0 1
  36. #define YUV2RGB_601_0_0 2
  37. #define YUV2RGB_709_16_16 3
  38. #define YUV2RGB_709_16_0 4
  39. #define YUV2RGB_709_0_0 5
  40. #define RGB2YUV_601 6
  41. #define RGB2YUV_601_XVYCC 7
  42. #define RGB2YUV_709 8
  43. #define RGB2YUV_709_XVYCC 9
  44. static const short int coef_rdma_601_r2y[5][3] = {
  45. {263, 516, 100},
  46. {-152, -298, 450},
  47. {450, -377, -73},
  48. {0, 0, 0},
  49. {0, 128, 128}
  50. };
  51. static const short int coef_rdma_709_r2y[5][3] = {
  52. {187, 629, 63},
  53. {-103, -347, 450},
  54. {450, -409, -41},
  55. {0, 0, 0},
  56. {16, 128, 128}
  57. };
  58. static const short int coef_rdma_601_y2r[5][3] = {
  59. {1193, 0, 1633},
  60. {1193, -400, -832},
  61. {1193, 2065, 0},
  62. {-16, -128, -128},
  63. {0, 0, 0}
  64. };
  65. static const short int coef_rdma_709_y2r[5][3] = {
  66. {1193, 0, 1934},
  67. {1193, -217, -545},
  68. {1193, 2163, -1},
  69. {-16, -128, -128},
  70. {0, 0, 0}
  71. };
  72. static const short int coef[10][5][3] =
  73. //-----------------------------------------
  74. // YUV to RGB SD
  75. //-----------------------------------------
  76. //yuv2rgb_601_16_16, y=16~235, uv=16~240, rgb=16~235
  77. { { { 0x0400, 0x0000, 0x057c }, // 1, 0 , 1.371 13bit: sign+2.10
  78. { 0x0400, 0x1ea8, 0x1d35 }, // 1, -0.336, -0.698 13bit: sign+2.10
  79. { 0x0400, 0x06ee, 0x0000 }, // 1, 1.732, 0 13bit: sign+2.10
  80. { 0, 0x180 , 0x180 }, // 0, -128 , -128 9bit: sign+8.0
  81. { 0, 0, 0 }
  82. },
  83. //yuv2rgb_601_16_0, y=16~235, uv=16~240, rgb=0~255
  84. { { 0x04a7, 0x0000, 0x0662 }, // 1.164, 0 , 1.596 13bit: sign+2.10
  85. { 0x04a7, 0x1e70, 0x1cc0 }, // 1.164, -0.391 , -0.813 13bit: sign+2.10
  86. { 0x04a7, 0x0812, 0x0000 }, // 1.164, 2.018 , 0 13bit: sign+2.10
  87. { 0x1f0 , 0x180 , 0x180 }, // -16, -128 , -128 9bit: sign+8.0
  88. { 0, 0, 0 }
  89. },
  90. //yuv2rgb_601_0_0, yuv=0~255, rgb=0~255
  91. { { 0x0400, 0x0000, 0x059b }, // 1, 0 , 1.402 13bit: sign+2.10
  92. { 0x0400, 0x1ea0, 0x1d25 }, // 1, -0.3341, -0.7141 13bit: sign+2.10
  93. { 0x0400, 0x0716, 0x0000 }, // 1, 1.772 , 0 13bit: sign+2.10
  94. { 0, 0x180 , 0x180 }, // 0, -128 , -128 9bit: sign+8.0
  95. { 0, 0, 0 }
  96. },
  97. //-----------------------------------------
  98. // YUV to RGB HD
  99. //-----------------------------------------
  100. //yuv2rgb_709_16_16, y=16~235, uv=16~240, rgb=16~235
  101. { { 0x0400, 0x0000, 0x0628 }, // 1, 0 , 1.54 13bit: sign+2.10
  102. { 0x0400, 0x1f45, 0x1e2a }, // 1, -0.183, -0.459 13bit: sign+2.10
  103. { 0x0400, 0x0743, 0x0000 }, // 1, 1.816, 0 13bit: sign+2.10
  104. { 0, 0x180 , 0x180 }, // 0, -128 , -128 9bit: sign+8.0
  105. { 0, 0, 0 }
  106. },
  107. //yuv2rgb_709_16_0, y=16~235, uv=16~240, rgb=0~255
  108. { { 0x04a7, 0x0000, 0x072c }, // 1.164, 0 , 1.793 13bit: sign+2.10
  109. { 0x04a7, 0x1f26, 0x1dde }, // 1.164, -0.213 , -0.534 13bit: sign+2.10
  110. { 0x04a7, 0x0875, 0x0000 }, // 1.164, 2.115 , 0 13bit: sign+2.10
  111. { 0x1f0 , 0x180 , 0x180 }, // -16, -128 , -128 9bit: sign+8.0
  112. { 0, 0, 0 }
  113. },
  114. //yuv2rgb_709_0_0, yuv=0~255, rgb=0~255
  115. { { 0x0400, 0x0000, 0x064d }, // 1, 0 , 1.5748 13bit: sign+2.10
  116. { 0x0400, 0x1f40, 0x1e21 }, // 1, -0.1873, -0.4681 13bit: sign+2.10
  117. { 0x0400, 0x076c, 0x0000 }, // 1, 1.8556, 0 13bit: sign+2.10
  118. { 0, 0x180 , 0x180 }, // 0, -128 , -128 9bit: sign+8.0
  119. { 0, 0, 0 }
  120. },
  121. //-----------------------------------------
  122. // RGB to YUV SD
  123. //-----------------------------------------
  124. //rgb2yuv_601, rgb=0~255, y=16~235, uv=16~240
  125. { { 0x0107, 0x0204, 0x0064 }, // 0.257 , 0.504 , 0.098 13bit: sign+2.10
  126. { 0x1f68, 0x1ed6, 0x01c2 }, //-0.148 , -0.291 , 0.439 13bit: sign+2.10
  127. { 0x01c2, 0x1e87, 0x1fb7 }, // 0.439 , -0.368 , -0.071 13bit: sign+2.10
  128. { 0, 0, 0 },
  129. { 0x010 , 0x080 , 0x080 }
  130. }, // 16 , 128 , 128 9bit: sign+8.0
  131. //rgb2yuv_601_xvycc, rgb=0~255, yuv=0~255
  132. { { 0x0132, 0x0259, 0x0075 }, // 0.299 , 0.587 , 0.114 13bit: sign+2.10
  133. { 0x1f53, 0x1ead, 0x0200 }, //-0.1687, -0.3313, 0.5 13bit: sign+2.10
  134. { 0x0200, 0x1e53, 0x1fad }, // 0.5 , -0.4187, -0.0813 13bit: sign+2.10
  135. { 0, 0, 0 },
  136. { 0x010 , 0x080 , 0x080 }
  137. }, // 16 , 128 , 128 9bit: sign+8.0
  138. //-----------------------------------------
  139. // RGB to YUV SD
  140. //-----------------------------------------
  141. //rgb2yuv_709, rgb=0~255, y=16~235, uv=16~240
  142. { { 0x00bb, 0x0275, 0x003f }, // 0.183 , 0.614 , 0.062 13bit: sign+2.10
  143. { 0x1f98, 0x1ea6, 0x01c2 }, //-0.101 , -0.338 , 0.439 13bit: sign+2.10
  144. { 0x01c2, 0x1e67, 0x1fd7 }, // 0.439 , -0.399 , -0.04 13bit: sign+2.10
  145. { 0, 0, 0 },
  146. { 0x010 , 0x080 , 0x080 }
  147. }, // 16 , 128 , 128 9bit: sign+8.0
  148. //rgb2yuv_709_xvycc, rgb=0~255, yuv=0~255
  149. { { 0x00da, 0x02dc, 0x004a }, // 0.2126, 0.7152, 0.0722 13bit: sign+2.10
  150. { 0x1f8b, 0x1e75, 0x0200 }, //-0.1146, -0.3854, 0.5 13bit: sign+2.10
  151. { 0x0200, 0x1e2f, 0x1fd1 }, // 0.5 , -0.4542, -0.0458 13bit: sign+2.10
  152. { 0, 0, 0 },
  153. { 0x010 , 0x080 , 0x080 }
  154. } // 16 , 128 , 128 9bit: sign+8.0
  155. };
  156. #endif