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

Commit 5bf834b7 authored by Priyanka Gujjula's avatar Priyanka Gujjula
Browse files

msm: vidc: Update num_ref calc and limit max_layer



Limit max number of temporal layers to 4 if hybrid_hp
is not enabled as per POR. Also, inline num_ref
calculations with FW.

Change-Id: Iad1deaf757a8aa3715b2dce861b1454faeed7a39
Signed-off-by: default avatarPriyanka Gujjula <pgujjula@codeaurora.org>
parent 34fa9710
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -3809,6 +3809,12 @@ int msm_venc_set_hp_max_layer(struct msm_vidc_inst *inst)
			__func__);
		return rc;
	}
	if (!inst->hybrid_hp && max_layer->val > 4) {
		update_ctrl(max_layer, 0, inst->sid);
		s_vpr_h(inst->sid,
			"%s: Hier-P requested beyond max capability\n", __func__);
		return 0;
	}

	/*
	 * We send enhancement layer count to FW,
+4 −4
Original line number Diff line number Diff line
@@ -497,13 +497,13 @@ int msm_vidc_get_num_ref_frames(struct msm_vidc_inst *inst)
		codec = get_v4l2_codec(inst);
		/* LTR and B - frame not supported with hybrid HP */
		if (inst->hybrid_hp)
			num_ref = (max_layer->val - 1);
			num_ref = max_layer->val >> 1;
		else if (codec == V4L2_PIX_FMT_HEVC)
			num_ref = ((max_layer->val + 1) / 2) + ltr_count;
		else if ((codec == V4L2_PIX_FMT_H264) && (max_layer->val <= 4))
			num_ref = ((1 << (max_layer->val - 1)) - 1) + ltr_count;
		else if ((codec == V4L2_PIX_FMT_H264) && (max_layer->val < 4))
			num_ref = (max_layer->val - 1) + ltr_count;
		else
			num_ref = ((max_layer->val + 1) / 2) + ltr_count;
			num_ref = max_layer->val + ltr_count;
	}

	if (is_hier_b_session(inst)) {