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

Commit 71b67ac7 authored by Kyle Yan's avatar Kyle Yan Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: vidc: Add LEVEL_UNKNOWN support for encoder" into msm-4.9

parents be0e59f3 234b4dc1
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -1225,6 +1225,10 @@ int create_pkt_cmd_session_set_property(
			HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT;
		hfi = (struct hfi_profile_level *)
			&pkt->rg_property_data[1];

		/* There is an assumption here that HAL level is same as
		 * HFI level
		 */
		hfi->level = prop->level;
		hfi->profile = hal_to_hfi_type(HAL_PARAM_PROFILE_LEVEL_CURRENT,
				prop->profile);
@@ -1235,13 +1239,6 @@ int create_pkt_cmd_session_set_property(
					prop->profile);
		}

		if (!hfi->level) {
			hfi->level = 1;
			dprintk(VIDC_WARN,
					"Level %d not supported, falling back to high\n",
					prop->level);
		}

		pkt->size += sizeof(u32) + sizeof(struct hfi_profile_level);
		break;
	}
+7 −28
Original line number Diff line number Diff line
@@ -91,30 +91,8 @@ static const char *const h264_video_entropy_cabac_model[] = {
	NULL
};

static const char *const h263_level[] = {
	"1.0",
	"2.0",
	"3.0",
	"4.0",
	"4.5",
	"5.0",
	"6.0",
	"7.0",
};

static const char *const h263_profile[] = {
	"Baseline",
	"H320 Coding",
	"Backward Compatible",
	"ISWV2",
	"ISWV3",
	"High Compression",
	"Internet",
	"Interlace",
	"High Latency",
};

static const char *const hevc_tier_level[] = {
	"Level unknown"
	"Main Tier Level 1",
	"Main Tier Level 2",
	"Main Tier Level 2.1",
@@ -454,8 +432,8 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
		.name = "H264 Level",
		.type = V4L2_CTRL_TYPE_MENU,
		.minimum = V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
		.maximum = V4L2_MPEG_VIDEO_H264_LEVEL_5_2,
		.default_value = V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
		.maximum = V4L2_MPEG_VIDEO_H264_LEVEL_UNKNOWN,
		.default_value = V4L2_MPEG_VIDEO_H264_LEVEL_UNKNOWN,
		.menu_skip_mask = 0,
	},
	{
@@ -491,9 +469,9 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
		.name = "HEVC Tier and Level",
		.type = V4L2_CTRL_TYPE_MENU,
		.minimum = V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_1,
		.maximum = V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_5_2,
		.maximum = V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_UNKNOWN,
		.default_value =
			V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_1,
			V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_UNKNOWN,
		.menu_skip_mask = ~(
		(1 << V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_1) |
		(1 << V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_2) |
@@ -513,7 +491,8 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
		(1 << V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_4) |
		(1 << V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_4_1) |
		(1 << V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_5) |
		(1 << V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_5_1)
		(1 << V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_5_1) |
		(1 << V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_UNKNOWN)
		),
		.qmenu = hevc_tier_level,
	},
+4 −0
Original line number Diff line number Diff line
@@ -304,6 +304,8 @@ int msm_comm_v4l2_to_hal(int id, int value)
			return HAL_H264_LEVEL_51;
		case V4L2_MPEG_VIDEO_H264_LEVEL_5_2:
			return HAL_H264_LEVEL_52;
		case V4L2_MPEG_VIDEO_H264_LEVEL_UNKNOWN:
			return HAL_H264_LEVEL_UNKNOWN;
		default:
			goto unknown_value;
		}
@@ -405,6 +407,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_UNKNOWN:
			return HAL_HEVC_TIER_LEVEL_UNKNOWN;
		default:
			goto unknown_value;
		}
+2 −2
Original line number Diff line number Diff line
@@ -384,6 +384,7 @@ enum hal_h264_profile {
};

enum hal_h264_level {
	HAL_H264_LEVEL_UNKNOWN = 0x00000000,
	HAL_H264_LEVEL_1  = 0x00000001,
	HAL_H264_LEVEL_1b = 0x00000002,
	HAL_H264_LEVEL_11 = 0x00000004,
@@ -401,7 +402,6 @@ enum hal_h264_level {
	HAL_H264_LEVEL_5  = 0x00004000,
	HAL_H264_LEVEL_51 = 0x00008000,
	HAL_H264_LEVEL_52 = 0x00010000,
	HAL_UNUSED_H264_LEVEL = 0x10000000,
};

enum hal_hevc_profile {
@@ -412,6 +412,7 @@ enum hal_hevc_profile {
};

enum hal_hevc_level {
	HAL_HEVC_TIER_LEVEL_UNKNOWN     = 0x00000000,
	HAL_HEVC_MAIN_TIER_LEVEL_1      = 0x10000001,
	HAL_HEVC_MAIN_TIER_LEVEL_2      = 0x10000002,
	HAL_HEVC_MAIN_TIER_LEVEL_2_1    = 0x10000004,
@@ -438,7 +439,6 @@ enum hal_hevc_level {
	HAL_HEVC_HIGH_TIER_LEVEL_6      = 0x20000400,
	HAL_HEVC_HIGH_TIER_LEVEL_6_1    = 0x20000800,
	HAL_HEVC_HIGH_TIER_LEVEL_6_2    = 0x20001000,
	HAL_UNUSED_HEVC_TIER_LEVEL      = 0x80000000,
};

enum hal_hevc_tier {
+6 −0
Original line number Diff line number Diff line
@@ -429,6 +429,9 @@ enum v4l2_mpeg_video_h264_level {
	V4L2_MPEG_VIDEO_H264_LEVEL_5_0	= 14,
	V4L2_MPEG_VIDEO_H264_LEVEL_5_1	= 15,
	V4L2_MPEG_VIDEO_H264_LEVEL_5_2	= 16,
#define V4L2_MPEG_VIDEO_H264_LEVEL_UNKNOWN \
	V4L2_MPEG_VIDEO_H264_LEVEL_UNKNOWN
	V4L2_MPEG_VIDEO_H264_LEVEL_UNKNOWN = 17,
};
#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA	(V4L2_CID_MPEG_BASE+360)
#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA	(V4L2_CID_MPEG_BASE+361)
@@ -919,6 +922,9 @@ enum v4l2_mpeg_video_hevc_level {
	V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_6_1	= 23,
	V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_6_2	= 24,
	V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_6_2	= 25,
#define V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_UNKNOWN \
	V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_UNKNOWN
	V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_UNKNOWN = 26,
};

#define V4L2_CID_MPEG_VIDC_VIDEO_HIER_B_NUM_LAYERS \