diff --git a/src/exa_wm_yuv_rgb.g4a b/src/exa_wm_yuv_rgb.g4a index 0c7525d1..327a8083 100644 --- a/src/exa_wm_yuv_rgb.g4a +++ b/src/exa_wm_yuv_rgb.g4a @@ -30,18 +30,30 @@ include(`exa_wm.g4i') define(`YCbCr_base', `src_sample_base') -define(`Cr', `src_sample_r') +define(`Cr', `src_sample_r_01') define(`Cr_01', `src_sample_r_01') define(`Cr_23', `src_sample_r_23') -define(`Y', `src_sample_g') +define(`Y', `src_sample_g_01') define(`Y_01', `src_sample_g_01') define(`Y_23', `src_sample_g_23') -define(`Cb', `src_sample_b') +define(`Cb', `src_sample_b_01') define(`Cb_01', `src_sample_b_01') define(`Cb_23', `src_sample_b_23') +define(`Crn', `mask_sample_r_01') +define(`Crn_01', `mask_sample_r_01') +define(`Crn_23', `mask_sample_r_23') + +define(`Yn', `mask_sample_g_01') +define(`Yn_01', `mask_sample_g_01') +define(`Yn_23', `mask_sample_g_23') + +define(`Cbn', `mask_sample_b_01') +define(`Cbn_01', `mask_sample_b_01') +define(`Cbn_23', `mask_sample_b_23') + /* color space conversion function: * R = Clamp ( 1.164(Y-16/255) + 1.596(Cr-128/255), 0, 1) * G = Clamp ( 1.164(Y-16/255) - 0.813(Cr-128/255) - 0.392(Cb-128/255), 0, 1) @@ -58,45 +70,45 @@ define(`Cb_23', `src_sample_b_23') /* Normalize Y, Cb and Cr: * - * Y = (Y - 16/255) * 1.164 - * Cr = Cr - 128 / 255 - * Cb = Cb - 128 / 255 + * Yn = (Y - 16/255) * 1.164 + * Crn = Cr - 128 / 255 + * Cbn = Cb - 128 / 255 */ -add (16) Y<1>F Y<8,8,1>F -0.0627451F { compr align1 }; -mul (16) Y<1>F Y<8,8,1>F 1.164F { compr align1 }; +add (16) Yn<1>F Y<8,8,1>F -0.0627451F { compr align1 }; +mul (16) Yn<1>F Yn<8,8,1>F 1.164F { compr align1 }; -add (16) Cr<1>F Cr<8,8,1>F -0.501961F { compr align1 }; +add (16) Crn<1>F Cr<8,8,1>F -0.501961F { compr align1 }; -add (16) Cb<1>F Cb<8,8,1>F -0.501961F { compr align1 }; +add (16) Cbn<1>F Cb<8,8,1>F -0.501961F { compr align1 }; /* * R = Y + Cr * 1.596 */ -mul (8) null Cr_01<8,8,1>F 1.596F { align1 }; -mac.sat (8) data_port_r_01<1>F Y_01<8,8,1>F 1F { align1 }; -mul (8) null Cr_23<8,8,1>F 1.596F { align1 }; -mac.sat (8) data_port_r_23<1>F Y_23<8,8,1>F 1F { align1 }; +mul (8) null Crn_01<8,8,1>F 1.596F { align1 }; +mac.sat (8) src_sample_r_01<1>F Yn_01<8,8,1>F 1F { align1 }; +mul (8) null Crn_23<8,8,1>F 1.596F { align1 }; +mac.sat (8) src_sample_r_23<1>F Yn_23<8,8,1>F 1F { align1 }; /* - * G = Cr * -0.813 + Cb * -0.392 + Y + * G = Crn * -0.813 + Cbn * -0.392 + Y */ -mul (8) null Cr_01<8,8,1>F -0.813F { align1 }; -mac (8) null Cb_01<8,8,1>F -0.392F { align1 }; -mac.sat (8) data_port_g_01<1>F Y_01<8,8,1>F 1F { align1 }; -mul (8) null Cr_23<8,8,1>F -0.813F { align1 }; -mac (8) null Cb_23<8,8,1>F -0.392F { align1 }; -mac.sat (8) data_port_g_23<1>F Y_23<8,8,1>F 1F { align1 }; +mul (8) null Crn_01<8,8,1>F -0.813F { align1 }; +mac (8) null Cbn_01<8,8,1>F -0.392F { align1 }; +mac.sat (8) src_sample_g_01<1>F Yn_01<8,8,1>F 1F { align1 }; +mul (8) null Crn_23<8,8,1>F -0.813F { align1 }; +mac (8) null Cbn_23<8,8,1>F -0.392F { align1 }; +mac.sat (8) src_sample_g_23<1>F Yn_23<8,8,1>F 1F { align1 }; /* - * B = Cb * 2.017 + Y + * B = Cbn * 2.017 + Y */ -mul (8) null Cb_01<8,8,1>F 2.017F { align1 }; -mac.sat (8) data_port_b_01<1>F Y_01<8,8,1>F 1F { align1 }; -mul (8) null Cb_23<8,8,1>F 2.017F { align1 }; -mac.sat (8) data_port_b_23<1>F Y_23<8,8,1>F 1F { align1 }; +mul (8) null Cbn_01<8,8,1>F 2.017F { align1 }; +mac.sat (8) src_sample_b_01<1>F Yn_01<8,8,1>F 1F { align1 }; +mul (8) null Cbn_23<8,8,1>F 2.017F { align1 }; +mac.sat (8) src_sample_b_23<1>F Yn_23<8,8,1>F 1F { align1 }; /* * A = 1.0 */ -mov (8) data_port_a_01<1>F 1.0F { align1 }; -mov (8) data_port_a_23<1>F 1.0F { align1 }; +mov (8) src_sample_a_01<1>F 1.0F { align1 }; +mov (8) src_sample_a_23<1>F 1.0F { align1 }; diff --git a/src/exa_wm_yuv_rgb.g4b b/src/exa_wm_yuv_rgb.g4b index 017186a6..be72e549 100644 --- a/src/exa_wm_yuv_rgb.g4b +++ b/src/exa_wm_yuv_rgb.g4b @@ -1,20 +1,20 @@ - { 0x00802040, 0x22007fbd, 0x008d0200, 0xbd808081 }, - { 0x00802041, 0x22007fbd, 0x008d0200, 0x3f94fdf4 }, - { 0x00802040, 0x21c07fbd, 0x008d01c0, 0xbf008084 }, - { 0x00802040, 0x22407fbd, 0x008d0240, 0xbf008084 }, - { 0x00600041, 0x20007fbc, 0x008d01c0, 0x3fcc49ba }, - { 0x80600048, 0x20407fbe, 0x008d0200, 0x3f800000 }, - { 0x00600041, 0x20007fbc, 0x008d01e0, 0x3fcc49ba }, - { 0x80600048, 0x20c07fbe, 0x008d0220, 0x3f800000 }, - { 0x00600041, 0x20007fbc, 0x008d01c0, 0xbf5020c5 }, - { 0x00600048, 0x20007fbc, 0x008d0240, 0xbec8b439 }, - { 0x80600048, 0x20607fbe, 0x008d0200, 0x3f800000 }, - { 0x00600041, 0x20007fbc, 0x008d01e0, 0xbf5020c5 }, - { 0x00600048, 0x20007fbc, 0x008d0260, 0xbec8b439 }, - { 0x80600048, 0x20e07fbe, 0x008d0220, 0x3f800000 }, - { 0x00600041, 0x20007fbc, 0x008d0240, 0x40011687 }, - { 0x80600048, 0x20807fbe, 0x008d0200, 0x3f800000 }, - { 0x00600041, 0x20007fbc, 0x008d0260, 0x40011687 }, - { 0x80600048, 0x21007fbe, 0x008d0220, 0x3f800000 }, - { 0x00600001, 0x20a003fe, 0x00000000, 0x3f800000 }, - { 0x00600001, 0x212003fe, 0x00000000, 0x3f800000 }, + { 0x00802040, 0x23007fbd, 0x008d0200, 0xbd808081 }, + { 0x00802041, 0x23007fbd, 0x008d0300, 0x3f94fdf4 }, + { 0x00802040, 0x22c07fbd, 0x008d01c0, 0xbf008084 }, + { 0x00802040, 0x23407fbd, 0x008d0240, 0xbf008084 }, + { 0x00600041, 0x20007fbc, 0x008d02c0, 0x3fcc49ba }, + { 0x80600048, 0x21c07fbd, 0x008d0300, 0x3f800000 }, + { 0x00600041, 0x20007fbc, 0x008d02e0, 0x3fcc49ba }, + { 0x80600048, 0x21e07fbd, 0x008d0320, 0x3f800000 }, + { 0x00600041, 0x20007fbc, 0x008d02c0, 0xbf5020c5 }, + { 0x00600048, 0x20007fbc, 0x008d0340, 0xbec8b439 }, + { 0x80600048, 0x22007fbd, 0x008d0300, 0x3f800000 }, + { 0x00600041, 0x20007fbc, 0x008d02e0, 0xbf5020c5 }, + { 0x00600048, 0x20007fbc, 0x008d0360, 0xbec8b439 }, + { 0x80600048, 0x22207fbd, 0x008d0320, 0x3f800000 }, + { 0x00600041, 0x20007fbc, 0x008d0340, 0x40011687 }, + { 0x80600048, 0x22407fbd, 0x008d0300, 0x3f800000 }, + { 0x00600041, 0x20007fbc, 0x008d0360, 0x40011687 }, + { 0x80600048, 0x22607fbd, 0x008d0320, 0x3f800000 }, + { 0x00600001, 0x228003fd, 0x00000000, 0x3f800000 }, + { 0x00600001, 0x22a003fd, 0x00000000, 0x3f800000 },