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

Commit 0ad53f02 authored by Vaibhav Deshu Venkatesh's avatar Vaibhav Deshu Venkatesh
Browse files

msm: vidc: Align HFI profile with HAL profile



Make sure HAL profile level enums are same as that of HFI
values so that there is no conversion needed.

CRs-Fixed: 2086655
Change-Id: Ibded92d45930e0514c298af40db4465465bed9af
Signed-off-by: default avatarVaibhav Deshu Venkatesh <vdeshuve@codeaurora.org>
parent 56213878
Loading
Loading
Loading
Loading
+1 −14
Original line number Diff line number Diff line
@@ -21,15 +21,6 @@
 * space.  So before indexing them, we apply log2 to use a more
 * sensible index.
 */
static int profile_table[] = {
	[ilog2(HAL_H264_PROFILE_BASELINE)] = HFI_H264_PROFILE_BASELINE,
	[ilog2(HAL_H264_PROFILE_MAIN)] = HFI_H264_PROFILE_MAIN,
	[ilog2(HAL_H264_PROFILE_HIGH)] = HFI_H264_PROFILE_HIGH,
	[ilog2(HAL_H264_PROFILE_CONSTRAINED_BASE)] =
		HFI_H264_PROFILE_CONSTRAINED_BASE,
	[ilog2(HAL_H264_PROFILE_CONSTRAINED_HIGH)] =
		HFI_H264_PROFILE_CONSTRAINED_HIGH,
};

static int entropy_mode[] = {
	[ilog2(HAL_H264_ENTROPY_CAVLC)] = HFI_H264_ENTROPY_CAVLC,
@@ -95,9 +86,6 @@ static inline int hal_to_hfi_type(int property, int hal_type)
		hal_type = ilog2(hal_type);

	switch (property) {
	case HAL_PARAM_PROFILE_LEVEL_CURRENT:
		return (hal_type >= ARRAY_SIZE(profile_table)) ?
			-ENOTSUPP : profile_table[hal_type];
	case HAL_PARAM_VENC_H264_ENTROPY_CONTROL:
		return (hal_type >= ARRAY_SIZE(entropy_mode)) ?
			-ENOTSUPP : entropy_mode[hal_type];
@@ -1194,8 +1182,7 @@ int create_pkt_cmd_session_set_property(
		 * HFI level
		 */
		hfi->level = prop->level;
		hfi->profile = hal_to_hfi_type(HAL_PARAM_PROFILE_LEVEL_CURRENT,
				prop->profile);
		hfi->profile = prop->profile;
		if (hfi->profile <= 0) {
			hfi->profile = HFI_H264_PROFILE_HIGH;
			dprintk(VIDC_WARN,
+1 −1
Original line number Diff line number Diff line
@@ -1374,7 +1374,7 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
		break;
	case V4L2_CID_MPEG_VIDC_VIDEO_VP8_PROFILE_LEVEL:
		property_id = HAL_PARAM_PROFILE_LEVEL_CURRENT;
		profile_level.profile = HAL_VPX_PROFILE_MAIN;
		profile_level.profile = HAL_VP8_PROFILE_MAIN;
		profile_level.level = msm_comm_v4l2_to_hal(
				V4L2_CID_MPEG_VIDC_VIDEO_VP8_PROFILE_LEVEL,
				ctrl->val);
+39 −34
Original line number Diff line number Diff line
@@ -152,16 +152,14 @@ int msm_comm_hal_to_v4l2(int id, int value)
			V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE;
		case HAL_H264_PROFILE_MAIN:
			return V4L2_MPEG_VIDEO_H264_PROFILE_MAIN;
		case HAL_H264_PROFILE_EXTENDED:
			return V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED;
		case HAL_H264_PROFILE_HIGH:
			return V4L2_MPEG_VIDEO_H264_PROFILE_HIGH;
		case HAL_H264_PROFILE_HIGH10:
			return V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10;
		case HAL_H264_PROFILE_HIGH422:
			return V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422;
		case HAL_H264_PROFILE_HIGH444:
			return V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE;
		case HAL_H264_PROFILE_STEREO_HIGH:
			return V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH;
		case HAL_H264_PROFILE_MULTIVIEW_HIGH:
			return V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH;
		case HAL_H264_PROFILE_CONSTRAINED_HIGH:
			return V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH;
		default:
			goto unknown_value;
		}
@@ -286,29 +284,40 @@ int msm_comm_hal_to_v4l2(int id, int value)
	}
	case V4L2_CID_MPEG_VIDC_VIDEO_VP8_PROFILE_LEVEL:
		switch (value) {
		case HAL_VPX_LEVEL_VERSION_0:
		case HAL_VP8_LEVEL_VERSION_0:
			return V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_0;
		case HAL_VPX_LEVEL_VERSION_1:
		case HAL_VP8_LEVEL_VERSION_1:
			return V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_1;
		case HAL_VPX_LEVEL_VERSION_2:
		case HAL_VP8_LEVEL_VERSION_2:
			return V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_2;
		case HAL_VPX_LEVEL_VERSION_3:
		case HAL_VP8_LEVEL_VERSION_3:
			return V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_3;
		case HAL_VPX_LEVEL_UNUSED:
		case HAL_VP8_LEVEL_UNUSED:
			return V4L2_MPEG_VIDC_VIDEO_VP8_UNUSED;
		default:
			goto unknown_value;
		}
	case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE:
		switch (value) {
		case HAL_MPEG2_PROFILE_SIMPLE:
			return V4L2_MPEG_VIDC_VIDEO_MPEG2_PROFILE_SIMPLE;
		case HAL_MPEG2_PROFILE_MAIN:
			return V4L2_MPEG_VIDC_VIDEO_MPEG2_PROFILE_MAIN;
		default:
			goto unknown_value;
		}
	case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_LEVEL:
		/*
		 * Extremely dirty hack: we haven't implemented g_ctrl of
		 * any of these controls and have no intention of doing
		 * so in the near future.  So just return 0 so that we
		 * don't see the annoying "Unknown control" errors at the
		 * bottom of this function.
		 */
		return 0;
		/* This mapping is not defined properly in V4L2 */
		switch (value) {
		case HAL_MPEG2_LEVEL_LL:
			return V4L2_MPEG_VIDC_VIDEO_MPEG2_LEVEL_0;
		case HAL_MPEG2_LEVEL_ML:
			return V4L2_MPEG_VIDC_VIDEO_MPEG2_LEVEL_1;
		case HAL_MPEG2_LEVEL_HL:
			return V4L2_MPEG_VIDC_VIDEO_MPEG2_LEVEL_2;
		default:
			goto unknown_value;
		}
	}

unknown_value:
@@ -328,16 +337,12 @@ int msm_comm_v4l2_to_hal(int id, int value)
			return HAL_H264_PROFILE_CONSTRAINED_BASE;
		case V4L2_MPEG_VIDEO_H264_PROFILE_MAIN:
			return HAL_H264_PROFILE_MAIN;
		case V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED:
			return HAL_H264_PROFILE_EXTENDED;
		case V4L2_MPEG_VIDEO_H264_PROFILE_HIGH:
			return HAL_H264_PROFILE_HIGH;
		case V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10:
			return HAL_H264_PROFILE_HIGH10;
		case V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422:
			return HAL_H264_PROFILE_HIGH422;
		case V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE:
			return HAL_H264_PROFILE_HIGH444;
		case V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH:
			return HAL_H264_PROFILE_STEREO_HIGH;
		case V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH:
			return HAL_H264_PROFILE_MULTIVIEW_HIGH;
		case V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH:
			return HAL_H264_PROFILE_CONSTRAINED_HIGH;
		default:
@@ -407,15 +412,15 @@ int msm_comm_v4l2_to_hal(int id, int value)
	case V4L2_CID_MPEG_VIDC_VIDEO_VP8_PROFILE_LEVEL:
		switch (value) {
		case V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_0:
			return HAL_VPX_LEVEL_VERSION_0;
			return HAL_VP8_LEVEL_VERSION_0;
		case V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_1:
			return HAL_VPX_LEVEL_VERSION_1;
			return HAL_VP8_LEVEL_VERSION_1;
		case V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_2:
			return HAL_VPX_LEVEL_VERSION_2;
			return HAL_VP8_LEVEL_VERSION_2;
		case V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_3:
			return HAL_VPX_LEVEL_VERSION_3;
			return HAL_VP8_LEVEL_VERSION_3;
		case V4L2_MPEG_VIDC_VIDEO_VP8_UNUSED:
			return HAL_VPX_LEVEL_UNUSED;
			return HAL_VP8_LEVEL_UNUSED;
		default:
			goto unknown_value;
		}
+18 −25
Original line number Diff line number Diff line
@@ -279,34 +279,27 @@ enum hal_video_codec {
};

enum hal_mpeg2_profile {
	HAL_UNUSED_MPEG2_PROFILE  = 0x00000000,
	HAL_MPEG2_PROFILE_SIMPLE  = 0x00000001,
	HAL_MPEG2_PROFILE_MAIN    = 0x00000002,
	HAL_MPEG2_PROFILE_422     = 0x00000004,
	HAL_MPEG2_PROFILE_SNR     = 0x00000008,
	HAL_MPEG2_PROFILE_SPATIAL = 0x00000010,
	HAL_MPEG2_PROFILE_HIGH    = 0x00000020,
	HAL_UNUSED_MPEG2_PROFILE = 0x10000000,
};

enum hal_mpeg2_level {
	HAL_UNUSED_MEPG2_LEVEL = 0x00000000,
	HAL_MPEG2_LEVEL_LL  = 0x00000001,
	HAL_MPEG2_LEVEL_ML  = 0x00000002,
	HAL_MPEG2_LEVEL_H14 = 0x00000004,
	HAL_MPEG2_LEVEL_HL  = 0x00000008,
	HAL_UNUSED_MEPG2_LEVEL = 0x10000000,
	HAL_MPEG2_LEVEL_HL  = 0x00000004,
};

enum hal_h264_profile {
	HAL_UNUSED_H264_PROFILE   = 0x00000000,
	HAL_H264_PROFILE_BASELINE = 0x00000001,
	HAL_H264_PROFILE_MAIN     = 0x00000002,
	HAL_H264_PROFILE_HIGH     = 0x00000004,
	HAL_H264_PROFILE_EXTENDED = 0x00000008,
	HAL_H264_PROFILE_HIGH10   = 0x00000010,
	HAL_H264_PROFILE_HIGH422  = 0x00000020,
	HAL_H264_PROFILE_HIGH444  = 0x00000040,
	HAL_H264_PROFILE_CONSTRAINED_BASE  = 0x00000080,
	HAL_H264_PROFILE_CONSTRAINED_HIGH  = 0x00000100,
	HAL_UNUSED_H264_PROFILE = 0x10000000,
	HAL_H264_PROFILE_STEREO_HIGH      = 0x00000008,
	HAL_H264_PROFILE_MULTIVIEW_HIGH   = 0x00000010,
	HAL_H264_PROFILE_CONSTRAINED_BASE = 0x00000020,
	HAL_H264_PROFILE_CONSTRAINED_HIGH = 0x00000040,
};

enum hal_h264_level {
@@ -331,10 +324,10 @@ enum hal_h264_level {
};

enum hal_hevc_profile {
	HAL_UNUSED_HEVC_PROFILE         = 0x00000000,
	HAL_HEVC_PROFILE_MAIN           = 0x00000001,
	HAL_HEVC_PROFILE_MAIN10         = 0x00000002,
	HAL_HEVC_PROFILE_MAIN_STILL_PIC = 0x00000004,
	HAL_UNUSED_HEVC_PROFILE         = 0x10000000,
};

enum hal_hevc_level {
@@ -373,17 +366,17 @@ enum hal_hevc_tier {
	HAL_UNUSED_HEVC_TIER = 0x10000000,
};

enum hal_vpx_profile {
	HAL_VPX_PROFILE_MAIN    = 0x00000001,
	HAL_VPX_PROFILE_UNUSED = 0x10000000,
enum hal_vp8_profile {
	HAL_VP8_PROFILE_UNUSED = 0x00000000,
	HAL_VP8_PROFILE_MAIN   = 0x00000001,
};

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,
enum hal_vp8_level {
	HAL_VP8_LEVEL_UNUSED = 0x00000000,
	HAL_VP8_LEVEL_VERSION_0 = 0x00000001,
	HAL_VP8_LEVEL_VERSION_1 = 0x00000002,
	HAL_VP8_LEVEL_VERSION_2 = 0x00000004,
	HAL_VP8_LEVEL_VERSION_3 = 0x00000008,
};

enum hal_tme_profile {
+12 −15
Original line number Diff line number Diff line
@@ -84,6 +84,8 @@
#define HFI_VIDEO_CODEC_TME				0x00008000

#define HFI_PROFILE_UNKNOWN				0x00000000
#define HFI_LEVEL_UNKNOWN				0x00000000

#define HFI_H264_PROFILE_BASELINE			0x00000001
#define HFI_H264_PROFILE_MAIN				0x00000002
#define HFI_H264_PROFILE_HIGH				0x00000004
@@ -113,22 +115,17 @@

#define HFI_MPEG2_PROFILE_SIMPLE			0x00000001
#define HFI_MPEG2_PROFILE_MAIN				0x00000002
#define HFI_MPEG2_PROFILE_422				0x00000004
#define HFI_MPEG2_PROFILE_SNR				0x00000008
#define HFI_MPEG2_PROFILE_SPATIAL			0x00000010
#define HFI_MPEG2_PROFILE_HIGH				0x00000020

#define HFI_MPEG2_LEVEL_LL					0x00000001
#define HFI_MPEG2_LEVEL_ML					0x00000002
#define HFI_MPEG2_LEVEL_H14					0x00000004
#define HFI_MPEG2_LEVEL_HL					0x00000008
#define HFI_MPEG2_LEVEL_HL					0x00000004

#define HFI_VPX_PROFILE_MAIN			0x00000001
#define HFI_VP8_PROFILE_MAIN			0x00000001

#define HFI_VPX_LEVEL_VERSION_0			0x00000001
#define HFI_VPX_LEVEL_VERSION_1			0x00000002
#define HFI_VPX_LEVEL_VERSION_2			0x00000004
#define HFI_VPX_LEVEL_VERSION_3			0x00000008
#define HFI_VP8_LEVEL_VERSION_0			0x00000001
#define HFI_VP8_LEVEL_VERSION_1			0x00000002
#define HFI_VP8_LEVEL_VERSION_2			0x00000004
#define HFI_VP8_LEVEL_VERSION_3			0x00000008

#define  HFI_HEVC_PROFILE_MAIN			0x00000001
#define  HFI_HEVC_PROFILE_MAIN10		0x00000002