Explorar o código

Revert "video: driver: always caliberate gop size"

This reverts commit b35579ad54a33d0dbde55579f9442064a7e0c883.

Change-Id: I5ba0b244f53068ae6f0d3225b278e1ddafc360c5
Signed-off-by: Darshana Patil <[email protected]>
Darshana Patil %!s(int64=4) %!d(string=hai) anos
pai
achega
65636fd2ad

+ 6 - 3
driver/platform/waipio/src/msm_vidc_waipio.c

@@ -744,7 +744,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
 		HFI_PROP_LAYER_COUNT,
 		CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
 			CAP_FLAG_DYNAMIC_ALLOWED,
-		{BITRATE_MODE},
+		{BITRATE_MODE, META_EVA_STATS},
 		{GOP_SIZE, B_FRAME, BIT_RATE},
 		msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type},
 
@@ -754,7 +754,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
 		HFI_PROP_LAYER_COUNT,
 		CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
 			CAP_FLAG_DYNAMIC_ALLOWED,
-		{BITRATE_MODE},
+		{BITRATE_MODE, META_EVA_STATS},
 		{GOP_SIZE, B_FRAME, BIT_RATE},
 		msm_vidc_adjust_layer_count, msm_vidc_set_layer_count_and_type},
 
@@ -1330,7 +1330,10 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
 		V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
 		1, V4L2_MPEG_MSM_VIDC_DISABLE,
 		V4L2_CID_MPEG_VIDC_METADATA_EVA_STATS,
-		HFI_PROP_EVA_STAT_INFO},
+		HFI_PROP_EVA_STAT_INFO,
+		CAP_FLAG_ROOT,
+		{0},
+		{ENH_LAYER_COUNT}},
 
 	{META_BUF_TAG, DEC | ENC, CODECS_ALL,
 		V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,

+ 12 - 2
driver/vidc/src/msm_vidc_control.c

@@ -1316,6 +1316,14 @@ static int msm_vidc_adjust_static_layer_count_and_type(struct msm_vidc_inst *ins
 		goto exit;
 	}
 
+	if (!inst->capabilities->cap[META_EVA_STATS].value &&
+		hb_requested && (layer_count > 1)) {
+		layer_count = 1;
+		i_vpr_h(inst,
+			"%s: cvp disable supports only one enh layer HB\n",
+			__func__);
+	}
+
 	/* decide hfi layer type */
 	if (hb_requested) {
 		inst->hfi_layer_type = HFI_HIER_B;
@@ -1368,7 +1376,9 @@ int msm_vidc_adjust_layer_count(void *instance, struct v4l2_ctrl *ctrl)
 		capability->cap[ENH_LAYER_COUNT].value;
 
 	if (!is_parent_available(inst, ENH_LAYER_COUNT,
-		BITRATE_MODE, __func__))
+		BITRATE_MODE, __func__) ||
+		!is_parent_available(inst, ENH_LAYER_COUNT,
+		META_EVA_STATS, __func__))
 		return -EINVAL;
 
 	if (!inst->vb2q[OUTPUT_PORT].streaming) {
@@ -1419,7 +1429,7 @@ int msm_vidc_adjust_gop_size(void *instance, struct v4l2_ctrl *ctrl)
 	/*
 	 * Layer encoding needs GOP size to be multiple of subgop size
 	 * And subgop size is 2 ^ number of enhancement layers.
-	*/
+	 */
 
 	/* v4l2 layer count is the number of enhancement layers */
 	min_gop_size = 1 << enh_layer_count;