[libcamera-devel] [PATCH 3/9] libcamera: bayer_format: Expand documentation

David Plowman david.plowman at raspberrypi.com
Thu Nov 24 14:19:29 CET 2022


Hi Jacopo

Thanks for doing all this!

On Thu, 24 Nov 2022 at 12:12, Jacopo Mondi <jacopo at jmondi.org> wrote:
>
> The current documentation of the BayerFormat::transform() function
> reports examples on the Bayer components ordering transformation for
> horizontal flip (mirroring) but not for vertical flip or for the
> combination of the two.
>
> It might be useful to complete the documentation to eases understanding
> of the transform() function on a sensor's Bayer pattern.
>
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>

Reviewed-by: David Plowman <david.plowman at raspberrypi.com>

Thanks!
David

> ---
>  src/libcamera/bayer_format.cpp | 20 +++++++++++++-------
>  1 file changed, 13 insertions(+), 7 deletions(-)
>
> diff --git a/src/libcamera/bayer_format.cpp b/src/libcamera/bayer_format.cpp
> index fdbc4af1dcc0..dd8109ba85c2 100644
> --- a/src/libcamera/bayer_format.cpp
> +++ b/src/libcamera/bayer_format.cpp
> @@ -367,11 +367,14 @@ BayerFormat BayerFormat::fromPixelFormat(PixelFormat format)
>   * \brief Apply a transform to this BayerFormat
>   * \param[in] t The transform to apply
>   *
> - * Appplying a transform to an image stored in a Bayer format affects the Bayer
> - * order. For example, performing a horizontal flip on the Bayer pattern
> - * RGGB causes the RG rows of pixels to become GR, and the GB rows to become BG.
> - * The transformed image would have a GRBG order. The bit depth and modifiers
> - * are not affected.
> + * Applying a transform to an image stored in a Bayer format affects the Bayer
> + * order. For example, performing a horizontal flip on the Bayer pattern RGGB
> + * causes the RG rows of pixels to become GR, and the GB rows to become BG. The
> + * transformed image would have a GRBG order. Performing a vertical flip on
> + * the Bayer pattern RGGB causes the GB row to be read before the RG one and the
> + * transformed image would have GBRG order. Applying both vertical and
> + * horizontal flips on the Bayer patter RGGB results in transformed images with
> + * BGGR order. The bit depth and modifiers are not affected.
>   *
>   * Horizontal and vertical flips are applied before transpose.
>   *
> @@ -386,8 +389,11 @@ BayerFormat BayerFormat::transform(Transform t) const
>
>         /*
>          * Observe that flipping bit 0 of the Order enum performs a horizontal
> -        * mirror on the Bayer pattern (e.g. RGGB goes to GRBG). Similarly,
> -        * flipping bit 1 performs a vertical mirror operation on it. Hence:
> +        * mirror on the Bayer pattern (e.g. RG/GB goes to GR/BG). Similarly,
> +        * flipping bit 1 performs a vertical mirror operation on it (e.g RG/GB
> +        * goes to GB/RG). Applying both vertical and horizontal flips
> +        * combines vertical and horizontal mirroring on the Bayer pattern
> +        * (e.g. RG/GB goes to BG/GR). Hence:
>          */
>         if (!!(t & Transform::HFlip))
>                 result.order = static_cast<Order>(result.order ^ 1);
> --
> 2.38.1
>


More information about the libcamera-devel mailing list