From 27c89341f355630fae3a28abc22e6334fa3ded56 Mon Sep 17 00:00:00 2001
From: Ezequiel Garcia <ezequiel@collabora.com>
Date: Fri, 22 May 2020 09:17:15 -0300
Subject: [PATCH] Clean V4L2 private controls

Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
---
 libv4l-rockchip_v2/libv4l-encplugin-rockchip.c |  9 ++++-----
 libv4l-rockchip_v2/libvepu/h264e/h264e.c       |  2 +-
 libv4l-rockchip_v2/libvepu/rk_vepu_interface.h | 15 +++++++--------
 libv4l-rockchip_v2/libvepu/vp8e/vp8e.c         |  6 +++---
 4 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/libv4l-rockchip_v2/libv4l-encplugin-rockchip.c b/libv4l-rockchip_v2/libv4l-encplugin-rockchip.c
index 244f5db..8dc04be 100644
--- a/libv4l-rockchip_v2/libv4l-encplugin-rockchip.c
+++ b/libv4l-rockchip_v2/libv4l-encplugin-rockchip.c
@@ -228,7 +228,7 @@ static void *plugin_init(int fd)
 	queue_init(&ctx->pending_buffers);
 
 	memset(&ext_ctrl, 0, sizeof(ext_ctrl));
-	ext_ctrl.id = V4L2_CID_PRIVATE_HANTRO_RET_PARAMS;
+	ext_ctrl.id = V4L2_CID_PRIVATE_HANTRO_H1_H264_PARAMS;
 	ret = SYS_IOCTL(fd, VIDIOC_QUERY_EXT_CTRL, &ext_ctrl);
 	if (ret) {
 		goto fail;
@@ -443,14 +443,13 @@ static int ioctl_dqbuf_locked(struct encoder_context *ctx, int fd,
 	if (bytesused) {
 		rk_vepu_assemble_bitstream(ctx->enc, fd, buffer);
 
+		/* TODO: Move to codec specific code? */
 		memset(ctx->get_param_payload, 0, ctx->get_param_payload_size);
 		memset(&v4l2_ctrl, 0, sizeof(v4l2_ctrl));
-		v4l2_ctrl.id = V4L2_CID_PRIVATE_HANTRO_RET_PARAMS;
+		v4l2_ctrl.id = V4L2_CID_PRIVATE_HANTRO_H1_H264_FEEDBACK;
 		v4l2_ctrl.size = ctx->get_param_payload_size;
 		v4l2_ctrl.ptr = ctx->get_param_payload;
 		memset(&ext_ctrls, 0, sizeof(ext_ctrls));
-		/* TODO: change this to config_store after the header is
-		 * updated. */
 		ext_ctrls.ctrl_class = 0;
 		ext_ctrls.count = 1;
 		ext_ctrls.controls = &v4l2_ctrl;
@@ -507,7 +506,7 @@ static int ioctl_s_ext_ctrls_locked(struct encoder_context *ctx, int fd,
 		case V4L2_CID_MPEG_VIDEO_BITRATE:
 			runtime_param_ptr->bitrate = ext_ctrls->controls[i].value;
 			break;
-		case V4L2_CID_MPEG_VIDEO_H264_SPS_PPS_BEFORE_IDR:
+		case V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR:
 			ctx->init_param.h264e.h264_sps_pps_before_idr =
 				ext_ctrls->controls[i].value;
 			break;
diff --git a/libv4l-rockchip_v2/libvepu/h264e/h264e.c b/libv4l-rockchip_v2/libvepu/h264e/h264e.c
index d321da8..dc321ce 100644
--- a/libv4l-rockchip_v2/libvepu/h264e/h264e.c
+++ b/libv4l-rockchip_v2/libvepu/h264e/h264e.c
@@ -490,7 +490,7 @@ static int h264e_init(struct rk_venc *ictx,
 	if (ctx->pps.transform_8x8_mode_flag == 2)
 		ctx->pps.transform_8x8_mode_flag = 1;
 
-	ctx->rk_ctrl_ids[0] = V4L2_CID_PRIVATE_HANTRO_REG_PARAMS;
+	ctx->rk_ctrl_ids[0] = V4L2_CID_PRIVATE_HANTRO_H1_H264_PARAMS;
 
 	h264e_build_stream_header(ictx);
 
diff --git a/libv4l-rockchip_v2/libvepu/rk_vepu_interface.h b/libv4l-rockchip_v2/libvepu/rk_vepu_interface.h
index 9e4eb57..ef523f0 100644
--- a/libv4l-rockchip_v2/libvepu/rk_vepu_interface.h
+++ b/libv4l-rockchip_v2/libvepu/rk_vepu_interface.h
@@ -17,15 +17,14 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#define V4L2_CID_USER_HANTRO_ENCODER_BASE       (V4L2_CID_USER_BASE + 0x2000)
-#define V4L2_CID_PRIVATE_HANTRO_HEADER          (V4L2_CID_USER_HANTRO_ENCODER_BASE + 0)
-#define V4L2_CID_PRIVATE_HANTRO_REG_PARAMS      (V4L2_CID_USER_HANTRO_ENCODER_BASE + 1)
-#define V4L2_CID_PRIVATE_HANTRO_HW_PARAMS       (V4L2_CID_USER_HANTRO_ENCODER_BASE + 2)
-#define V4L2_CID_PRIVATE_HANTRO_RET_PARAMS 	(V4L2_CID_USER_HANTRO_ENCODER_BASE + 3)
+#define V4L2_CID_USER_HANTRO_ENCODER_BASE		(V4L2_CID_USER_BASE + 0x2000)
+#define V4L2_CID_PRIVATE_HANTRO_H1_H264_PARAMS		(V4L2_CID_USER_HANTRO_ENCODER_BASE + 1)
+#define V4L2_CID_PRIVATE_HANTRO_H1_H264_FEEDBACK	(V4L2_CID_USER_HANTRO_ENCODER_BASE + 2)
 
-#ifndef V4L2_CID_MPEG_VIDEO_H264_SPS_PPS_BEFORE_IDR
-#define V4L2_CID_MPEG_VIDEO_H264_SPS_PPS_BEFORE_IDR (V4L2_CID_MPEG_BASE+388)
-#endif
+#define V4L2_CID_PRIVATE_HANTRO_H1_VP8_HEADER		(V4L2_CID_USER_HANTRO_ENCODER_BASE + 10)
+#define V4L2_CID_PRIVATE_HANTRO_H1_VP8_REG_PARAMS	(V4L2_CID_USER_HANTRO_ENCODER_BASE + 11)
+#define V4L2_CID_PRIVATE_HANTRO_H1_VP8_HW_PARAMS	(V4L2_CID_USER_HANTRO_ENCODER_BASE + 12)
+#define V4L2_CID_PRIVATE_HANTRO_H1_VP8_RET_PARAMS	(V4L2_CID_USER_HANTRO_ENCODER_BASE + 13)
 
 /* The maximum number of controls returned by rk_vepu_get_config(). */
 #define MAX_NUM_GET_CONFIG_CTRLS 5
diff --git a/libv4l-rockchip_v2/libvepu/vp8e/vp8e.c b/libv4l-rockchip_v2/libvepu/vp8e/vp8e.c
index 4fc3963..bbd22ee 100644
--- a/libv4l-rockchip_v2/libvepu/vp8e/vp8e.c
+++ b/libv4l-rockchip_v2/libvepu/vp8e/vp8e.c
@@ -88,9 +88,9 @@ static int vp8e_init(struct rk_venc *ictx,
 		return -1;
 	}
 
-	ctx->rk_ctrl_ids[0] = V4L2_CID_PRIVATE_HANTRO_HEADER;
-	ctx->rk_ctrl_ids[1] = V4L2_CID_PRIVATE_HANTRO_REG_PARAMS;
-	ctx->rk_ctrl_ids[2] = V4L2_CID_PRIVATE_HANTRO_HW_PARAMS;
+	ctx->rk_ctrl_ids[0] = V4L2_CID_PRIVATE_HANTRO_H1_VP8_HEADER;
+	ctx->rk_ctrl_ids[1] = V4L2_CID_PRIVATE_HANTRO_H1_VP8_REG_PARAMS;
+	ctx->rk_ctrl_ids[2] = V4L2_CID_PRIVATE_HANTRO_H1_VP8_HW_PARAMS;
 
 	return 0;
 }
-- 
GitLab