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

Commit d0054626 authored by Chinmay Sawarkar's avatar Chinmay Sawarkar
Browse files

msm: vidc: Implement set property for vui timing info



Implements setprop for V4L2_CID_MPEG_VIDC_VIDEO_VUI_TIMING_INFO.
Renames HAL structures and macros according to the new HFi api.
VUI timing info is no longer limited to H264.

CRs-Fixed: 2042884
Change-Id: Ia2b0934f0ea3c760e2646f55174ec5068ba5608c
Signed-off-by: default avatarChinmay Sawarkar <chinmays@codeaurora.org>
parent 0f7cf2e0
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -1480,22 +1480,22 @@ int create_pkt_cmd_session_set_property(
		pkt->size += sizeof(u32) + sizeof(struct hfi_enable);
		break;
	}
	case HAL_PARAM_VENC_H264_VUI_TIMING_INFO:
	case HAL_PARAM_VENC_VUI_TIMING_INFO:
	{
		struct hfi_h264_vui_timing_info *hfi;
		struct hal_h264_vui_timing_info *timing_info = pdata;
		struct hfi_vui_timing_info *hfi;
		struct hal_vui_timing_info *timing_info = pdata;

		pkt->rg_property_data[0] =
			HFI_PROPERTY_PARAM_VENC_H264_VUI_TIMING_INFO;
			HFI_PROPERTY_PARAM_VENC_VUI_TIMING_INFO;

		hfi = (struct hfi_h264_vui_timing_info *)&pkt->
		hfi = (struct hfi_vui_timing_info *)&pkt->
			rg_property_data[1];
		hfi->enable = timing_info->enable;
		hfi->fixed_frame_rate = timing_info->fixed_frame_rate;
		hfi->time_scale = timing_info->time_scale;

		pkt->size += sizeof(u32) +
			sizeof(struct hfi_h264_vui_timing_info);
			sizeof(struct hfi_vui_timing_info);
		break;
	}
	case HAL_CONFIG_VPE_DEINTERLACE:
+31 −0
Original line number Diff line number Diff line
@@ -1140,6 +1140,7 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
	int max_hierp_layers;
	int baselayerid = 0;
	struct hal_video_signal_info signal_info = {0};
	struct hal_vui_timing_info vui_timing_info = {0};
	enum hal_iframesize_type iframesize_type = HAL_IFRAMESIZE_TYPE_DEFAULT;

	if (!inst || !inst->core || !inst->core->device) {
@@ -1865,6 +1866,36 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
		pdata = &enable;
		break;
	}
	case V4L2_CID_MPEG_VIDC_VIDEO_VUI_TIMING_INFO:
	{
		struct v4l2_ctrl *rc_mode;
		bool cfr = false;

		property_id = HAL_PARAM_VENC_VUI_TIMING_INFO;
		pdata = &vui_timing_info;

		if (ctrl->val != V4L2_MPEG_VIDC_VIDEO_VUI_TIMING_INFO_ENABLED) {
			vui_timing_info.enable = 0;
			break;
		}

		rc_mode = TRY_GET_CTRL(V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL);

		switch (rc_mode->val) {
		case V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_VBR_CFR:
		case V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_CBR_CFR:
		case V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_MBR_CFR:
			cfr = true;
			break;
		default:
			cfr = false;
		}

		vui_timing_info.enable = 1;
		vui_timing_info.fixed_frame_rate = cfr;
		vui_timing_info.time_scale = NSEC_PER_SEC;
		break;
	}
	default:
		dprintk(VIDC_ERR, "Unsupported index: %x\n", ctrl->id);
		rc = -ENOTSUPP;
+3 −3
Original line number Diff line number Diff line
@@ -187,7 +187,7 @@ enum hal_property {
	HAL_PARAM_VDEC_SYNC_FRAME_DECODE,
	HAL_PARAM_VENC_H264_ENTROPY_CABAC_MODEL,
	HAL_CONFIG_VENC_MAX_BITRATE,
	HAL_PARAM_VENC_H264_VUI_TIMING_INFO,
	HAL_PARAM_VENC_VUI_TIMING_INFO,
	HAL_PARAM_VENC_GENERATE_AUDNAL,
	HAL_PARAM_BUFFER_ALLOC_MODE,
	HAL_PARAM_VDEC_FRAME_ASSEMBLY,
@@ -813,7 +813,7 @@ struct hal_timestamp_scale {
};


struct hal_h264_vui_timing_info {
struct hal_vui_timing_info {
	u32 enable;
	u32 fixed_frame_rate;
	u32 time_scale;
@@ -1036,7 +1036,7 @@ union hal_get_property {
	struct hal_codec_supported codec_supported;
	struct hal_multi_view_select multi_view_select;
	struct hal_timestamp_scale timestamp_scale;
	struct hal_h264_vui_timing_info h264_vui_timing_info;
	struct hal_vui_timing_info vui_timing_info;
	struct hal_preserve_text_quality preserve_text_quality;
	struct hal_buffer_info buffer_info;
	struct hal_buffer_alloc_mode buffer_alloc_mode;
+2 −2
Original line number Diff line number Diff line
@@ -283,7 +283,7 @@ struct hfi_buffer_info {
	 (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x01C)
#define HFI_PROPERTY_PARAM_VENC_VIDEO_SIGNAL_INFO	\
	(HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x01D)
#define HFI_PROPERTY_PARAM_VENC_H264_VUI_TIMING_INFO	\
#define HFI_PROPERTY_PARAM_VENC_VUI_TIMING_INFO	\
	(HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x01E)
#define HFI_PROPERTY_PARAM_VENC_LOW_LATENCY_MODE	\
	(HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x022)
@@ -589,7 +589,7 @@ struct hfi_video_signal_metadata {
	u32 matrix_coeffs;
};

struct hfi_h264_vui_timing_info {
struct hfi_vui_timing_info {
	u32 enable;
	u32 fixed_frame_rate;
	u32 time_scale;