mirror of
https://github.com/LineageOS/android_kernel_samsung_msm8226.git
synced 2026-09-29 00:00:25 +02:00
msm_vidc: vidc: Add support for GOB in driver and v4l2 framework.
GOB control was missing in v4l2 framework, so GOB settings could not be conveyed to firmware. This change adds the GOB support in v4l2 framework and driver. CRs-fixed: 433888 Change-Id: Ia276782042ba1b275ec4350b64183c14ada000be Signed-off-by: Ashray Kulkarni <ashrayk@codeaurora.org>
This commit is contained in:
@@ -390,10 +390,16 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
|
||||
.name = "Slice Mode",
|
||||
.type = V4L2_CTRL_TYPE_MENU,
|
||||
.minimum = V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE,
|
||||
.maximum = V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES,
|
||||
.maximum = V4L2_MPEG_VIDEO_MULTI_SLICE_GOB,
|
||||
.default_value = V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE,
|
||||
.step = 1,
|
||||
.menu_skip_mask = 0,
|
||||
.menu_skip_mask = ~(
|
||||
(1 << V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE) |
|
||||
(1 << V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB) |
|
||||
(1 << V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES) |
|
||||
(1 << V4L2_MPEG_VIDEO_MULTI_SLICE_GOB)
|
||||
),
|
||||
.qmenu = NULL,
|
||||
.cluster = MSM_VENC_CTRL_CLUSTER_SLICING,
|
||||
},
|
||||
{
|
||||
@@ -420,6 +426,18 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
|
||||
.qmenu = NULL,
|
||||
.cluster = MSM_VENC_CTRL_CLUSTER_SLICING,
|
||||
},
|
||||
{
|
||||
.id = V4L2_CID_MPEG_VIDEO_MULTI_SLICE_GOB,
|
||||
.name = "Slice GOB",
|
||||
.type = V4L2_CTRL_TYPE_INTEGER,
|
||||
.minimum = 1,
|
||||
.maximum = MAX_SLICE_MB_SIZE,
|
||||
.default_value = 1,
|
||||
.step = 1,
|
||||
.menu_skip_mask = 0,
|
||||
.qmenu = NULL,
|
||||
.cluster = MSM_VENC_CTRL_CLUSTER_SLICING,
|
||||
},
|
||||
{
|
||||
.id = V4L2_CID_MPEG_VIDC_VIDEO_INTRA_REFRESH_MODE,
|
||||
.name = "Intra Refresh Mode",
|
||||
@@ -1281,6 +1299,9 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
|
||||
case V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES:
|
||||
temp = V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES;
|
||||
break;
|
||||
case V4L2_MPEG_VIDEO_MULTI_SLICE_GOB:
|
||||
temp = V4L2_CID_MPEG_VIDEO_MULTI_SLICE_GOB;
|
||||
break;
|
||||
case V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE:
|
||||
default:
|
||||
temp = 0;
|
||||
@@ -1300,6 +1321,7 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
|
||||
}
|
||||
case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES:
|
||||
case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB:
|
||||
case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_GOB:
|
||||
temp_ctrl = TRY_GET_CTRL(V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE);
|
||||
|
||||
property_id =
|
||||
|
||||
@@ -259,6 +259,7 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
|
||||
"Single",
|
||||
"Max Macroblocks",
|
||||
"Max Bytes",
|
||||
"GOB",
|
||||
NULL,
|
||||
};
|
||||
static const char * const entropy_mode[] = {
|
||||
|
||||
@@ -1498,6 +1498,7 @@ enum v4l2_mpeg_video_multi_slice_mode {
|
||||
V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0,
|
||||
V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB = 1,
|
||||
V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2,
|
||||
V4L2_MPEG_VIDEO_MULTI_SLICE_GOB = 3,
|
||||
};
|
||||
#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE+222)
|
||||
#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE+223)
|
||||
@@ -1845,7 +1846,8 @@ enum v4l2_mpeg_vidc_perf_level {
|
||||
V4L2_CID_MPEG_VIDC_PERF_LEVEL_PERFORMANCE = 0,
|
||||
V4L2_CID_MPEG_VIDC_PERF_LEVEL_TURBO = 1,
|
||||
};
|
||||
|
||||
#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_GOB \
|
||||
(V4L2_CID_MPEG_MSM_VIDC_BASE+27)
|
||||
/* Camera class control IDs */
|
||||
#define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
|
||||
#define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1)
|
||||
|
||||
Reference in New Issue
Block a user