media: rockchip: rga: Introduce color fmt macros and refactor CSC mode logic
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>
This commit is contained in:
parent
18ffec7505
commit
ded874ece2
|
@ -200,22 +200,19 @@ static void rga_cmd_set_trans_info(struct rga_ctx *ctx)
|
|||
dst_info.data.format = ctx->out.fmt->hw_format;
|
||||
dst_info.data.swap = ctx->out.fmt->color_swap;
|
||||
|
||||
if (ctx->in.fmt->hw_format >= RGA_COLOR_FMT_YUV422SP) {
|
||||
if (ctx->out.fmt->hw_format < RGA_COLOR_FMT_YUV422SP) {
|
||||
switch (ctx->in.colorspace) {
|
||||
case V4L2_COLORSPACE_REC709:
|
||||
src_info.data.csc_mode =
|
||||
RGA_SRC_CSC_MODE_BT709_R0;
|
||||
break;
|
||||
default:
|
||||
src_info.data.csc_mode =
|
||||
RGA_SRC_CSC_MODE_BT601_R0;
|
||||
break;
|
||||
}
|
||||
if (RGA_COLOR_FMT_IS_YUV(ctx->in.fmt->hw_format) &&
|
||||
RGA_COLOR_FMT_IS_RGB(ctx->out.fmt->hw_format)) {
|
||||
switch (ctx->in.colorspace) {
|
||||
case V4L2_COLORSPACE_REC709:
|
||||
src_info.data.csc_mode = RGA_SRC_CSC_MODE_BT709_R0;
|
||||
break;
|
||||
default:
|
||||
src_info.data.csc_mode = RGA_SRC_CSC_MODE_BT601_R0;
|
||||
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) {
|
||||
case V4L2_COLORSPACE_REC709:
|
||||
dst_info.data.csc_mode = RGA_SRC_CSC_MODE_BT709_R0;
|
||||
|
|
|
@ -95,6 +95,11 @@
|
|||
#define RGA_COLOR_FMT_CP_8BPP 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_RB_SWAP 1
|
||||
#define RGA_COLOR_ALPHA_SWAP 2
|
||||
|
|
Loading…
Reference in New Issue