瀏覽代碼

video: driver: fix for codec config control

fix for codec config control setting.

Change-Id: I5fc65cdd99a9346323d2b61de3ef6024b33ca7f2
Signed-off-by: Darshana Patil <[email protected]>
Darshana Patil 4 年之前
父節點
當前提交
689fd02b04
共有 1 個文件被更改,包括 42 次插入25 次删除
  1. 42 25
      driver/vidc/src/msm_vidc_driver.c

+ 42 - 25
driver/vidc/src/msm_vidc_driver.c

@@ -534,32 +534,49 @@ bool msm_vidc_allow_s_ctrl(struct msm_vidc_inst *inst, u32 id)
 		allow = true;
 		goto exit;
 	}
-	if (inst->state == MSM_VIDC_START || inst->state == MSM_VIDC_START_OUTPUT) {
-		switch (id) {
-		case V4L2_CID_MPEG_VIDEO_BITRATE:
-		case V4L2_CID_MPEG_VIDEO_GOP_SIZE:
-		case V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME:
-		case V4L2_CID_HFLIP:
-		case V4L2_CID_VFLIP:
-		case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP:
-		case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER:
-		case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR:
-		case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR:
-		case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR:
-		case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR:
-		case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR:
-		case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR:
-		case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR:
-		case V4L2_CID_MPEG_VIDC_BASELAYER_PRIORITY:
-		case V4L2_CID_MPEG_VIDC_USELTRFRAME:
-		case V4L2_CID_MPEG_VIDC_MARKLTRFRAME:
-		case V4L2_CID_MPEG_VIDC_VIDEO_BLUR_TYPES:
-		case V4L2_CID_MPEG_VIDC_VIDEO_BLUR_RESOLUTION:
+	if (is_decode_session(inst)) {
+		if (!inst->vb2q[INPUT_PORT].streaming) {
 			allow = true;
-			break;
-		default:
-			allow = false;
-			break;
+			goto exit;
+		}
+		if (inst->vb2q[INPUT_PORT].streaming) {
+			switch (id) {
+			case V4L2_CID_MPEG_VIDC_CODEC_CONFIG:
+				allow = true;
+				break;
+			default:
+				allow = false;
+				break;
+			}
+		}
+	} else if (is_encode_session(inst)) {
+		if (inst->state == MSM_VIDC_START || inst->state == MSM_VIDC_START_OUTPUT) {
+			switch (id) {
+			case V4L2_CID_MPEG_VIDEO_BITRATE:
+			case V4L2_CID_MPEG_VIDEO_GOP_SIZE:
+			case V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME:
+			case V4L2_CID_HFLIP:
+			case V4L2_CID_VFLIP:
+			case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP:
+			case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER:
+			case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR:
+			case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR:
+			case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR:
+			case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR:
+			case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR:
+			case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR:
+			case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR:
+			case V4L2_CID_MPEG_VIDC_BASELAYER_PRIORITY:
+			case V4L2_CID_MPEG_VIDC_USELTRFRAME:
+			case V4L2_CID_MPEG_VIDC_MARKLTRFRAME:
+			case V4L2_CID_MPEG_VIDC_VIDEO_BLUR_TYPES:
+			case V4L2_CID_MPEG_VIDC_VIDEO_BLUR_RESOLUTION:
+				allow = true;
+				break;
+			default:
+				allow = false;
+				break;
+			}
 		}
 	}