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

Commit d69a7bb1 authored by Vinay Kalia's avatar Vinay Kalia
Browse files

msm: vidc: Add new MBI mode



Add new MBI mode for configuring encoder to produce both
forward and backward motion vectors. MBI information is
embedded in the extradata associated with corresponding
bitstream buffer. When this mode is enabled video encoders
steady state behavior is as follows:

+------+-------+-------------------------------------+
| Time | Input |               Output                |
+------+-------+-------------------------------------+
|  T1  |   A   |                                     |
+------+-------+-------------------------------------+
|  T2  |   B   | encoded(A) + MBI(A<-B) + MBI (A->B) |
+------+-------+-------------------------------------+
|  T3  |   C   | encoded(B) + MBI(B<-C) + MBI (B->C) |
+------+-------+-------------------------------------+

Change-Id: Iafb1cf6670930a4b1a2abff009c1034a89b25b5b
Signed-off-by: default avatarVinay Kalia <vkalia@codeaurora.org>
parent ef0d0e07
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ static int statistics_mode[] = {
	[ilog2(HAL_STATISTICS_MODE_DEFAULT)] = HFI_STATISTICS_MODE_DEFAULT,
	[ilog2(HAL_STATISTICS_MODE_1)] = HFI_STATISTICS_MODE_1,
	[ilog2(HAL_STATISTICS_MODE_2)] = HFI_STATISTICS_MODE_2,
	[ilog2(HAL_STATISTICS_MODE_3)] = HFI_STATISTICS_MODE_3,
};

static int color_format[] = {
+7 −3
Original line number Diff line number Diff line
@@ -186,7 +186,8 @@ static const char *const perf_level[] = {
static const char *const mbi_statistics[] = {
	"Camcorder Default",
	"Mode 1",
	"Mode 2"
	"Mode 2",
	"Mode 3"
};

static const char *const intra_refresh_modes[] = {
@@ -1062,12 +1063,13 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
		.name = "MBI Statistics Mode",
		.type = V4L2_CTRL_TYPE_MENU,
		.minimum = V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_DEFAULT,
		.maximum = V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_2,
		.maximum = V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_3,
		.default_value = V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_DEFAULT,
		.menu_skip_mask = ~(
			(1 << V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_DEFAULT) |
			(1 << V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_1) |
			(1 << V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_2)),
			(1 << V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_2) |
			(1 << V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_3)),
		.qmenu = mbi_statistics,
	},
	{
@@ -1924,6 +1926,8 @@ static inline int venc_v4l2_to_hal(int id, int value)
			return HAL_STATISTICS_MODE_1;
		case V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_2:
			return HAL_STATISTICS_MODE_2;
		case V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_3:
			return HAL_STATISTICS_MODE_3;
		default:
			goto unknown_value;
		}
+1 −0
Original line number Diff line number Diff line
@@ -533,6 +533,7 @@ enum hal_statistics_mode_type {
	HAL_STATISTICS_MODE_DEFAULT	= 0x00000001,
	HAL_STATISTICS_MODE_1		= 0x00000002,
	HAL_STATISTICS_MODE_2		= 0x00000004,
	HAL_STATISTICS_MODE_3		= 0x00000008,
};

enum hal_ssr_trigger_type {
+1 −0
Original line number Diff line number Diff line
@@ -704,6 +704,7 @@ struct hfi_picture_type {
#define HFI_STATISTICS_MODE_DEFAULT 0x10
#define HFI_STATISTICS_MODE_1 0x11
#define HFI_STATISTICS_MODE_2 0x12
#define HFI_STATISTICS_MODE_3 0x13

struct hfi_uncompressed_format_select {
	u32 buffer_type;
+1 −0
Original line number Diff line number Diff line
@@ -1060,6 +1060,7 @@ enum v4l2_mpeg_vidc_video_mbi_statistics_mode {
	V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_DEFAULT	= 0,
	V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_1		= 1,
	V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_2		= 2,
	V4L2_CID_MPEG_VIDC_VIDEO_MBI_MODE_3		= 3,
};

#define V4L2_CID_VIDC_QBUF_MODE \