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

Commit 8b87fa82 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: vidc: Handle get ctrl of level/profile correctly" into msm-4.9

parents da8eedd4 ce585582
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -86,7 +86,6 @@ static const char *const h264_video_entropy_cabac_model[] = {
};

static const char *const hevc_tier_level[] = {
	"Level unknown"
	"Main Tier Level 1",
	"Main Tier Level 2",
	"Main Tier Level 2.1",
@@ -113,6 +112,7 @@ static const char *const hevc_tier_level[] = {
	"High Tier Level 6",
	"High Tier Level 6.1",
	"High Tier Level 6.2",
	"Level unknown",
};

static const char *const hevc_profile[] = {
+18 −4
Original line number Diff line number Diff line
@@ -1888,16 +1888,30 @@ static int try_get_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
	switch (ctrl->id) {

	case V4L2_CID_MPEG_VIDEO_H264_PROFILE:
	case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE:
		ctrl->val = msm_comm_hal_to_v4l2(
			V4L2_CID_MPEG_VIDEO_H264_PROFILE,
			inst->profile);
		break;
	case V4L2_CID_MPEG_VIDC_VIDEO_HEVC_PROFILE:
		ctrl->val = inst->profile;
		ctrl->val = msm_comm_hal_to_v4l2(
			V4L2_CID_MPEG_VIDC_VIDEO_HEVC_PROFILE,
			inst->profile);
		break;

	case V4L2_CID_MPEG_VIDEO_H264_LEVEL:
		ctrl->val = msm_comm_hal_to_v4l2(
			V4L2_CID_MPEG_VIDEO_H264_LEVEL,
			inst->level);
		break;
	case V4L2_CID_MPEG_VIDC_VIDEO_VP8_PROFILE_LEVEL:
	case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_LEVEL:
		ctrl->val = msm_comm_hal_to_v4l2(
			V4L2_CID_MPEG_VIDC_VIDEO_VP8_PROFILE_LEVEL,
			inst->level);
		break;
	case V4L2_CID_MPEG_VIDC_VIDEO_HEVC_TIER_LEVEL:
		ctrl->val = inst->level;
		ctrl->val = msm_comm_hal_to_v4l2(
			V4L2_CID_MPEG_VIDC_VIDEO_HEVC_TIER_LEVEL,
			inst->level);
		break;

	case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE:
+91 −9
Original line number Diff line number Diff line
@@ -199,6 +199,8 @@ int msm_comm_hal_to_v4l2(int id, int value)
			return V4L2_MPEG_VIDEO_H264_LEVEL_5_0;
		case HAL_H264_LEVEL_51:
			return V4L2_MPEG_VIDEO_H264_LEVEL_5_1;
		case HAL_H264_LEVEL_52:
			return V4L2_MPEG_VIDEO_H264_LEVEL_5_2;
		default:
			goto unknown_value;
		}
@@ -212,7 +214,91 @@ int msm_comm_hal_to_v4l2(int id, int value)
		default:
			goto unknown_value;
		}
	case V4L2_CID_MPEG_VIDC_VIDEO_HEVC_PROFILE:
		switch (value) {
		case HAL_HEVC_PROFILE_MAIN:
			return V4L2_MPEG_VIDC_VIDEO_HEVC_PROFILE_MAIN;
		case HAL_HEVC_PROFILE_MAIN10:
			return V4L2_MPEG_VIDC_VIDEO_HEVC_PROFILE_MAIN10;
		case HAL_HEVC_PROFILE_MAIN_STILL_PIC:
			return V4L2_MPEG_VIDC_VIDEO_HEVC_PROFILE_MAIN_STILL_PIC;
		default:
			goto unknown_value;
		}
	case V4L2_CID_MPEG_VIDC_VIDEO_HEVC_TIER_LEVEL:
	switch (value) {
	case HAL_HEVC_MAIN_TIER_LEVEL_1:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_1;
	case HAL_HEVC_MAIN_TIER_LEVEL_2:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_2;
	case HAL_HEVC_MAIN_TIER_LEVEL_2_1:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_2_1;
	case HAL_HEVC_MAIN_TIER_LEVEL_3:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_3;
	case HAL_HEVC_MAIN_TIER_LEVEL_3_1:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_3_1;
	case HAL_HEVC_MAIN_TIER_LEVEL_4:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_4;
	case HAL_HEVC_MAIN_TIER_LEVEL_4_1:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_4_1;
	case HAL_HEVC_MAIN_TIER_LEVEL_5:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_5;
	case HAL_HEVC_MAIN_TIER_LEVEL_5_1:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_5_1;
	case HAL_HEVC_MAIN_TIER_LEVEL_5_2:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_5_2;
	case HAL_HEVC_MAIN_TIER_LEVEL_6:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_6;
	case HAL_HEVC_MAIN_TIER_LEVEL_6_1:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_6_1;
	case HAL_HEVC_MAIN_TIER_LEVEL_6_2:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_6_2;
	case HAL_HEVC_HIGH_TIER_LEVEL_1:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_1;
	case HAL_HEVC_HIGH_TIER_LEVEL_2:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_2;
	case HAL_HEVC_HIGH_TIER_LEVEL_2_1:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_2_1;
	case HAL_HEVC_HIGH_TIER_LEVEL_3:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_3;
	case HAL_HEVC_HIGH_TIER_LEVEL_3_1:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_3_1;
	case HAL_HEVC_HIGH_TIER_LEVEL_4:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_4;
	case HAL_HEVC_HIGH_TIER_LEVEL_4_1:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_4_1;
	case HAL_HEVC_HIGH_TIER_LEVEL_5:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_5;
	case HAL_HEVC_HIGH_TIER_LEVEL_5_1:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_5_1;
	case HAL_HEVC_HIGH_TIER_LEVEL_5_2:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_5_2;
	case HAL_HEVC_HIGH_TIER_LEVEL_6:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_6;
	case HAL_HEVC_HIGH_TIER_LEVEL_6_1:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_6_1;
	case HAL_HEVC_HIGH_TIER_LEVEL_6_2:
		return V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_6_2;
	case V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_UNKNOWN:
		return HAL_HEVC_TIER_LEVEL_UNKNOWN;
	default:
		goto unknown_value;
	}
	case V4L2_CID_MPEG_VIDC_VIDEO_VP8_PROFILE_LEVEL:
		switch (value) {
		case HAL_VPX_LEVEL_VERSION_0:
			return V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_0;
		case HAL_VPX_LEVEL_VERSION_1:
			return V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_1;
		case HAL_VPX_LEVEL_VERSION_2:
			return V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_2;
		case HAL_VPX_LEVEL_VERSION_3:
			return V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_3;
		case HAL_VPX_LEVEL_UNUSED:
			return V4L2_MPEG_VIDC_VIDEO_VP8_UNUSED;
		default:
			goto unknown_value;
		}
	case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE:
	case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_LEVEL:
		/*
@@ -396,6 +482,8 @@ int msm_comm_v4l2_to_hal(int id, int value)
			return HAL_HEVC_HIGH_TIER_LEVEL_6;
		case V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_6_1:
			return HAL_HEVC_HIGH_TIER_LEVEL_6_1;
		case V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_6_2:
			return HAL_HEVC_HIGH_TIER_LEVEL_6_2;
		case V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_UNKNOWN:
			return HAL_HEVC_TIER_LEVEL_UNKNOWN;
		default:
@@ -1463,15 +1551,9 @@ static void handle_event_change(enum hal_command_response cmd, void *data)
	* ptr[4] = colour space
	*/

	inst->entropy_mode = msm_comm_hal_to_v4l2(
		V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE,
			event_notify->entropy_mode);
	inst->profile = msm_comm_hal_to_v4l2(
		V4L2_CID_MPEG_VIDEO_H264_PROFILE,
			event_notify->profile);
	inst->level = msm_comm_hal_to_v4l2(
		V4L2_CID_MPEG_VIDEO_H264_LEVEL,
			event_notify->level);
	inst->entropy_mode = event_notify->entropy_mode;
	inst->profile = event_notify->profile;
	inst->level = event_notify->level;

	ptr = (u32 *)seq_changed_event.u.data;
	ptr[0] = event_notify->height;
+1 −1
Original line number Diff line number Diff line
@@ -377,11 +377,11 @@ enum hal_vpx_profile {
};

enum hal_vpx_level {
	HAL_VPX_LEVEL_UNUSED = 0x00000000,
	HAL_VPX_LEVEL_VERSION_0 = 0x00000001,
	HAL_VPX_LEVEL_VERSION_1 = 0x00000002,
	HAL_VPX_LEVEL_VERSION_2 = 0x00000004,
	HAL_VPX_LEVEL_VERSION_3 = 0x00000008,
	HAL_VPX_LEVEL_UNUSED = 0x10000000,
};

struct hal_frame_rate {