ddp_matrix_para.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #ifndef _DDP_MATRIX_PARA_H_
  2. #define _DDP_MATRIX_PARA_H_
  3. #define TABLE_NO 10
  4. #define YUV2RGB_601_16_16 0
  5. #define YUV2RGB_601_16_0 1
  6. #define YUV2RGB_601_0_0 2
  7. #define YUV2RGB_709_16_16 3
  8. #define YUV2RGB_709_16_0 4
  9. #define YUV2RGB_709_0_0 5
  10. #define RGB2YUV_601 6
  11. #define RGB2YUV_601_XVYCC 7
  12. #define RGB2YUV_709 8
  13. #define RGB2YUV_709_XVYCC 9
  14. static const short int coef_rdma_601_r2y[5][3] = {
  15. {263, 516, 100},
  16. {-152, -298, 450},
  17. {450, -377, -73},
  18. {0, 0, 0},
  19. {0, 128, 128}
  20. };
  21. static const short int coef_rdma_709_r2y[5][3] = {
  22. {187, 629, 63},
  23. {-103, -347, 450},
  24. {450, -409, -41},
  25. {0, 0, 0},
  26. {16, 128, 128}
  27. };
  28. static const short int coef_rdma_601_y2r[5][3] = {
  29. {1193, 0, 1633},
  30. {1193, -400, -832},
  31. {1193, 2065, 0},
  32. {-16, -128, -128},
  33. {0, 0, 0}
  34. };
  35. static const short int coef_rdma_709_y2r[5][3] = {
  36. {1193, 0, 1934},
  37. {1193, -217, -545},
  38. {1193, 2163, -1},
  39. {-16, -128, -128},
  40. {0, 0, 0}
  41. };
  42. static const short int coef[10][5][3] = {
  43. /* ----------------------------------------- */
  44. /* YUV to RGB SD */
  45. /* ----------------------------------------- */
  46. /* yuv2rgb_601_16_16, y=16~235, uv=16~240, rgb=16~235 */
  47. {{0x0400, 0x0000, 0x057c}, /* 1, 0 , 1.371 13bit: sign+2.10 */
  48. {0x0400, 0x1ea8, 0x1d35}, /* 1, -0.336, -0.698 13bit: sign+2.10 */
  49. {0x0400, 0x06ee, 0x0000}, /* 1, 1.732, 0 13bit: sign+2.10 */
  50. {0, 0x180, 0x180}, /* 0, -128 , -128 9bit: sign+8.0 */
  51. {0, 0, 0} },
  52. /* yuv2rgb_601_16_0, y=16~235, uv=16~240, rgb=0~255 */
  53. {{0x04a7, 0x0000, 0x0662}, /* 1.164, 0 , 1.596 13bit: sign+2.10 */
  54. {0x04a7, 0x1e70, 0x1cc0}, /* 1.164, -0.391 , -0.813 13bit: sign+2.10 */
  55. {0x04a7, 0x0812, 0x0000}, /* 1.164, 2.018 , 0 13bit: sign+2.10 */
  56. {0x1f0, 0x180, 0x180}, /* -16, -128 , -128 9bit: sign+8.0 */
  57. {0, 0, 0} },
  58. /* yuv2rgb_601_0_0, yuv=0~255, rgb=0~255 */
  59. {{0x0400, 0x0000, 0x059b}, /* 1, 0 , 1.402 13bit: sign+2.10 */
  60. {0x0400, 0x1ea0, 0x1d25}, /* 1, -0.3341, -0.7141 13bit: sign+2.10 */
  61. {0x0400, 0x0716, 0x0000}, /* 1, 1.772 , 0 13bit: sign+2.10 */
  62. {0, 0x180, 0x180}, /* 0, -128 , -128 9bit: sign+8.0 */
  63. {0, 0, 0} },
  64. /* ----------------------------------------- */
  65. /* YUV to RGB HD */
  66. /* ----------------------------------------- */
  67. /* yuv2rgb_709_16_16, y=16~235, uv=16~240, rgb=16~235 */
  68. {{0x0400, 0x0000, 0x0628}, /* 1, 0 , 1.54 13bit: sign+2.10 */
  69. {0x0400, 0x1f45, 0x1e2a}, /* 1, -0.183, -0.459 13bit: sign+2.10 */
  70. {0x0400, 0x0743, 0x0000}, /* 1, 1.816, 0 13bit: sign+2.10 */
  71. {0, 0x180, 0x180}, /* 0, -128 , -128 9bit: sign+8.0 */
  72. {0, 0, 0} },
  73. /* yuv2rgb_709_16_0, y=16~235, uv=16~240, rgb=0~255 */
  74. {{0x04a7, 0x0000, 0x072c}, /* 1.164, 0 , 1.793 13bit: sign+2.10 */
  75. {0x04a7, 0x1f26, 0x1dde}, /* 1.164, -0.213 , -0.534 13bit: sign+2.10 */
  76. {0x04a7, 0x0875, 0x0000}, /* 1.164, 2.115 , 0 13bit: sign+2.10 */
  77. {0x1f0, 0x180, 0x180}, /* -16, -128 , -128 9bit: sign+8.0 */
  78. {0, 0, 0} },
  79. /* yuv2rgb_709_0_0, yuv=0~255, rgb=0~255 */
  80. {{0x0400, 0x0000, 0x064d}, /* 1, 0 , 1.5748 13bit: sign+2.10 */
  81. {0x0400, 0x1f40, 0x1e21}, /* 1, -0.1873, -0.4681 13bit: sign+2.10 */
  82. {0x0400, 0x076c, 0x0000}, /* 1, 1.8556, 0 13bit: sign+2.10 */
  83. {0, 0x180, 0x180}, /* 0, -128 , -128 9bit: sign+8.0 */
  84. {0, 0, 0} },
  85. /* ----------------------------------------- */
  86. /* RGB to YUV SD */
  87. /* ----------------------------------------- */
  88. /* rgb2yuv_601, rgb=0~255, y=16~235, uv=16~240 */
  89. {{0x0107, 0x0204, 0x0064}, /* 0.257 , 0.504 , 0.098 13bit: sign+2.10 */
  90. {0x1f68, 0x1ed6, 0x01c2}, /* -0.148 , -0.291 , 0.439 13bit: sign+2.10 */
  91. {0x01c2, 0x1e87, 0x1fb7}, /* 0.439 , -0.368 , -0.071 13bit: sign+2.10 */
  92. {0, 0, 0},
  93. {0x010, 0x080, 0x080} }, /* 16 , 128 , 128 9bit: sign+8.0 */
  94. /* rgb2yuv_601_xvycc, rgb=0~255, yuv=0~255 */
  95. {{0x0132, 0x0259, 0x0075}, /* 0.299 , 0.587 , 0.114 13bit: sign+2.10 */
  96. {0x1f53, 0x1ead, 0x0200}, /* -0.1687, -0.3313, 0.5 13bit: sign+2.10 */
  97. {0x0200, 0x1e53, 0x1fad}, /* 0.5 , -0.4187, -0.0813 13bit: sign+2.10 */
  98. {0, 0, 0},
  99. {0x010, 0x080, 0x080} }, /* 16 , 128 , 128 9bit: sign+8.0 */
  100. /* ----------------------------------------- */
  101. /* RGB to YUV SD */
  102. /* ----------------------------------------- */
  103. /* rgb2yuv_709, rgb=0~255, y=16~235, uv=16~240 */
  104. {{0x00bb, 0x0275, 0x003f}, /* 0.183 , 0.614 , 0.062 13bit: sign+2.10 */
  105. {0x1f98, 0x1ea6, 0x01c2}, /* -0.101 , -0.338 , 0.439 13bit: sign+2.10 */
  106. {0x01c2, 0x1e67, 0x1fd7}, /* 0.439 , -0.399 , -0.04 13bit: sign+2.10 */
  107. {0, 0, 0},
  108. {0x010, 0x080, 0x080} }, /* 16 , 128 , 128 9bit: sign+8.0 */
  109. /* rgb2yuv_709_xvycc, rgb=0~255, yuv=0~255 */
  110. {{0x00da, 0x02dc, 0x004a}, /* 0.2126, 0.7152, 0.0722 13bit: sign+2.10 */
  111. {0x1f8b, 0x1e75, 0x0200}, /* -0.1146, -0.3854, 0.5 13bit: sign+2.10 */
  112. {0x0200, 0x1e2f, 0x1fd1}, /* 0.5 , -0.4542, -0.0458 13bit: sign+2.10 */
  113. {0, 0, 0},
  114. {0x010, 0x080, 0x080} } /* 16 , 128 , 128 9bit: sign+8.0 */
  115. };
  116. #endif