media: rockchip: rga: Introduce color fmt macros and refactor CSC mode logic
[ Upstream commit ded874ece29d3fe2abd3775810a06056067eb68c ] This introduces two macros: RGA_COLOR_FMT_IS_YUV and RGA_COLOR_FMT_IS_RGB which allow quick checking of the colorspace familily of a RGA color format. These macros are then used to refactor the logic for CSC mode selection. The two nested tests for input colorspace are simplified into a single one, with a logical and, making the whole more readable. Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
2cb3b14eb6
commit
a676d83b8f
@@ -208,22 +208,19 @@ static void rga_cmd_set_trans_info(struct rga_ctx *ctx)
|
|||||||
dst_info.data.format = ctx->out.fmt->hw_format;
|
dst_info.data.format = ctx->out.fmt->hw_format;
|
||||||
dst_info.data.swap = ctx->out.fmt->color_swap;
|
dst_info.data.swap = ctx->out.fmt->color_swap;
|
||||||
|
|
||||||
if (ctx->in.fmt->hw_format >= RGA_COLOR_FMT_YUV422SP) {
|
if (RGA_COLOR_FMT_IS_YUV(ctx->in.fmt->hw_format) &&
|
||||||
if (ctx->out.fmt->hw_format < RGA_COLOR_FMT_YUV422SP) {
|
RGA_COLOR_FMT_IS_RGB(ctx->out.fmt->hw_format)) {
|
||||||
switch (ctx->in.colorspace) {
|
switch (ctx->in.colorspace) {
|
||||||
case V4L2_COLORSPACE_REC709:
|
case V4L2_COLORSPACE_REC709:
|
||||||
src_info.data.csc_mode =
|
src_info.data.csc_mode = RGA_SRC_CSC_MODE_BT709_R0;
|
||||||
RGA_SRC_CSC_MODE_BT709_R0;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
src_info.data.csc_mode =
|
src_info.data.csc_mode = RGA_SRC_CSC_MODE_BT601_R0;
|
||||||
RGA_SRC_CSC_MODE_BT601_R0;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (ctx->out.fmt->hw_format >= RGA_COLOR_FMT_YUV422SP) {
|
if (RGA_COLOR_FMT_IS_YUV(ctx->out.fmt->hw_format)) {
|
||||||
switch (ctx->out.colorspace) {
|
switch (ctx->out.colorspace) {
|
||||||
case V4L2_COLORSPACE_REC709:
|
case V4L2_COLORSPACE_REC709:
|
||||||
dst_info.data.csc_mode = RGA_SRC_CSC_MODE_BT709_R0;
|
dst_info.data.csc_mode = RGA_SRC_CSC_MODE_BT709_R0;
|
||||||
|
|||||||
@@ -103,6 +103,11 @@
|
|||||||
#define RGA_COLOR_FMT_CP_8BPP 15
|
#define RGA_COLOR_FMT_CP_8BPP 15
|
||||||
#define RGA_COLOR_FMT_MASK 15
|
#define RGA_COLOR_FMT_MASK 15
|
||||||
|
|
||||||
|
#define RGA_COLOR_FMT_IS_YUV(fmt) \
|
||||||
|
(((fmt) >= RGA_COLOR_FMT_YUV422SP) && ((fmt) < RGA_COLOR_FMT_CP_1BPP))
|
||||||
|
#define RGA_COLOR_FMT_IS_RGB(fmt) \
|
||||||
|
((fmt) < RGA_COLOR_FMT_YUV422SP)
|
||||||
|
|
||||||
#define RGA_COLOR_NONE_SWAP 0
|
#define RGA_COLOR_NONE_SWAP 0
|
||||||
#define RGA_COLOR_RB_SWAP 1
|
#define RGA_COLOR_RB_SWAP 1
|
||||||
#define RGA_COLOR_ALPHA_SWAP 2
|
#define RGA_COLOR_ALPHA_SWAP 2
|
||||||
|
|||||||
Reference in New Issue
Block a user