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

Commit a9a56507 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: vidc: Fix encoder input extradata size calculation"

parents 855160f6 da153904
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -1106,7 +1106,7 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst)
	}

	buff_req_buffer->buffer_size =
		msm_vidc_calculate_enc_input_extra_size(inst);
		msm_vidc_calculate_enc_input_extra_size(inst, 0);
	inst->bufq[OUTPUT_PORT].plane_sizes[1] =
		buff_req_buffer->buffer_size;

@@ -1222,6 +1222,7 @@ int msm_venc_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
	int rc = 0;
	int i = 0;
	struct msm_vidc_format *fmt = NULL;
	struct v4l2_ctrl *extradata_ctrl;

	if (!inst || !f) {
		dprintk(VIDC_ERR,
@@ -1304,8 +1305,11 @@ int msm_venc_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
		 */
		inst->bufq[fmt->type].plane_sizes[0] =
			msm_vidc_calculate_enc_input_frame_size(inst);
		extradata_ctrl = get_ctrl(inst,
			V4L2_CID_MPEG_VIDC_VIDEO_EXTRADATA);
		inst->bufq[fmt->type].plane_sizes[1] =
			msm_vidc_calculate_enc_input_extra_size(inst);
			msm_vidc_calculate_enc_input_extra_size(inst,
				extradata_ctrl->val);
		f->fmt.pix_mp.num_planes = inst->bufq[fmt->type].num_planes;
		for (i = 0; i < inst->bufq[fmt->type].num_planes; i++) {
			f->fmt.pix_mp.plane_fmt[i].sizeimage =
@@ -1601,7 +1605,8 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
			}

			buff_req_buffer->buffer_size =
				msm_vidc_calculate_enc_input_extra_size(inst);
				msm_vidc_calculate_enc_input_extra_size(inst,
					ctrl->val);
			inst->bufq[OUTPUT_PORT].plane_sizes[1] =
					buff_req_buffer->buffer_size;
		}
+2 −6
Original line number Diff line number Diff line
@@ -854,18 +854,14 @@ static inline u32 ROI_EXTRADATA_SIZE(
	return (((lcu_width + 7) >> 3) << 3) * lcu_height * 2;
}

u32 msm_vidc_calculate_enc_input_extra_size(struct msm_vidc_inst *inst)
u32 msm_vidc_calculate_enc_input_extra_size(struct msm_vidc_inst *inst,
	u32 extra_types)
{
	u32 size = 0;
	u32 width = inst->prop.width[OUTPUT_PORT];
	u32 height = inst->prop.height[OUTPUT_PORT];
	u32 extradata_count = 0;
	u32 extra_types;
	struct v4l2_ctrl *extradata_ctrl;

	extradata_ctrl = get_ctrl(inst,
			V4L2_CID_MPEG_VIDC_VIDEO_EXTRADATA);
	extra_types = extradata_ctrl->val;
	/* Add size for default extradata */
	size += sizeof(struct msm_vidc_enc_cvp_metadata_payload);
	extradata_count++;
+2 −1
Original line number Diff line number Diff line
@@ -34,7 +34,8 @@ u32 msm_vidc_calculate_dec_output_frame_size(struct msm_vidc_inst *inst);
u32 msm_vidc_calculate_dec_output_extra_size(struct msm_vidc_inst *inst);
u32 msm_vidc_calculate_enc_input_frame_size(struct msm_vidc_inst *inst);
u32 msm_vidc_calculate_enc_output_frame_size(struct msm_vidc_inst *inst);
u32 msm_vidc_calculate_enc_input_extra_size(struct msm_vidc_inst *inst);
u32 msm_vidc_calculate_enc_input_extra_size(struct msm_vidc_inst *inst,
	u32 extra_types);
u32 msm_vidc_calculate_enc_output_extra_size(struct msm_vidc_inst *inst);
u32 msm_vidc_set_buffer_count_for_thumbnail(struct msm_vidc_inst *inst);