Merge "vidc: Enable skip output buffers for video encoder"

This commit is contained in:
Linux Build Service Account 2017-09-22 17:26:45 -07:00 committed by Gerrit - the friendly Code Review server
commit 751d87898b
5 changed files with 48 additions and 1 deletions

View file

@ -2180,6 +2180,15 @@ int create_pkt_cmd_session_set_property(
pkt->size += sizeof(u32) + sizeof(struct hfi_iframe_size);
break;
}
case HAL_PARAM_VENC_SEND_OUTPUT_FOR_SKIPPED_FRAME:
{
create_pkt_enable(pkt->rg_property_data,
HFI_PROPERTY_PARAM_VENC_SEND_OUTPUT_FOR_SKIPPED_FRAMES,
((struct hal_enable *)pdata)->enable);
pkt->size += sizeof(u32) + sizeof(struct hfi_enable);
break;
}
/* FOLLOWING PROPERTIES ARE NOT IMPLEMENTED IN CORE YET */
case HAL_CONFIG_BUFFER_REQUIREMENTS:
case HAL_CONFIG_PRIORITY:

View file

@ -1423,7 +1423,16 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
(1 << V4L2_CID_MPEG_VIDC_VIDEO_IFRAME_SIZE_UNLIMITED)),
.qmenu = iframe_sizes,
},
{
.id = V4L2_CID_MPEG_VIDC_VIDEO_SEND_SKIPPED_FRAME,
.name = "Send encoder output buffer for skipped frames",
.type = V4L2_CTRL_TYPE_BOOLEAN,
.minimum = V4L2_MPEG_VIDC_VIDEO_SEND_SKIPPED_FRAME_DISABLE,
.maximum = V4L2_MPEG_VIDC_VIDEO_SEND_SKIPPED_FRAME_ENABLE,
.default_value =
V4L2_MPEG_VIDC_VIDEO_SEND_SKIPPED_FRAME_DISABLE,
.step = 1,
}
};
#define NUM_CTRLS ARRAY_SIZE(msm_venc_ctrls)
@ -3712,6 +3721,25 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
ctrl->val);
pdata = &iframesize_type;
break;
case V4L2_CID_MPEG_VIDC_VIDEO_SEND_SKIPPED_FRAME:
property_id = HAL_PARAM_VENC_SEND_OUTPUT_FOR_SKIPPED_FRAME;
switch (ctrl->val) {
case V4L2_MPEG_VIDC_VIDEO_SEND_SKIPPED_FRAME_ENABLE:
enable.enable = 1;
break;
case V4L2_MPEG_VIDC_VIDEO_SEND_SKIPPED_FRAME_DISABLE:
enable.enable = 0;
break;
default:
dprintk(VIDC_ERR,
"Invalid send skipped frames control value %d\n",
ctrl->val);
rc = -ENOTSUPP;
break;
}
pdata = &enable;
break;
default:
dprintk(VIDC_ERR, "Unsupported index: %x\n", ctrl->id);
rc = -ENOTSUPP;

View file

@ -243,6 +243,7 @@ enum hal_property {
HAL_PARAM_VENC_H264_TRANSFORM_8x8,
HAL_PARAM_VENC_VIDEO_SIGNAL_INFO,
HAL_PARAM_VENC_IFRAMESIZE_TYPE,
HAL_PARAM_VENC_SEND_OUTPUT_FOR_SKIPPED_FRAME
};
enum hal_domain {

View file

@ -388,6 +388,8 @@ struct hfi_buffer_info {
(HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x033)
#define HFI_PROPERTY_PARAM_VENC_IFRAMESIZE \
(HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x034)
#define HFI_PROPERTY_PARAM_VENC_SEND_OUTPUT_FOR_SKIPPED_FRAMES \
(HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x035)
#define HFI_PROPERTY_CONFIG_VENC_COMMON_START \
(HFI_DOMAIN_BASE_VENC + HFI_ARCH_COMMON_OFFSET + 0x6000)

View file

@ -1225,6 +1225,13 @@ enum v4l2_mpeg_vidc_video_au_delimiter {
V4L2_MPEG_VIDC_VIDEO_AU_DELIMITER_ENABLED = 1
};
#define V4L2_CID_MPEG_VIDC_VIDEO_SEND_SKIPPED_FRAME \
(V4L2_CID_MPEG_MSM_VIDC_BASE + 103)
enum v4l2_mpeg_vidc_video_venc_send_skipped_frame {
V4L2_MPEG_VIDC_VIDEO_SEND_SKIPPED_FRAME_DISABLE = 0,
V4L2_MPEG_VIDC_VIDEO_SEND_SKIPPED_FRAME_ENABLE = 1
};
/* Camera class control IDs */