ddp_matrix_para.h 5.4 KB

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