Message ID | 20241219175729.293782-2-stefan.klug@ideasonboard.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
Hi Stefan, Thank you for the patch. On Thu, Dec 19, 2024 at 06:57:18PM +0100, Stefan Klug wrote: > For manual control it is helpful to be able to specify a fixed colour > temperature. It also provides an easy way to apply the temperature > specific CCMs and colour gains that are contained in the tuning files. > > Document this and update the control dependencies. > > Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> > Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > Changes in v6: > - Clarify interdependencies between ColourTemperature, ColourGains and > ColourCorrectionMatrix > > Changes in v5: > - Improve documentation > --- > src/libcamera/control_ids_core.yaml | 38 +++++++++++++++++++++++++++-- > 1 file changed, 36 insertions(+), 2 deletions(-) > > diff --git a/src/libcamera/control_ids_core.yaml b/src/libcamera/control_ids_core.yaml > index 073e0611d47c..1dfaee0c6327 100644 > --- a/src/libcamera/control_ids_core.yaml > +++ b/src/libcamera/control_ids_core.yaml > @@ -298,7 +298,19 @@ controls: > description: | > Enable or disable the AWB. > > + When AWB is enabled, the algorithm estimates the colour temperature of > + the scene and computes colour gains and the colour correction matrix > + automatically. The computed colour temperature, gains and correction > + matrix are reported in metadata. The corresponding controls are ignored > + if set in a request. > + > + When AWB is disabled, the colour temperature, gains and correction > + matrix are not updated automatically and can be set manually in > + requests. > + > + \sa ColourCorrectionMatrix > \sa ColourGains > + \sa ColourTemperature > > # AwbMode needs further attention: > # - Auto-generate max enum value. > @@ -357,17 +369,34 @@ controls: > order. > > ColourGains can only be applied in a Request when the AWB is disabled. > + If ColourGains is set in a request but ColourTemperature is not, the > + implementation shall calculate and set the ColourTemperature based on > + the ColourGains. > > \sa AwbEnable > + \sa ColourTemperature > size: [2] > > - ColourTemperature: > type: int32_t > direction: out > description: | > - Report the estimate of the colour temperature for the frame, in kelvin. > + ColourTemperature of the frame, in kelvin. > + > + ColourTemperature can only be applied in a Request when the AWB is > + disabled. > > - The ColourTemperature control can only be returned in metadata. > + If ColourTemperature is set in a request but ColourGains is not, the > + implementation shall calculate and set the ColourGains based on the > + given ColourTemperature. If ColourTemperature is set (either directly, > + or indirectly by setting ColourGains) but ColourCorrectionMatrix is not, > + the ColourCorrectionMatrix is updated based on the ColourTemperature. > + > + The ColourTemperature used to process the frame is reported in metadata. > + > + \sa AwbEnable > + \sa ColourCorrectionMatrix > + \sa ColourGains > > - Saturation: > type: float > @@ -429,6 +458,11 @@ controls: > stored in conventional reading order in an array of 9 floating point > values. > > + ColourCorrectionMatrix can only be applied in a Request when the AWB is > + disabled. > + > + \sa AwbEnable > + \sa ColourTemperature > size: [3,3] > > - ScalerCrop:
diff --git a/src/libcamera/control_ids_core.yaml b/src/libcamera/control_ids_core.yaml index 073e0611d47c..1dfaee0c6327 100644 --- a/src/libcamera/control_ids_core.yaml +++ b/src/libcamera/control_ids_core.yaml @@ -298,7 +298,19 @@ controls: description: | Enable or disable the AWB. + When AWB is enabled, the algorithm estimates the colour temperature of + the scene and computes colour gains and the colour correction matrix + automatically. The computed colour temperature, gains and correction + matrix are reported in metadata. The corresponding controls are ignored + if set in a request. + + When AWB is disabled, the colour temperature, gains and correction + matrix are not updated automatically and can be set manually in + requests. + + \sa ColourCorrectionMatrix \sa ColourGains + \sa ColourTemperature # AwbMode needs further attention: # - Auto-generate max enum value. @@ -357,17 +369,34 @@ controls: order. ColourGains can only be applied in a Request when the AWB is disabled. + If ColourGains is set in a request but ColourTemperature is not, the + implementation shall calculate and set the ColourTemperature based on + the ColourGains. \sa AwbEnable + \sa ColourTemperature size: [2] - ColourTemperature: type: int32_t direction: out description: | - Report the estimate of the colour temperature for the frame, in kelvin. + ColourTemperature of the frame, in kelvin. + + ColourTemperature can only be applied in a Request when the AWB is + disabled. - The ColourTemperature control can only be returned in metadata. + If ColourTemperature is set in a request but ColourGains is not, the + implementation shall calculate and set the ColourGains based on the + given ColourTemperature. If ColourTemperature is set (either directly, + or indirectly by setting ColourGains) but ColourCorrectionMatrix is not, + the ColourCorrectionMatrix is updated based on the ColourTemperature. + + The ColourTemperature used to process the frame is reported in metadata. + + \sa AwbEnable + \sa ColourCorrectionMatrix + \sa ColourGains - Saturation: type: float @@ -429,6 +458,11 @@ controls: stored in conventional reading order in an array of 9 floating point values. + ColourCorrectionMatrix can only be applied in a Request when the AWB is + disabled. + + \sa AwbEnable + \sa ColourTemperature size: [3,3] - ScalerCrop: