H A D | vivid-tpg.c | 476 #define COEFF(v, r) ((int)(0.5 + (v) * (r) * 256.0)) color_to_ycbcr() macro 479 { COEFF(0.299, 219), COEFF(0.587, 219), COEFF(0.114, 219) }, color_to_ycbcr() 480 { COEFF(-0.169, 224), COEFF(-0.331, 224), COEFF(0.5, 224) }, color_to_ycbcr() 481 { COEFF(0.5, 224), COEFF(-0.419, 224), COEFF(-0.081, 224) }, color_to_ycbcr() 484 { COEFF(0.299, 255), COEFF(0.587, 255), COEFF(0.114, 255) }, color_to_ycbcr() 485 { COEFF(-0.169, 255), COEFF(-0.331, 255), COEFF(0.5, 255) }, color_to_ycbcr() 486 { COEFF(0.5, 255), COEFF(-0.419, 255), COEFF(-0.081, 255) }, color_to_ycbcr() 489 { COEFF(0.2126, 219), COEFF(0.7152, 219), COEFF(0.0722, 219) }, color_to_ycbcr() 490 { COEFF(-0.1146, 224), COEFF(-0.3854, 224), COEFF(0.5, 224) }, color_to_ycbcr() 491 { COEFF(0.5, 224), COEFF(-0.4542, 224), COEFF(-0.0458, 224) }, color_to_ycbcr() 494 { COEFF(0.2126, 255), COEFF(0.7152, 255), COEFF(0.0722, 255) }, color_to_ycbcr() 495 { COEFF(-0.1146, 255), COEFF(-0.3854, 255), COEFF(0.5, 255) }, color_to_ycbcr() 496 { COEFF(0.5, 255), COEFF(-0.4542, 255), COEFF(-0.0458, 255) }, color_to_ycbcr() 499 { COEFF(0.212, 219), COEFF(0.701, 219), COEFF(0.087, 219) }, color_to_ycbcr() 500 { COEFF(-0.116, 224), COEFF(-0.384, 224), COEFF(0.5, 224) }, color_to_ycbcr() 501 { COEFF(0.5, 224), COEFF(-0.445, 224), COEFF(-0.055, 224) }, color_to_ycbcr() 504 { COEFF(0.212, 255), COEFF(0.701, 255), COEFF(0.087, 255) }, color_to_ycbcr() 505 { COEFF(-0.116, 255), COEFF(-0.384, 255), COEFF(0.5, 255) }, color_to_ycbcr() 506 { COEFF(0.5, 255), COEFF(-0.445, 255), COEFF(-0.055, 255) }, color_to_ycbcr() 509 { COEFF(0.2627, 219), COEFF(0.6780, 219), COEFF(0.0593, 219) }, color_to_ycbcr() 510 { COEFF(-0.1396, 224), COEFF(-0.3604, 224), COEFF(0.5, 224) }, color_to_ycbcr() 511 { COEFF(0.5, 224), COEFF(-0.4598, 224), COEFF(-0.0402, 224) }, color_to_ycbcr() 514 { COEFF(0.2627, 255), COEFF(0.6780, 255), COEFF(0.0593, 255) }, color_to_ycbcr() 515 { COEFF(-0.1396, 255), COEFF(-0.3604, 255), COEFF(0.5, 255) }, color_to_ycbcr() 516 { COEFF(0.5, 255), COEFF(-0.4698, 255), COEFF(-0.0402, 255) }, color_to_ycbcr() 519 COEFF(1.0 / 1.9404, 224), COEFF(1.0 / 1.5816, 224), color_to_ycbcr() 520 COEFF(1.0 / 1.7184, 224), COEFF(1.0 / 0.9936, 224), color_to_ycbcr() 523 COEFF(1.0 / 1.9404, 255), COEFF(1.0 / 1.5816, 255), color_to_ycbcr() 524 COEFF(1.0 / 1.7184, 255), COEFF(1.0 / 0.9936, 255), color_to_ycbcr() 550 lin_y = (COEFF(0.2627, 255) * rec709_to_linear(r) + color_to_ycbcr() 551 COEFF(0.6780, 255) * rec709_to_linear(g) + color_to_ycbcr() 552 COEFF(0.0593, 255) * rec709_to_linear(b)) >> 16; color_to_ycbcr() 591 #undef COEFF ycbcr_to_color() macro 592 #define COEFF(v, r) ((int)(0.5 + (v) * ((255.0 * 255.0 * 16.0) / (r)))) ycbcr_to_color() macro 594 { COEFF(1, 219), COEFF(0, 224), COEFF(1.4020, 224) }, ycbcr_to_color() 595 { COEFF(1, 219), COEFF(-0.3441, 224), COEFF(-0.7141, 224) }, ycbcr_to_color() 596 { COEFF(1, 219), COEFF(1.7720, 224), COEFF(0, 224) }, ycbcr_to_color() 599 { COEFF(1, 255), COEFF(0, 255), COEFF(1.4020, 255) }, ycbcr_to_color() 600 { COEFF(1, 255), COEFF(-0.3441, 255), COEFF(-0.7141, 255) }, ycbcr_to_color() 601 { COEFF(1, 255), COEFF(1.7720, 255), COEFF(0, 255) }, ycbcr_to_color() 604 { COEFF(1, 219), COEFF(0, 224), COEFF(1.5748, 224) }, ycbcr_to_color() 605 { COEFF(1, 219), COEFF(-0.1873, 224), COEFF(-0.4681, 224) }, ycbcr_to_color() 606 { COEFF(1, 219), COEFF(1.8556, 224), COEFF(0, 224) }, ycbcr_to_color() 609 { COEFF(1, 255), COEFF(0, 255), COEFF(1.5748, 255) }, ycbcr_to_color() 610 { COEFF(1, 255), COEFF(-0.1873, 255), COEFF(-0.4681, 255) }, ycbcr_to_color() 611 { COEFF(1, 255), COEFF(1.8556, 255), COEFF(0, 255) }, ycbcr_to_color() 614 { COEFF(1, 219), COEFF(0, 224), COEFF(1.5756, 224) }, ycbcr_to_color() 615 { COEFF(1, 219), COEFF(-0.2253, 224), COEFF(-0.4767, 224) }, ycbcr_to_color() 616 { COEFF(1, 219), COEFF(1.8270, 224), COEFF(0, 224) }, ycbcr_to_color() 619 { COEFF(1, 255), COEFF(0, 255), COEFF(1.5756, 255) }, ycbcr_to_color() 620 { COEFF(1, 255), COEFF(-0.2253, 255), COEFF(-0.4767, 255) }, ycbcr_to_color() 621 { COEFF(1, 255), COEFF(1.8270, 255), COEFF(0, 255) }, ycbcr_to_color() 624 { COEFF(1, 219), COEFF(0, 224), COEFF(1.4746, 224) }, ycbcr_to_color() 625 { COEFF(1, 219), COEFF(-0.1646, 224), COEFF(-0.5714, 224) }, ycbcr_to_color() 626 { COEFF(1, 219), COEFF(1.8814, 224), COEFF(0, 224) }, ycbcr_to_color() 629 { COEFF(1, 255), COEFF(0, 255), COEFF(1.4746, 255) }, ycbcr_to_color() 630 { COEFF(1, 255), COEFF(-0.1646, 255), COEFF(-0.5714, 255) }, ycbcr_to_color() 631 { COEFF(1, 255), COEFF(1.8814, 255), COEFF(0, 255) }, ycbcr_to_color() 634 COEFF(1.9404, 224), COEFF(1.5816, 224), ycbcr_to_color() 635 COEFF(1.7184, 224), COEFF(0.9936, 224), ycbcr_to_color() 638 COEFF(1.9404, 255), COEFF(1.5816, 255), ycbcr_to_color() 639 COEFF(1.7184, 255), COEFF(0.9936, 255), ycbcr_to_color() 644 int y_fac = full ? COEFF(1.0, 255) : COEFF(1.0, 219); ycbcr_to_color() 684 lin_g = COEFF(1.0 / 0.6780, 255) * lin_y - ycbcr_to_color() 685 COEFF(0.2627 / 0.6780, 255) * lin_r - ycbcr_to_color() 686 COEFF(0.0593 / 0.6780, 255) * lin_b; ycbcr_to_color()
|