0x146e, 0x1482
};
+static int num_eo_y_lut_hdr = 143;
int eo_y_lut_hdr[143] = {
- 61440, 66560, 94208, 110592, 121984, 132160, 138816, 146432, 151264,
- 156096, 161440, 165568, 168768, 172224, 175952, 179968, 182240, 200680,
- 215102, 226400, 235271, 244625, 250984, 258029, 264312, 269323, 275208,
- 280295, 284260, 288817, 294028, 297434, 300794, 304586, 308851, 312465,
- 315139, 318120, 321437, 325119, 328439, 330693, 333181, 335922, 338938,
- 342251, 344974, 346965, 349143, 351524, 354124, 356960, 360050, 361931,
- 363762, 365751, 367912, 370258, 372802, 375559, 377689, 379306, 381056,
- 382948, 384994, 387204, 389591, 392167, 394081, 395581, 397197, 398940,
- 400818, 402840, 405018, 407363, 409743, 411100, 412561, 414132, 415820,
- 417636, 419588, 421685, 423939, 426172, 427472, 428869, 430370, 431980,
- 433710, 435567, 437561, 439701, 441999, 443416, 444740, 446160, 447685,
- 449321, 451078, 452962, 454986, 457157, 459120, 460370, 461713, 463154,
- 464701, 466363, 468146, 470061, 472118, 474326, 475917, 477191, 478560,
- 480031, 481611, 483309, 485135, 487098, 489208, 491477, 492719, 494032,
- 495444, 496965, 498601, 500363, 502261, 504304, 506506, 508391, 509670,
- 511049, 512536, 514140, 515870, 517739, 519756, 521934, 524287
+ 132288, 136832, 165440, 181832, 193440, 202088, 210400, 216476, 221882,
+ 227920, 231986, 235648, 239639, 243964, 247193, 249698, 252377, 271330,
+ 285261, 297148, 306377, 314682, 321922, 329204, 334486, 340750, 346085,
+ 350369, 355325, 360734, 363991, 367697, 371896, 376636, 379400, 382389,
+ 385731, 389458, 393410, 395711, 398260, 401078, 404188, 407615, 410492,
+ 412562, 414834, 417322, 420045, 423021, 426127, 427900, 429831, 431934,
+ 434222, 436709, 439410, 442342, 443945, 445668, 447230, 448187, 449224,
+ 450344, 451555, 452864, 454277, 455803, 457449, 458988, 459945, 460977,
+ 462089, 463286, 464576, 465964, 467458, 469066, 470795, 472655, 474655,
+ 475971, 477126, 478368, 479702, 481136, 482676, 484330, 486107, 488015,
+ 490063, 491891, 493071, 494339, 495699, 497159, 498727, 500409, 502262,
+ 504308, 506503, 508381, 509646, 511003, 512460, 512934, 513098, 513279,
+ 513477, 513691, 513923, 514172, 514438, 514720, 515017, 515328, 515650,
+ 515981, 516320, 516662, 517006, 517349, 517689, 518022, 518347, 518662,
+ 518968, 519263, 519549, 519827, 520097, 520363, 520625, 520888, 521155,
+ 521431, 521727, 522054, 522431, 522871, 523371, 523881, 524287
};
+module_param_array(eo_y_lut_hdr, int, &num_eo_y_lut_hdr, 0664);
+MODULE_PARM_DESC(eo_y_lut_hdr, "\n eo_y_lut_hdr\n");
int eo_y_lut_hlg[143] = {
0, 169296, 202068, 221184, 234837, 246442, 253952, 262485, 267605,
};
int eo_y_lut_sdr[143] = {
- 0, 131072, 169072, 192440, 208748, 220974, 231863, 240311, 248196,
- 254344, 261528, 265967, 270660, 275934, 280168, 283414, 286977, 311340,
- 327680, 339286, 349357, 359062, 365682, 372745, 378914, 383660, 389051,
- 394162, 397536, 401264, 405358, 409712, 412138, 414760, 417582, 420609,
- 423845, 426638, 428471, 430413, 432468, 434636, 436919, 439320, 441839,
- 443423, 444804, 446246, 447751, 449320, 450952, 452649, 454412, 456240,
- 458136, 459425, 460441, 461491, 462575, 463695, 464851, 466041, 467268,
- 468532, 469832, 471168, 472542, 473954, 475269, 476013, 476776, 477558,
- 478359, 479181, 480022, 480882, 481763, 482664, 483585, 484526, 485488,
- 486471, 487474, 488499, 489544, 490610, 491609, 492163, 492728, 493304,
- 493891, 494489, 495097, 495717, 496348, 496990, 497643, 498307, 498983,
- 499670, 500369, 501079, 501800, 502533, 503278, 504034, 504802, 505582,
- 506373, 507177, 507948, 508362, 508781, 509207, 509639, 510077, 510521,
- 510971, 511427, 511890, 512359, 512834, 513315, 513802, 514296, 514796,
- 515303, 515815, 516335, 516860, 517392, 517931, 518476, 519027, 519586,
- 520150, 520721, 521299, 521883, 522474, 523072, 523676, 524287
+ 0, 163808, 199044, 219568, 234610, 247036, 255751, 264272, 270593,
+ 277939, 282430, 287163, 292441, 296593, 299792, 303278, 307054, 328697,
+ 344063, 354448, 364052, 372123, 379268, 384835, 391196, 395793, 399793,
+ 404214, 409063, 411973, 414834, 417919, 421229, 424767, 427260, 429261,
+ 431380, 433618, 435975, 438453, 441054, 443072, 444496, 445981, 447530,
+ 449142, 450817, 452556, 454360, 456229, 458163, 459457, 460489, 461555,
+ 462654, 463787, 464953, 466153, 467387, 468655, 469957, 471294, 472665,
+ 474071, 475324, 476062, 476817, 477590, 478381, 479190, 480016, 480861,
+ 481723, 482603, 483502, 484418, 485353, 486306, 487278, 488267, 489276,
+ 490302, 491348, 491966, 492507, 493057, 493618, 494187, 494766, 495354,
+ 495952, 496559, 497176, 497803, 498439, 499084, 499740, 500405, 501079,
+ 501764, 502458, 503161, 503875, 504598, 505332, 506075, 506828, 507590,
+ 508133, 508525, 508921, 509322, 509728, 510140, 510556, 510977, 511404,
+ 511835, 512272, 512713, 513160, 513611, 514068, 514530, 514997, 515469,
+ 515946, 516429, 516916, 517409, 517907, 518410, 518918, 519432, 519950,
+ 520474, 521003, 521537, 522077, 522622, 523172, 523727, 524287
};
int oe_y_lut_hdr[149] = {0, 3, 5, 8, 12, 19, 28, 41, 60, 67, 74, 80, 85,
4072, 4095
};
+static int num_oe_y_lut_sdr = 149;
int oe_y_lut_sdr[149] = {0, 1, 1, 2, 2, 3, 5, 7, 9, 10, 11, 12, 12, 13,
15, 16, 16, 18, 20, 21, 22, 24, 26, 28, 30, 33, 35, 38, 40, 44, 47,
50, 53, 59, 63, 67, 71, 78, 85, 90, 95, 105, 113, 121, 127, 134, 140,
2624, 2721, 2814, 2902, 2987, 3068, 3147, 3222, 3296, 3367, 3436, 3503,
3569, 3633, 3695, 3756, 3816, 3874, 3931, 3987, 4042, 4095
};
+module_param_array(oe_y_lut_sdr, int, &num_oe_y_lut_sdr, 0664);
+MODULE_PARM_DESC(oe_y_lut_sdr, "\n eo_y_lut_hdr\n");
int oo_y_lut_hdr_hlg[149] = {
4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095,
static int num_hdr_sdr_lut = 149;
int oo_y_lut_hdr_sdr[149] = {
- 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261,
- 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261,
- 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3259, 3259, 3259, 3259, 3258, 3258,
- 3257, 3257, 3256, 3256, 3255, 3255, 3254, 3254, 3253, 3252, 3251,
- 3251, 3250, 3249, 3248, 3247, 3246, 3244, 3242, 3240, 3238, 3236,
- 3235, 3233, 3231, 3227, 3223, 3220, 3216, 3212, 3208, 3205, 3201,
- 3194, 3186, 3179, 3172, 3164, 3157, 3150, 3143, 3128, 3114, 3100,
- 3086, 3072, 3058, 3044, 3030, 3003, 2976, 2950, 2924, 2898, 2873,
- 2848, 2823, 2774, 2727, 2680, 2635, 2591, 2549, 2507, 2466, 2388,
- 2314, 2243, 2176, 2112, 2051, 1993, 1938, 1835, 1742, 1658, 1581,
- 1511, 1447, 1388, 1334, 1240, 1159, 1090, 1029, 977, 930, 889,
- 852, 818, 787, 759, 733, 708, 685, 664, 644, 624, 606, 589, 572,
- 556, 541, 526, 512
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255
};
module_param_array(oo_y_lut_hdr_sdr, int, &num_hdr_sdr_lut, 0664);
MODULE_PARM_DESC(oo_y_lut_hdr_sdr, "\n num_hdr_sdr_lut\n");
};
int oo_y_lut_sdr_hdr[149] = {
- 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643,
- 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643,
- 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643,
- 643, 643, 643, 643, 643, 643, 643, 643, 644, 644, 644, 644, 644,
- 644, 644, 644, 645, 645, 645, 645, 645, 646, 646, 646, 647, 647,
- 647, 648, 648, 649, 649, 650, 651, 652, 652, 653, 654, 655, 656,
- 658, 659, 661, 662, 664, 665, 667, 670, 673, 676, 679, 682, 685,
- 688, 691, 698, 704, 710, 717, 723, 729, 736, 742, 755, 768, 782,
- 795, 809, 822, 836, 850, 878, 906, 934, 963, 992, 1022, 1052,
- 1081, 1142, 1203, 1264, 1326, 1387, 1449, 1510, 1571, 1691, 1808,
- 1923, 2036, 2145, 2252, 2357, 2460, 2562, 2662, 2761, 2860, 2959,
- 3057, 3156, 3256, 3356, 3457, 3559, 3663, 3768, 3875, 3984, 4095
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, 128,
+ 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 130, 130,
+ 130, 131, 131, 131, 132, 132, 133, 133, 134, 135, 136, 136,
+ 137, 138, 139, 140, 141, 143, 145, 147, 148, 150, 152, 154,
+ 157, 161, 164, 168, 172, 175, 179, 183, 190, 197, 205, 213,
+ 220, 228, 235, 243, 258, 273, 288, 303, 318, 332, 346, 360,
+ 374, 387, 400, 412, 423, 434, 444, 452, 461, 468, 475, 481,
+ 488, 495, 502, 510
};
int oo_y_lut_hlg_sdr[149] = {
/*int ncl_2020_709[9] = {*/
/*3401, -1204, -149, -255, 2320, -17, -37, -206, 2291};*/
/* dci-p3->709rgb*/
+/*int ncl_2020_709[9] = {*/
+ /*2543, -459, -36, -88, 2133, 3, -41, -161, 2250};*/
+
+/* special primary->709rgb*/
int ncl_2020_709[9] = {
- 2543, -459, -36, -88, 2133, 3, -41, -161, 2250};
+ 2684, -489, -147, -201, 2266, -17, -29, -171, 2248};
/*int cl_2020_709[9] =*/
/*{-1775, 3867, -44, 3422, -1154, -220 ,-304, 43, 2309}; */
for (i = 0; i < 3; i++) {
adpscl_enable[i] = 0;
if (hdr_mtx_param->p_sel & HDR_SDR)
- adpscl_alpha[i] = out_luma *
- (1 << adp_scal_shift) / in_luma;
+ adpscl_alpha[i] =
+ (1 << adp_scal_shift);
else if (hdr_mtx_param->p_sel & SDR_HDR)
adpscl_alpha[i] = in_luma *
(1 << adp_scal_shift) / out_luma;
} else if (hdr_mtx_param->p_sel & HLG_HDR)
adpscl_alpha[i] = 1 *
(1 << adp_scal_shift) / in_luma;
- adpscl_shift[i] = adp_scal_shift;
- adpscl_ys_coef[i] =
- hdr_mtx_param->mtx_ogain[i] << 1;
+ else if (hdr_mtx_param->p_sel & SDR_HLG)
+ adpscl_alpha[i] = 10 * in_luma *
+ (1 << adp_scal_shift) / out_luma;
+
+ if (hdr_mtx_param->p_sel & HDR_SDR) {
+ if (i == 0)
+ adpscl_shift[i] = adp_scal_shift;
+ else
+ adpscl_shift[i] = adp_scal_shift - 2;
+ } else
+ adpscl_shift[i] = adp_scal_shift;
+
+ if (hdr_mtx_param->mtx_ogain)
+ adpscl_ys_coef[i] =
+ 1 << adp_scal_shift;
adpscl_beta_s[i] = 0;
- adpscl_beta[i] = FLTZERO;
+ adpscl_beta[i] = 0;
}
/*gamut mode: 1->gamut before ootf*/
/*2->gamut after ootf*/
/*other->disable gamut*/
- VSYNC_WR_MPEG_REG_BITS(hdr_ctrl, 1, 6, 2);
+ VSYNC_WR_MPEG_REG_BITS(hdr_ctrl, 2, 6, 2);
VSYNC_WR_MPEG_REG(GMUT_CTRL, gmut_shift);
VSYNC_WR_MPEG_REG(GMUT_COEF0,
VSYNC_WR_MPEG_REG(CGAIN_COEF0,
c_gain_lim_coef[1] << 16 |
c_gain_lim_coef[0]);
- VSYNC_WR_MPEG_REG(CGAIN_COEF1, c_gain_lim_coef[2]);
+ VSYNC_WR_MPEG_REG(CGAIN_COEF1, c_gain_lim_coef[2] |
+ 0x400 << 16);
VSYNC_WR_MPEG_REG(ADPS_CTRL, adpscl_enable[2] << 6 |
adpscl_enable[1] << 5 |
hdr_mtx_param.mtx_gamut[i] = ncl_709_2020[i];
}
hdr_mtx_param.mtx_on = MTX_ON;
- hdr_mtx_param.p_sel = SDR_HDR;
+ hdr_mtx_param.p_sel = SDR_HLG;
}
set_hdr_matrix(module_sel, HDR_IN_MTX, &hdr_mtx_param);