lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 9 Feb 2022 10:06:28 +0100
From:   Paul Menzel <pmenzel@...gen.mpg.de>
To:     Jammy Huang <jammy_huang@...eedtech.com>
Cc:     eajames@...ux.ibm.com, mchehab@...nel.org, joel@....id.au,
        andrew@...id.au, linux-media@...r.kernel.org,
        openbmc@...ts.ozlabs.org, linux-arm-kernel@...ts.infradead.org,
        linux-aspeed@...ts.ozlabs.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] media: aspeed: Use full swing as JFIF to fix incorrect
 color

Dear Jammy,


Am 09.02.22 um 09:42 schrieb Jammy Huang:
> Current settings for video capture rgb-2-yuv is BT.601(studio swing),
> but JFIF uses BT.601(full swing) to deocde. This mismatch will lead
> to incorrect color. For example, input RGB value, (0, 0, 255), will
> become (16, 16, 235) after jpg decoded.
> 
> Add an enum, aspeed_video_capture_format, to define VR008[7:6]
> capture format and correct default settings for video capture to fix
> the problem.

Maybe quote the datasheet:

VR008[7:6] will decide the data format for video capture:
00: CCIR601 studio swing compliant YUV format
01: CCIR601 full swing compliant YUV format
10: RGB format
11: Gray color mode

> Signed-off-by: Jammy Huang <jammy_huang@...eedtech.com>
> ---
> v2:
>   - update subject from 'media: aspeed: Fix-incorrect-color' to
>     'media: aspeed: Use full swing as JFIF to fix incorrect'
>   - update commit message
>   - add enum, aspeed_video_capture_format, to define VR008[7:6]
> ---
>   drivers/media/platform/aspeed-video.c | 14 +++++++++++---
>   1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
> index eb9c17ac0e14..5bcf60b4628b 100644
> --- a/drivers/media/platform/aspeed-video.c
> +++ b/drivers/media/platform/aspeed-video.c
> @@ -86,8 +86,6 @@
>   #define  VE_CTRL_SOURCE			BIT(2)
>   #define  VE_CTRL_INT_DE			BIT(4)
>   #define  VE_CTRL_DIRECT_FETCH		BIT(5)
> -#define  VE_CTRL_YUV			BIT(6)
> -#define  VE_CTRL_RGB			BIT(7)
>   #define  VE_CTRL_CAPTURE_FMT		GENMASK(7, 6)
>   #define  VE_CTRL_AUTO_OR_CURSOR		BIT(8)
>   #define  VE_CTRL_CLK_INVERSE		BIT(11)
> @@ -202,6 +200,15 @@ enum {
>   	VIDEO_CLOCKS_ON,
>   };
>   
> +// for VE_CTRL_CAPTURE_FMT
> +enum aspeed_video_capture_format {
> +	VIDEO_CAP_FMT_YUV_STUDIO = 0,

Maybe also append `_SWING`?

> +	VIDEO_CAP_FMT_YUV_FULL,
> +	VIDEO_CAP_FMT_RGB,
> +	VIDEO_CAP_FMT_GRAY,
> +	VIDEO_CAP_FMT_MAX
> +};
> +
>   struct aspeed_video_addr {
>   	unsigned int size;
>   	dma_addr_t dma;
> @@ -1089,7 +1096,8 @@ static void aspeed_video_init_regs(struct aspeed_video *video)
>   	u32 comp_ctrl = VE_COMP_CTRL_RSVD |
>   		FIELD_PREP(VE_COMP_CTRL_DCT_LUM, video->jpeg_quality) |
>   		FIELD_PREP(VE_COMP_CTRL_DCT_CHR, video->jpeg_quality | 0x10);
> -	u32 ctrl = VE_CTRL_AUTO_OR_CURSOR;
> +	u32 ctrl = VE_CTRL_AUTO_OR_CURSOR |
> +		FIELD_PREP(VE_CTRL_CAPTURE_FMT, VIDEO_CAP_FMT_YUV_FULL);
>   	u32 seq_ctrl = video->jpeg_mode;
>   
>   	if (video->frame_rate)

Reviewed-by: Paul Menzel <pmenzel@...gen.mpg.de>


Kind regards,

Paul

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ