[PATCH v1 4/4] media: chips-media: wave5: Add Support for Packed YUV422 Formats

Jackson.lee posted 4 patches 1 week, 3 days ago
[PATCH v1 4/4] media: chips-media: wave5: Add Support for Packed YUV422 Formats
Posted by Jackson.lee 1 week, 3 days ago
From: Jackson Lee <jackson.lee@chipsnmedia.com>

Wave5 encoder is capable of reading in numerous raw pixel formats.
Expose these formats and properly configure encoder if selected.

Signed-off-by: Jackson Lee <jackson.lee@chipsnmedia.com>
Signed-off-by: Nas Chung <nas.chung@chipsnmedia.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
---
 .../platform/chips-media/wave5/wave5-helper.h |  2 +-
 .../chips-media/wave5/wave5-vpu-enc.c         | 32 +++++++++++++++++++
 2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/chips-media/wave5/wave5-helper.h b/drivers/media/platform/chips-media/wave5/wave5-helper.h
index d61fdbda359d..e6f241012c3b 100644
--- a/drivers/media/platform/chips-media/wave5/wave5-helper.h
+++ b/drivers/media/platform/chips-media/wave5/wave5-helper.h
@@ -11,7 +11,7 @@
 #include "wave5-vpu.h"
 
 #define FMT_TYPES	2
-#define MAX_FMTS	12
+#define MAX_FMTS	16
 
 const char *state_to_str(enum vpu_instance_state state);
 void wave5_cleanup_instance(struct vpu_instance *inst, struct file *filp);
diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
index 775beeb10fd4..ad63609cbe83 100644
--- a/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
+++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
@@ -90,6 +90,22 @@ static const struct vpu_format enc_fmt_list[FMT_TYPES][MAX_FMTS] = {
 			.v4l2_pix_fmt = V4L2_PIX_FMT_NV61M,
 			.v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
 		},
+		{
+			.v4l2_pix_fmt = V4L2_PIX_FMT_YUYV,
+			.v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
+		},
+		{
+			.v4l2_pix_fmt = V4L2_PIX_FMT_YVYU,
+			.v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
+		},
+		{
+			.v4l2_pix_fmt = V4L2_PIX_FMT_UYVY,
+			.v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
+		},
+		{
+			.v4l2_pix_fmt = V4L2_PIX_FMT_VYUY,
+			.v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
+		},
 	}
 };
 
@@ -1161,6 +1177,22 @@ static int wave5_set_enc_openparam(struct enc_open_param *open_param,
 	else
 		open_param->src_format = FORMAT_420;
 
+	switch (info->format) {
+	case V4L2_PIX_FMT_YUYV:
+		open_param->packed_format = PACKED_YUYV;
+		break;
+	case V4L2_PIX_FMT_YVYU:
+		open_param->packed_format = PACKED_YVYU;
+		break;
+	case V4L2_PIX_FMT_UYVY:
+		open_param->packed_format = PACKED_UYVY;
+		break;
+	case V4L2_PIX_FMT_VYUY:
+		open_param->packed_format = PACKED_VYUY;
+		break;
+	default:
+		break;
+	}
 	open_param->wave_param.gop_preset_idx = PRESET_IDX_IPP_SINGLE;
 	open_param->wave_param.hvs_qp_scale = 2;
 	open_param->wave_param.hvs_max_delta_qp = 10;
-- 
2.43.0
Re: [PATCH v1 4/4] media: chips-media: wave5: Add Support for Packed YUV422 Formats
Posted by Brandon Brnich 1 week, 2 days ago
Hi Jackson

On 3/24/26 00:04, Jackson.lee wrote:
> From: Jackson Lee <jackson.lee@chipsnmedia.com>
> 
> Wave5 encoder is capable of reading in numerous raw pixel formats.
> Expose these formats and properly configure encoder if selected.
> 
> Signed-off-by: Jackson Lee <jackson.lee@chipsnmedia.com>
> Signed-off-by: Nas Chung <nas.chung@chipsnmedia.com>
> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>

Even though this already has Nicolas's review, wanted to add my tested 
by as I have validated this with latest kernel and gstreamer version 
1.26.9. Encoder is properly reading these raw formats!

Tested-by: Brandon Brnich <b-brnich@ti.com>

> ---
>   .../platform/chips-media/wave5/wave5-helper.h |  2 +-
>   .../chips-media/wave5/wave5-vpu-enc.c         | 32 +++++++++++++++++++
>   2 files changed, 33 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/platform/chips-media/wave5/wave5-helper.h b/drivers/media/platform/chips-media/wave5/wave5-helper.h
> index d61fdbda359d..e6f241012c3b 100644
> --- a/drivers/media/platform/chips-media/wave5/wave5-helper.h
> +++ b/drivers/media/platform/chips-media/wave5/wave5-helper.h
> @@ -11,7 +11,7 @@
>   #include "wave5-vpu.h"
>   
>   #define FMT_TYPES	2
> -#define MAX_FMTS	12
> +#define MAX_FMTS	16
>   
>   const char *state_to_str(enum vpu_instance_state state);
>   void wave5_cleanup_instance(struct vpu_instance *inst, struct file *filp);
> diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
> index 775beeb10fd4..ad63609cbe83 100644
> --- a/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
> +++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
> @@ -90,6 +90,22 @@ static const struct vpu_format enc_fmt_list[FMT_TYPES][MAX_FMTS] = {
>   			.v4l2_pix_fmt = V4L2_PIX_FMT_NV61M,
>   			.v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
>   		},
> +		{
> +			.v4l2_pix_fmt = V4L2_PIX_FMT_YUYV,
> +			.v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
> +		},
> +		{
> +			.v4l2_pix_fmt = V4L2_PIX_FMT_YVYU,
> +			.v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
> +		},
> +		{
> +			.v4l2_pix_fmt = V4L2_PIX_FMT_UYVY,
> +			.v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
> +		},
> +		{
> +			.v4l2_pix_fmt = V4L2_PIX_FMT_VYUY,
> +			.v4l2_frmsize = &enc_frmsize[VPU_FMT_TYPE_RAW],
> +		},
>   	}
>   };
>   
> @@ -1161,6 +1177,22 @@ static int wave5_set_enc_openparam(struct enc_open_param *open_param,
>   	else
>   		open_param->src_format = FORMAT_420;
>   
> +	switch (info->format) {
> +	case V4L2_PIX_FMT_YUYV:
> +		open_param->packed_format = PACKED_YUYV;
> +		break;
> +	case V4L2_PIX_FMT_YVYU:
> +		open_param->packed_format = PACKED_YVYU;
> +		break;
> +	case V4L2_PIX_FMT_UYVY:
> +		open_param->packed_format = PACKED_UYVY;
> +		break;
> +	case V4L2_PIX_FMT_VYUY:
> +		open_param->packed_format = PACKED_VYUY;
> +		break;
> +	default:
> +		break;
> +	}
>   	open_param->wave_param.gop_preset_idx = PRESET_IDX_IPP_SINGLE;
>   	open_param->wave_param.hvs_qp_scale = 2;
>   	open_param->wave_param.hvs_max_delta_qp = 10;