[PATCH 1/2] apps: common: dng_writer: Fix thumbnail generation on BE machines

Umang Jain umang.jain at ideasonboard.com
Sun Jun 30 06:55:51 CEST 2024


Hi Laurent,

Thank you for the patch

On 29/06/24 3:05 am, Laurent Pinchart wrote:
> The 16-bit padded raw 10 and raw 12 formats are stored in memory in
> little endian order, regardless of the machine's endianness. Swap the
> 16-bit values on big-endian machines when reading pixels from memory to
> generate thumbnails.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

LGTM,

Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
> ---
>   src/apps/common/dng_writer.cpp | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/src/apps/common/dng_writer.cpp b/src/apps/common/dng_writer.cpp
> index 9241f23fb806..50db5eb33c83 100644
> --- a/src/apps/common/dng_writer.cpp
> +++ b/src/apps/common/dng_writer.cpp
> @@ -8,6 +8,7 @@
>   #include "dng_writer.h"
>   
>   #include <algorithm>
> +#include <endian.h>
>   #include <iostream>
>   #include <map>
>   
> @@ -185,7 +186,8 @@ void thumbScanlineRaw(const FormatInfo &info, void *output, const void *input,
>   
>   	/* Simple averaging that produces greyscale RGB values. */
>   	for (unsigned int x = 0; x < width; x++) {
> -		uint16_t value = (in[0] + in[1] + in2[0] + in2[1]) >> 2;
> +		uint16_t value = (le16toh(in[0]) + le16toh(in[1]) +
> +				  le16toh(in2[0]) + le16toh(in2[1])) >> 2;
>   		value = value >> shift;
>   		*out++ = value;
>   		*out++ = value;



More information about the libcamera-devel mailing list