Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 816c3cbc authored by Deepak Kushwah's avatar Deepak Kushwah Committed by Gerrit - the friendly Code Review server
Browse files

msm: vidc: add support for maximum bitrate rate control mode



Add support for maximum bitrate rate control mode which will be
enabled by low bitrate applications to get better Video quality.

CRs-Fixed: 1043369
Change-Id: I20253a0f0762982fe7d7cb0bde9f64f58a8068fb
Signed-off-by: default avatarDeepak Kushwah <dkushwah@codeaurora.org>
parent c4873787
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1448,6 +1448,12 @@ int create_pkt_cmd_session_set_property(
		case HAL_RATE_CONTROL_VBR_VFR:
			pkt->rg_property_data[1] = HFI_RATE_CONTROL_VBR_VFR;
			break;
		case HAL_RATE_CONTROL_MBR_CFR:
			pkt->rg_property_data[1] = HFI_RATE_CONTROL_MBR_CFR;
			break;
		case HAL_RATE_CONTROL_MBR_VFR:
			pkt->rg_property_data[1] = HFI_RATE_CONTROL_MBR_VFR;
			break;
		default:
			dprintk(VIDC_ERR,
					"Invalid Rate control setting: %p\n",
+10 −2
Original line number Diff line number Diff line
@@ -73,6 +73,8 @@ static const char *const mpeg_video_rate_control[] = {
	"VBR CFR",
	"CBR VFR",
	"CBR CFR",
	"MBR CFR",
	"MBR VFR",
	NULL
};

@@ -233,7 +235,7 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
		.name = "Video Framerate and Bitrate Control",
		.type = V4L2_CTRL_TYPE_MENU,
		.minimum = V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_OFF,
		.maximum = V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_CBR_CFR,
		.maximum = V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_MBR_VFR,
		.default_value = V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_OFF,
		.step = 0,
		.menu_skip_mask = ~(
@@ -241,7 +243,9 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
		(1 << V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_VBR_VFR) |
		(1 << V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_VBR_CFR) |
		(1 << V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_CBR_VFR) |
		(1 << V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_CBR_CFR)
		(1 << V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_CBR_CFR) |
		(1 << V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_MBR_CFR) |
		(1 << V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_MBR_VFR)
		),
		.qmenu = mpeg_video_rate_control,
	},
@@ -2200,10 +2204,14 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
			case V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_VBR_CFR:
				update_ctrl.val =
					V4L2_MPEG_VIDEO_BITRATE_MODE_VBR;
				break;
			case V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_CBR_VFR:
			case V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_CBR_CFR:
			case V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_MBR_CFR:
			case V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_MBR_VFR:
				update_ctrl.val =
					V4L2_MPEG_VIDEO_BITRATE_MODE_CBR;
				break;
			}

			final_mode = ctrl->val;
+3 −0
Original line number Diff line number Diff line
@@ -363,6 +363,9 @@ struct hfi_hybrid_hierp {
#define HFI_RATE_CONTROL_VBR_CFR	(HFI_OX_BASE + 0x3)
#define HFI_RATE_CONTROL_CBR_VFR	(HFI_OX_BASE + 0x4)
#define HFI_RATE_CONTROL_CBR_CFR	(HFI_OX_BASE + 0x5)
#define HFI_RATE_CONTROL_MBR_CFR	(HFI_OX_BASE + 0x6)
#define HFI_RATE_CONTROL_MBR_VFR	(HFI_OX_BASE + 0x7)


struct hfi_uncompressed_plane_actual_constraints_info {
	u32 buffer_type;
+2 −0
Original line number Diff line number Diff line
@@ -710,6 +710,8 @@ enum hal_rate_control {
	HAL_RATE_CONTROL_VBR_CFR,
	HAL_RATE_CONTROL_CBR_VFR,
	HAL_RATE_CONTROL_CBR_CFR,
	HAL_RATE_CONTROL_MBR_CFR,
	HAL_RATE_CONTROL_MBR_VFR,
	HAL_UNUSED_RC = 0x10000000,
};

+6 −0
Original line number Diff line number Diff line
@@ -702,7 +702,13 @@ enum v4l2_mpeg_vidc_video_rate_control {
	V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_VBR_CFR = 2,
	V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_CBR_VFR = 3,
	V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_CBR_CFR = 4,
	V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_MBR_CFR = 5,
	V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_MBR_VFR = 6,
};
#define V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_MBR_CFR	\
			V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_MBR_CFR
#define V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_MBR_VFR	\
			V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_MBR_VFR

#define V4L2_CID_MPEG_VIDC_VIDEO_ROTATION (V4L2_CID_MPEG_MSM_VIDC_BASE+14)
enum v4l2_mpeg_vidc_video_rotation {