Message ID | 20210527101105.32789-1-jeanmichel.hautbois@ideasonboard.com |
---|---|
State | Accepted |
Commit | bcfd7b636922261987121d785a4ce4a13dd6afc3 |
Headers | show |
Series |
|
Related | show |
Hi Jean-Michel, Thank you for the patch. On Thu, May 27, 2021 at 12:11:05PM +0200, Jean-Michel Hautbois wrote: > A custom gamma LUT is used, but the table is not calculated at startup, > resulting in an all 0's frame. > Use the drfault LUT specified in the Linux kernel as a first estimation. s/drfault/default/ > Reported-by: Paul Elder <paul.elder@ideasonboard.com> > Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> > Tested-by: Paul Elder <paul.elder@ideasonboard.com> > --- > src/ipa/ipu3/ipu3_awb.cpp | 26 ++++++++++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/src/ipa/ipu3/ipu3_awb.cpp b/src/ipa/ipu3/ipu3_awb.cpp > index f8788065..54ce8e67 100644 > --- a/src/ipa/ipu3/ipu3_awb.cpp > +++ b/src/ipa/ipu3/ipu3_awb.cpp > @@ -134,6 +134,31 @@ static const struct ipu3_uapi_ccm_mat_config imguCssCcmDefault = { > 0, 0, 8191, 0 > }; > > +/* Default settings for Gamma correction */ > +const struct ipu3_uapi_gamma_corr_lut imguCssGammaLut = { { > + 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239, 255, 271, 287, > + 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479, 495, 511, > + 527, 543, 559, 575, 591, 607, 623, 639, 655, 671, 687, 703, 719, 735, > + 751, 767, 783, 799, 815, 831, 847, 863, 879, 895, 911, 927, 943, 959, > + 975, 991, 1007, 1023, 1039, 1055, 1071, 1087, 1103, 1119, 1135, 1151, > + 1167, 1183, 1199, 1215, 1231, 1247, 1263, 1279, 1295, 1311, 1327, 1343, > + 1359, 1375, 1391, 1407, 1423, 1439, 1455, 1471, 1487, 1503, 1519, 1535, > + 1551, 1567, 1583, 1599, 1615, 1631, 1647, 1663, 1679, 1695, 1711, 1727, > + 1743, 1759, 1775, 1791, 1807, 1823, 1839, 1855, 1871, 1887, 1903, 1919, > + 1935, 1951, 1967, 1983, 1999, 2015, 2031, 2047, 2063, 2079, 2095, 2111, > + 2143, 2175, 2207, 2239, 2271, 2303, 2335, 2367, 2399, 2431, 2463, 2495, > + 2527, 2559, 2591, 2623, 2655, 2687, 2719, 2751, 2783, 2815, 2847, 2879, > + 2911, 2943, 2975, 3007, 3039, 3071, 3103, 3135, 3167, 3199, 3231, 3263, > + 3295, 3327, 3359, 3391, 3423, 3455, 3487, 3519, 3551, 3583, 3615, 3647, > + 3679, 3711, 3743, 3775, 3807, 3839, 3871, 3903, 3935, 3967, 3999, 4031, > + 4063, 4095, 4127, 4159, 4223, 4287, 4351, 4415, 4479, 4543, 4607, 4671, > + 4735, 4799, 4863, 4927, 4991, 5055, 5119, 5183, 5247, 5311, 5375, 5439, > + 5503, 5567, 5631, 5695, 5759, 5823, 5887, 5951, 6015, 6079, 6143, 6207, > + 6271, 6335, 6399, 6463, 6527, 6591, 6655, 6719, 6783, 6847, 6911, 6975, > + 7039, 7103, 7167, 7231, 7295, 7359, 7423, 7487, 7551, 7615, 7679, 7743, > + 7807, 7871, 7935, 7999, 8063, 8127, 8191 > +} }; Interesting default, it's a piecewise linear function equal to 63 + i * 16 when 0 <= i <= 128 63 + 128 * 16 + (i - 128) * 32 when 128 < i <= 192 63 + 128 * 16 + 64 * 32 + (i - 192) * 32 when 192 < i <= 255 Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > + > IPU3Awb::IPU3Awb() > : Algorithm() > { > @@ -174,6 +199,7 @@ void IPU3Awb::initialise(ipu3_uapi_params ¶ms, const Size &bdsOutputSize, st > params.acc_param.ccm = imguCssCcmDefault; > > params.use.acc_gamma = 1; > + params.acc_param.gamma.gc_lut = imguCssGammaLut; > params.acc_param.gamma.gc_ctrl.enable = 1; > > zones_.reserve(kAwbStatsSizeX * kAwbStatsSizeY);
Hi Laurent, On 27/05/2021 12:33, Laurent Pinchart wrote: > Hi Jean-Michel, > > Thank you for the patch. > > On Thu, May 27, 2021 at 12:11:05PM +0200, Jean-Michel Hautbois wrote: >> A custom gamma LUT is used, but the table is not calculated at startup, >> resulting in an all 0's frame. >> Use the drfault LUT specified in the Linux kernel as a first estimation. > > s/drfault/default/ > >> Reported-by: Paul Elder <paul.elder@ideasonboard.com> >> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> >> Tested-by: Paul Elder <paul.elder@ideasonboard.com> >> --- >> src/ipa/ipu3/ipu3_awb.cpp | 26 ++++++++++++++++++++++++++ >> 1 file changed, 26 insertions(+) >> >> diff --git a/src/ipa/ipu3/ipu3_awb.cpp b/src/ipa/ipu3/ipu3_awb.cpp >> index f8788065..54ce8e67 100644 >> --- a/src/ipa/ipu3/ipu3_awb.cpp >> +++ b/src/ipa/ipu3/ipu3_awb.cpp >> @@ -134,6 +134,31 @@ static const struct ipu3_uapi_ccm_mat_config imguCssCcmDefault = { >> 0, 0, 8191, 0 >> }; >> >> +/* Default settings for Gamma correction */ >> +const struct ipu3_uapi_gamma_corr_lut imguCssGammaLut = { { >> + 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239, 255, 271, 287, >> + 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479, 495, 511, >> + 527, 543, 559, 575, 591, 607, 623, 639, 655, 671, 687, 703, 719, 735, >> + 751, 767, 783, 799, 815, 831, 847, 863, 879, 895, 911, 927, 943, 959, >> + 975, 991, 1007, 1023, 1039, 1055, 1071, 1087, 1103, 1119, 1135, 1151, >> + 1167, 1183, 1199, 1215, 1231, 1247, 1263, 1279, 1295, 1311, 1327, 1343, >> + 1359, 1375, 1391, 1407, 1423, 1439, 1455, 1471, 1487, 1503, 1519, 1535, >> + 1551, 1567, 1583, 1599, 1615, 1631, 1647, 1663, 1679, 1695, 1711, 1727, >> + 1743, 1759, 1775, 1791, 1807, 1823, 1839, 1855, 1871, 1887, 1903, 1919, >> + 1935, 1951, 1967, 1983, 1999, 2015, 2031, 2047, 2063, 2079, 2095, 2111, >> + 2143, 2175, 2207, 2239, 2271, 2303, 2335, 2367, 2399, 2431, 2463, 2495, >> + 2527, 2559, 2591, 2623, 2655, 2687, 2719, 2751, 2783, 2815, 2847, 2879, >> + 2911, 2943, 2975, 3007, 3039, 3071, 3103, 3135, 3167, 3199, 3231, 3263, >> + 3295, 3327, 3359, 3391, 3423, 3455, 3487, 3519, 3551, 3583, 3615, 3647, >> + 3679, 3711, 3743, 3775, 3807, 3839, 3871, 3903, 3935, 3967, 3999, 4031, >> + 4063, 4095, 4127, 4159, 4223, 4287, 4351, 4415, 4479, 4543, 4607, 4671, >> + 4735, 4799, 4863, 4927, 4991, 5055, 5119, 5183, 5247, 5311, 5375, 5439, >> + 5503, 5567, 5631, 5695, 5759, 5823, 5887, 5951, 6015, 6079, 6143, 6207, >> + 6271, 6335, 6399, 6463, 6527, 6591, 6655, 6719, 6783, 6847, 6911, 6975, >> + 7039, 7103, 7167, 7231, 7295, 7359, 7423, 7487, 7551, 7615, 7679, 7743, >> + 7807, 7871, 7935, 7999, 8063, 8127, 8191 >> +} }; > > Interesting default, it's a piecewise linear function equal to > > 63 + i * 16 when 0 <= i <= 128 > 63 + 128 * 16 + (i - 128) * 32 when 128 < i <= 192 > 63 + 128 * 16 + 64 * 32 + (i - 192) * 32 when 192 < i <= 255 > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Indeed, but don't have a math function for that... Does it mean you want to extract the class Pwl from RPi and integrate it into libipa ;-) ? >> + >> IPU3Awb::IPU3Awb() >> : Algorithm() >> { >> @@ -174,6 +199,7 @@ void IPU3Awb::initialise(ipu3_uapi_params ¶ms, const Size &bdsOutputSize, st >> params.acc_param.ccm = imguCssCcmDefault; >> >> params.use.acc_gamma = 1; >> + params.acc_param.gamma.gc_lut = imguCssGammaLut; >> params.acc_param.gamma.gc_ctrl.enable = 1; >> >> zones_.reserve(kAwbStatsSizeX * kAwbStatsSizeY); >
Hi Jean-Michel, On Thu, May 27, 2021 at 04:56:26PM +0200, Jean-Michel Hautbois wrote: > On 27/05/2021 12:33, Laurent Pinchart wrote: > > On Thu, May 27, 2021 at 12:11:05PM +0200, Jean-Michel Hautbois wrote: > >> A custom gamma LUT is used, but the table is not calculated at startup, > >> resulting in an all 0's frame. > >> Use the drfault LUT specified in the Linux kernel as a first estimation. > > > > s/drfault/default/ > > > >> Reported-by: Paul Elder <paul.elder@ideasonboard.com> > >> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> > >> Tested-by: Paul Elder <paul.elder@ideasonboard.com> > >> --- > >> src/ipa/ipu3/ipu3_awb.cpp | 26 ++++++++++++++++++++++++++ > >> 1 file changed, 26 insertions(+) > >> > >> diff --git a/src/ipa/ipu3/ipu3_awb.cpp b/src/ipa/ipu3/ipu3_awb.cpp > >> index f8788065..54ce8e67 100644 > >> --- a/src/ipa/ipu3/ipu3_awb.cpp > >> +++ b/src/ipa/ipu3/ipu3_awb.cpp > >> @@ -134,6 +134,31 @@ static const struct ipu3_uapi_ccm_mat_config imguCssCcmDefault = { > >> 0, 0, 8191, 0 > >> }; > >> > >> +/* Default settings for Gamma correction */ > >> +const struct ipu3_uapi_gamma_corr_lut imguCssGammaLut = { { > >> + 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239, 255, 271, 287, > >> + 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479, 495, 511, > >> + 527, 543, 559, 575, 591, 607, 623, 639, 655, 671, 687, 703, 719, 735, > >> + 751, 767, 783, 799, 815, 831, 847, 863, 879, 895, 911, 927, 943, 959, > >> + 975, 991, 1007, 1023, 1039, 1055, 1071, 1087, 1103, 1119, 1135, 1151, > >> + 1167, 1183, 1199, 1215, 1231, 1247, 1263, 1279, 1295, 1311, 1327, 1343, > >> + 1359, 1375, 1391, 1407, 1423, 1439, 1455, 1471, 1487, 1503, 1519, 1535, > >> + 1551, 1567, 1583, 1599, 1615, 1631, 1647, 1663, 1679, 1695, 1711, 1727, > >> + 1743, 1759, 1775, 1791, 1807, 1823, 1839, 1855, 1871, 1887, 1903, 1919, > >> + 1935, 1951, 1967, 1983, 1999, 2015, 2031, 2047, 2063, 2079, 2095, 2111, > >> + 2143, 2175, 2207, 2239, 2271, 2303, 2335, 2367, 2399, 2431, 2463, 2495, > >> + 2527, 2559, 2591, 2623, 2655, 2687, 2719, 2751, 2783, 2815, 2847, 2879, > >> + 2911, 2943, 2975, 3007, 3039, 3071, 3103, 3135, 3167, 3199, 3231, 3263, > >> + 3295, 3327, 3359, 3391, 3423, 3455, 3487, 3519, 3551, 3583, 3615, 3647, > >> + 3679, 3711, 3743, 3775, 3807, 3839, 3871, 3903, 3935, 3967, 3999, 4031, > >> + 4063, 4095, 4127, 4159, 4223, 4287, 4351, 4415, 4479, 4543, 4607, 4671, > >> + 4735, 4799, 4863, 4927, 4991, 5055, 5119, 5183, 5247, 5311, 5375, 5439, > >> + 5503, 5567, 5631, 5695, 5759, 5823, 5887, 5951, 6015, 6079, 6143, 6207, > >> + 6271, 6335, 6399, 6463, 6527, 6591, 6655, 6719, 6783, 6847, 6911, 6975, > >> + 7039, 7103, 7167, 7231, 7295, 7359, 7423, 7487, 7551, 7615, 7679, 7743, > >> + 7807, 7871, 7935, 7999, 8063, 8127, 8191 > >> +} }; > > > > Interesting default, it's a piecewise linear function equal to > > > > 63 + i * 16 when 0 <= i <= 128 > > 63 + 128 * 16 + (i - 128) * 32 when 128 < i <= 192 > > 63 + 128 * 16 + 64 * 32 + (i - 192) * 32 when 192 < i <= 255 > > > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > Indeed, but don't have a math function for that... > Does it mean you want to extract the class Pwl from RPi and integrate it > into libipa ;-) ? Eventually yes, but even without that, we could implement the above here instead of hardcoding the table if we wanted to. > >> + > >> IPU3Awb::IPU3Awb() > >> : Algorithm() > >> { > >> @@ -174,6 +199,7 @@ void IPU3Awb::initialise(ipu3_uapi_params ¶ms, const Size &bdsOutputSize, st > >> params.acc_param.ccm = imguCssCcmDefault; > >> > >> params.use.acc_gamma = 1; > >> + params.acc_param.gamma.gc_lut = imguCssGammaLut; > >> params.acc_param.gamma.gc_ctrl.enable = 1; > >> > >> zones_.reserve(kAwbStatsSizeX * kAwbStatsSizeY);
Hi Jean-Michel, On Thu, May 27, 2021 at 12:11:05PM +0200, Jean-Michel Hautbois wrote: > A custom gamma LUT is used, but the table is not calculated at startup, > resulting in an all 0's frame. > Use the drfault LUT specified in the Linux kernel as a first estimation. > > Reported-by: Paul Elder <paul.elder@ideasonboard.com> > Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> > Tested-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> > --- > src/ipa/ipu3/ipu3_awb.cpp | 26 ++++++++++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/src/ipa/ipu3/ipu3_awb.cpp b/src/ipa/ipu3/ipu3_awb.cpp > index f8788065..54ce8e67 100644 > --- a/src/ipa/ipu3/ipu3_awb.cpp > +++ b/src/ipa/ipu3/ipu3_awb.cpp > @@ -134,6 +134,31 @@ static const struct ipu3_uapi_ccm_mat_config imguCssCcmDefault = { > 0, 0, 8191, 0 > }; > > +/* Default settings for Gamma correction */ > +const struct ipu3_uapi_gamma_corr_lut imguCssGammaLut = { { > + 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239, 255, 271, 287, > + 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479, 495, 511, > + 527, 543, 559, 575, 591, 607, 623, 639, 655, 671, 687, 703, 719, 735, > + 751, 767, 783, 799, 815, 831, 847, 863, 879, 895, 911, 927, 943, 959, > + 975, 991, 1007, 1023, 1039, 1055, 1071, 1087, 1103, 1119, 1135, 1151, > + 1167, 1183, 1199, 1215, 1231, 1247, 1263, 1279, 1295, 1311, 1327, 1343, > + 1359, 1375, 1391, 1407, 1423, 1439, 1455, 1471, 1487, 1503, 1519, 1535, > + 1551, 1567, 1583, 1599, 1615, 1631, 1647, 1663, 1679, 1695, 1711, 1727, > + 1743, 1759, 1775, 1791, 1807, 1823, 1839, 1855, 1871, 1887, 1903, 1919, > + 1935, 1951, 1967, 1983, 1999, 2015, 2031, 2047, 2063, 2079, 2095, 2111, > + 2143, 2175, 2207, 2239, 2271, 2303, 2335, 2367, 2399, 2431, 2463, 2495, > + 2527, 2559, 2591, 2623, 2655, 2687, 2719, 2751, 2783, 2815, 2847, 2879, > + 2911, 2943, 2975, 3007, 3039, 3071, 3103, 3135, 3167, 3199, 3231, 3263, > + 3295, 3327, 3359, 3391, 3423, 3455, 3487, 3519, 3551, 3583, 3615, 3647, > + 3679, 3711, 3743, 3775, 3807, 3839, 3871, 3903, 3935, 3967, 3999, 4031, > + 4063, 4095, 4127, 4159, 4223, 4287, 4351, 4415, 4479, 4543, 4607, 4671, > + 4735, 4799, 4863, 4927, 4991, 5055, 5119, 5183, 5247, 5311, 5375, 5439, > + 5503, 5567, 5631, 5695, 5759, 5823, 5887, 5951, 6015, 6079, 6143, 6207, > + 6271, 6335, 6399, 6463, 6527, 6591, 6655, 6719, 6783, 6847, 6911, 6975, > + 7039, 7103, 7167, 7231, 7295, 7359, 7423, 7487, 7551, 7615, 7679, 7743, > + 7807, 7871, 7935, 7999, 8063, 8127, 8191 > +} }; > + > IPU3Awb::IPU3Awb() > : Algorithm() > { > @@ -174,6 +199,7 @@ void IPU3Awb::initialise(ipu3_uapi_params ¶ms, const Size &bdsOutputSize, st > params.acc_param.ccm = imguCssCcmDefault; > > params.use.acc_gamma = 1; > + params.acc_param.gamma.gc_lut = imguCssGammaLut; > params.acc_param.gamma.gc_ctrl.enable = 1; > > zones_.reserve(kAwbStatsSizeX * kAwbStatsSizeY); > -- > 2.30.2 >
diff --git a/src/ipa/ipu3/ipu3_awb.cpp b/src/ipa/ipu3/ipu3_awb.cpp index f8788065..54ce8e67 100644 --- a/src/ipa/ipu3/ipu3_awb.cpp +++ b/src/ipa/ipu3/ipu3_awb.cpp @@ -134,6 +134,31 @@ static const struct ipu3_uapi_ccm_mat_config imguCssCcmDefault = { 0, 0, 8191, 0 }; +/* Default settings for Gamma correction */ +const struct ipu3_uapi_gamma_corr_lut imguCssGammaLut = { { + 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239, 255, 271, 287, + 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479, 495, 511, + 527, 543, 559, 575, 591, 607, 623, 639, 655, 671, 687, 703, 719, 735, + 751, 767, 783, 799, 815, 831, 847, 863, 879, 895, 911, 927, 943, 959, + 975, 991, 1007, 1023, 1039, 1055, 1071, 1087, 1103, 1119, 1135, 1151, + 1167, 1183, 1199, 1215, 1231, 1247, 1263, 1279, 1295, 1311, 1327, 1343, + 1359, 1375, 1391, 1407, 1423, 1439, 1455, 1471, 1487, 1503, 1519, 1535, + 1551, 1567, 1583, 1599, 1615, 1631, 1647, 1663, 1679, 1695, 1711, 1727, + 1743, 1759, 1775, 1791, 1807, 1823, 1839, 1855, 1871, 1887, 1903, 1919, + 1935, 1951, 1967, 1983, 1999, 2015, 2031, 2047, 2063, 2079, 2095, 2111, + 2143, 2175, 2207, 2239, 2271, 2303, 2335, 2367, 2399, 2431, 2463, 2495, + 2527, 2559, 2591, 2623, 2655, 2687, 2719, 2751, 2783, 2815, 2847, 2879, + 2911, 2943, 2975, 3007, 3039, 3071, 3103, 3135, 3167, 3199, 3231, 3263, + 3295, 3327, 3359, 3391, 3423, 3455, 3487, 3519, 3551, 3583, 3615, 3647, + 3679, 3711, 3743, 3775, 3807, 3839, 3871, 3903, 3935, 3967, 3999, 4031, + 4063, 4095, 4127, 4159, 4223, 4287, 4351, 4415, 4479, 4543, 4607, 4671, + 4735, 4799, 4863, 4927, 4991, 5055, 5119, 5183, 5247, 5311, 5375, 5439, + 5503, 5567, 5631, 5695, 5759, 5823, 5887, 5951, 6015, 6079, 6143, 6207, + 6271, 6335, 6399, 6463, 6527, 6591, 6655, 6719, 6783, 6847, 6911, 6975, + 7039, 7103, 7167, 7231, 7295, 7359, 7423, 7487, 7551, 7615, 7679, 7743, + 7807, 7871, 7935, 7999, 8063, 8127, 8191 +} }; + IPU3Awb::IPU3Awb() : Algorithm() { @@ -174,6 +199,7 @@ void IPU3Awb::initialise(ipu3_uapi_params ¶ms, const Size &bdsOutputSize, st params.acc_param.ccm = imguCssCcmDefault; params.use.acc_gamma = 1; + params.acc_param.gamma.gc_lut = imguCssGammaLut; params.acc_param.gamma.gc_ctrl.enable = 1; zones_.reserve(kAwbStatsSizeX * kAwbStatsSizeY);