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

Commit 2831fbed 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: Add VP9 profile/level query support"

parents 713d6838 b69518eb
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -61,6 +61,26 @@ static const char *const vp8_profile_level[] = {
	"3.0",
};

static const char *const vp9_profile[] = {
	"Unused",
	"0",
	"2_10",
};

static const char *const vp9_level[] = {
	"Unused",
	"1.0",
	"1.1",
	"2.0",
	"2.1",
	"3.0",
	"3.1",
	"4.0",
	"4.1",
	"5.0",
	"5.1",
};

static const char *const mpeg2_profile[] = {
	"Simple",
	"Main",
@@ -230,6 +250,28 @@ static struct msm_vidc_ctrl msm_vdec_ctrls[] = {
		.qmenu = vp8_profile_level,
		.flags = V4L2_CTRL_FLAG_VOLATILE | V4L2_CTRL_FLAG_READ_ONLY,
	},
	{
		.id = V4L2_CID_MPEG_VIDC_VIDEO_VP9_PROFILE,
		.name = "VP9 Profile",
		.type = V4L2_CTRL_TYPE_MENU,
		.minimum = V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_UNUSED,
		.maximum = V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P2_10,
		.default_value = V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P0,
		.menu_skip_mask = 0,
		.qmenu = vp9_profile,
		.flags = V4L2_CTRL_FLAG_VOLATILE | V4L2_CTRL_FLAG_READ_ONLY,
	},
	{
		.id = V4L2_CID_MPEG_VIDC_VIDEO_VP9_LEVEL,
		.name = "VP9 Level",
		.type = V4L2_CTRL_TYPE_MENU,
		.minimum = V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_UNUSED,
		.maximum = V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_51,
		.default_value = V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_51,
		.menu_skip_mask = 0,
		.qmenu = vp9_level,
		.flags = V4L2_CTRL_FLAG_VOLATILE | V4L2_CTRL_FLAG_READ_ONLY,
	},
	{
		.id = V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE,
		.name = "MPEG2 Profile",
+2 −0
Original line number Diff line number Diff line
@@ -182,6 +182,7 @@ int msm_vidc_query_ctrl(void *instance, struct v4l2_queryctrl *ctrl)
	case V4L2_CID_MPEG_VIDEO_H264_PROFILE:
	case V4L2_CID_MPEG_VIDC_VIDEO_HEVC_PROFILE:
	case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE:
	case V4L2_CID_MPEG_VIDC_VIDEO_VP9_PROFILE:
	{
		prof_level_supported = &inst->capability.profile_level;
		for (i = 0; i < prof_level_supported->profile_count; i++) {
@@ -200,6 +201,7 @@ int msm_vidc_query_ctrl(void *instance, struct v4l2_queryctrl *ctrl)
	case V4L2_CID_MPEG_VIDC_VIDEO_VP8_PROFILE_LEVEL:
	case V4L2_CID_MPEG_VIDC_VIDEO_HEVC_TIER_LEVEL:
	case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_LEVEL:
	case V4L2_CID_MPEG_VIDC_VIDEO_VP9_LEVEL:
	{
		prof_level_supported = &inst->capability.profile_level;
		for (i = 0; i < prof_level_supported->profile_count; i++) {
+38 −0
Original line number Diff line number Diff line
@@ -297,6 +297,44 @@ int msm_comm_hal_to_v4l2(int id, int value)
		default:
			goto unknown_value;
		}
	case V4L2_CID_MPEG_VIDC_VIDEO_VP9_PROFILE:
		switch (value) {
		case HAL_VP9_PROFILE_P0:
			return V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P0;
		case HAL_VP9_PROFILE_P2_10:
			return V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P2_10;
		case HAL_VP9_PROFILE_UNUSED:
			return V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_UNUSED;
		default:
			goto unknown_value;
		}
	case V4L2_CID_MPEG_VIDC_VIDEO_VP9_LEVEL:
		switch (value) {
		case HAL_VP9_LEVEL_1:
			return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_1;
		case HAL_VP9_LEVEL_11:
			return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_11;
		case HAL_VP9_LEVEL_2:
			return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_2;
		case HAL_VP9_LEVEL_21:
			return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_21;
		case HAL_VP9_LEVEL_3:
			return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_3;
		case HAL_VP9_LEVEL_31:
			return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_31;
		case HAL_VP9_LEVEL_4:
			return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_4;
		case HAL_VP9_LEVEL_41:
			return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_41;
		case HAL_VP9_LEVEL_5:
			return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_5;
		case HAL_VP9_LEVEL_51:
			return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_51;
		case HAL_VP9_LEVEL_UNUSED:
			return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_UNUSED;
		default:
			goto unknown_value;
		}
	case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE:
		switch (value) {
		case HAL_MPEG2_PROFILE_SIMPLE:
+20 −0
Original line number Diff line number Diff line
@@ -390,6 +390,26 @@ enum hal_tme_level {
	HAL_TME_LEVEL_INTEGER = 0x00000001,
};

enum hal_vp9_profile {
	HAL_VP9_PROFILE_UNUSED = 0x00000000,
	HAL_VP9_PROFILE_P0     = 0x00000001,
	HAL_VP9_PROFILE_P2_10  = 0x00000002,
};

enum hal_vp9_level {
	HAL_VP9_LEVEL_UNUSED = 0x00000000,
	HAL_VP9_LEVEL_1  = 0x00000001,
	HAL_VP9_LEVEL_11 = 0x00000002,
	HAL_VP9_LEVEL_2  = 0x00000004,
	HAL_VP9_LEVEL_21 = 0x00000008,
	HAL_VP9_LEVEL_3  = 0x00000010,
	HAL_VP9_LEVEL_31 = 0x00000020,
	HAL_VP9_LEVEL_4  = 0x00000040,
	HAL_VP9_LEVEL_41 = 0x00000080,
	HAL_VP9_LEVEL_5  = 0x00000100,
	HAL_VP9_LEVEL_51 = 0x00000200,
};

struct hal_frame_rate {
	enum hal_buffer buffer_type;
	u32 frame_rate;
+24 −0
Original line number Diff line number Diff line
@@ -1046,6 +1046,30 @@ enum v4l2_cid_mpeg_vidc_video_full_range {
#define V4L2_CID_MPEG_VIDC_VIDEO_LAYER_ID \
		(V4L2_CID_MPEG_MSM_VIDC_BASE + 65)

#define V4L2_CID_MPEG_VIDC_VIDEO_VP9_PROFILE \
		(V4L2_CID_MPEG_MSM_VIDC_BASE + 66)
enum v4l2_mpeg_vidc_video_vp9_profile {
	V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_UNUSED = 0,
	V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P0 = 1,
	V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P2_10 = 2,
};

#define V4L2_CID_MPEG_VIDC_VIDEO_VP9_LEVEL \
	(V4L2_CID_MPEG_MSM_VIDC_BASE + 67)
enum v4l2_mpeg_vidc_video_vp9_level {
	V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_UNUSED = 0,
	V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_1 = 1,
	V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_11 = 2,
	V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_2 = 3,
	V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_21 = 4,
	V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_3 = 5,
	V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_31 = 6,
	V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_4 = 7,
	V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_41 = 8,
	V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_5 = 9,
	V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_51 = 10,
};

#define V4L2_CID_MPEG_VIDC_VIDEO_I_FRAME_QP \
		(V4L2_CID_MPEG_MSM_VIDC_BASE + 99)
#define V4L2_CID_MPEG_VIDC_VIDEO_P_FRAME_QP \