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

Commit ce60f3d6 authored by Arun Menon's avatar Arun Menon
Browse files

msm: vidc: Add support for output crop extra data



Venus firmware reports the crop dimensions for
each FBD in the extra data buffer. This change is
needed to support the new extra data type -
MSM_VIDC_EXTRADATA_OUTPUT_CROP.

CRs-Fixed: 999551
Change-Id: I3d1aa4a44701192e4bd85bdee29d6f2a49b9e5a7
Signed-off-by: default avatarArun Menon <avmenon@codeaurora.org>
parent fe142d0b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -635,6 +635,7 @@ static int get_hfi_extradata_index(enum hal_extradata_id index)
	case HAL_EXTRADATA_ASPECT_RATIO:
	case HAL_EXTRADATA_INPUT_CROP:
	case HAL_EXTRADATA_DIGITAL_ZOOM:
	case HAL_EXTRADATA_OUTPUT_CROP:
		ret = HFI_PROPERTY_PARAM_INDEX_EXTRADATA;
		break;
	case HAL_EXTRADATA_MPEG2_SEQDISP:
@@ -684,6 +685,9 @@ static int get_hfi_extradata_id(enum hal_extradata_id index)
	case HAL_EXTRADATA_DIGITAL_ZOOM:
		ret = MSM_VIDC_EXTRADATA_DIGITAL_ZOOM;
		break;
	case HAL_EXTRADATA_OUTPUT_CROP:
		ret = MSM_VIDC_EXTRADATA_OUTPUT_CROP;
		break;
	default:
		ret = get_hfi_extradata_index(index);
		break;
+4 −2
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ static const char *const mpeg_video_vidc_extradata[] = {
	"Extradata frame QP",
	"Extradata frame bits info",
	"Extradata VQZip SEI",
	"Extradata output crop",
};
static const char *const mpeg_vidc_video_alloc_mode_type[] = {
	"Buffer Allocation Static",
@@ -272,7 +273,7 @@ static struct msm_vidc_ctrl msm_vdec_ctrls[] = {
		.name = "Extradata Type",
		.type = V4L2_CTRL_TYPE_MENU,
		.minimum = V4L2_MPEG_VIDC_EXTRADATA_NONE,
		.maximum = V4L2_MPEG_VIDC_EXTRADATA_VQZIP_SEI,
		.maximum = V4L2_MPEG_VIDC_EXTRADATA_OUTPUT_CROP,
		.default_value = V4L2_MPEG_VIDC_EXTRADATA_NONE,
		.menu_skip_mask = ~(
			(1 << V4L2_MPEG_VIDC_EXTRADATA_NONE) |
@@ -295,7 +296,8 @@ static struct msm_vidc_ctrl msm_vdec_ctrls[] = {
			(1 << V4L2_MPEG_VIDC_EXTRADATA_STREAM_USERDATA) |
			(1 << V4L2_MPEG_VIDC_EXTRADATA_FRAME_QP) |
			(1 << V4L2_MPEG_VIDC_EXTRADATA_FRAME_BITS_INFO) |
			(1 << V4L2_MPEG_VIDC_EXTRADATA_VQZIP_SEI)
			(1 << V4L2_MPEG_VIDC_EXTRADATA_VQZIP_SEI) |
			(1 << V4L2_MPEG_VIDC_EXTRADATA_OUTPUT_CROP)
			),
		.qmenu = mpeg_video_vidc_extradata,
	},
+3 −0
Original line number Diff line number Diff line
@@ -4626,6 +4626,9 @@ enum hal_extradata_id msm_comm_get_hal_extradata_index(
	case V4L2_MPEG_VIDC_EXTRADATA_ROI_QP:
		ret = HAL_EXTRADATA_ROI_QP;
		break;
	case V4L2_MPEG_VIDC_EXTRADATA_OUTPUT_CROP:
		ret = HAL_EXTRADATA_OUTPUT_CROP;
		break;
	default:
		dprintk(VIDC_WARN, "Extradata not found: %d\n", index);
		break;
+14 −1
Original line number Diff line number Diff line
/* Copyright (c) 2012-2015, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -92,6 +92,7 @@
#define HFI_EXTRADATA_METADATA_FILLER		0x7FE00002

#define HFI_INDEX_EXTRADATA_INPUT_CROP		0x0700000E
#define HFI_INDEX_EXTRADATA_OUTPUT_CROP		0x0700000F
#define HFI_INDEX_EXTRADATA_ASPECT_RATIO	0x7F100003

struct hfi_buffer_alloc_mode {
@@ -842,6 +843,18 @@ struct hfi_index_extradata_input_crop_payload {
	u32 height;
};

struct hfi_index_extradata_output_crop_payload {
	u32 size;
	u32 version;
	u32 port_index;
	u32 left;
	u32 top;
	u32 display_width;
	u32 display_height;
	u32 width;
	u32 height;
};

struct hfi_index_extradata_digital_zoom_payload {
	u32 size;
	u32 version;
+2 −1
Original line number Diff line number Diff line
/* Copyright (c) 2012-2015, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -121,6 +121,7 @@ enum hal_extradata_id {
	HAL_EXTRADATA_VQZIP_SEI,
	HAL_EXTRADATA_YUV_STATS,
	HAL_EXTRADATA_ROI_QP,
	HAL_EXTRADATA_OUTPUT_CROP,
};

enum hal_property {
Loading