Loading drivers/media/platform/msm/vidc/hfi_packetization.c +8 −0 Original line number Diff line number Diff line Loading @@ -1936,6 +1936,14 @@ int create_pkt_cmd_session_set_property( sizeof(struct hfi_aspect_ratio); break; } case HAL_PARAM_VENC_BITRATE_TYPE: { create_pkt_enable(pkt->rg_property_data, HFI_PROPERTY_PARAM_VENC_BITRATE_TYPE, ((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: Loading drivers/media/platform/msm/vidc/msm_venc.c +26 −0 Original line number Diff line number Diff line Loading @@ -1173,6 +1173,15 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = { .default_value = 0, .step = OPERATING_FRAME_RATE_STEP, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_TYPE, .name = "BITRATE TYPE", .type = V4L2_CTRL_TYPE_BOOLEAN, .minimum = V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_DISABLE, .maximum = V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_ENABLE, .default_value = V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_ENABLE, .step = 1, }, }; #define NUM_CTRLS ARRAY_SIZE(msm_venc_ctrls) Loading Loading @@ -1514,6 +1523,7 @@ static int set_bitrate_for_each_layer(struct msm_vidc_inst *inst, int i = 0, rc = 0; struct hfi_device *hdev = NULL; struct hal_bitrate bitrate; struct hal_enable enable; int bitrate_table[3][4] = { {50, 50, 0, 0}, {34, 33, 33, 0}, Loading @@ -1532,6 +1542,15 @@ static int set_bitrate_for_each_layer(struct msm_vidc_inst *inst, } hdev = inst->core->device; property_id = HAL_PARAM_VENC_BITRATE_TYPE; enable.enable = V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_ENABLE; rc = call_hfi_op(hdev, session_set_property, (void *)inst->session, property_id, &enable); if (rc) { dprintk(VIDC_ERR, "Failed to set layerwise bitrate\n"); return false; } for (i = 0; !rc && i <= num_enh_layers; i++) { property_id = HAL_CONFIG_VENC_TARGET_BITRATE; bitrate.bit_rate = (u32)((total_bitrate * Loading Loading @@ -2924,6 +2943,13 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl) break; case V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE: break; case V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_TYPE: { property_id = HAL_PARAM_VENC_BITRATE_TYPE; enable.enable = ctrl->val; pdata = &enable; break; } default: dprintk(VIDC_ERR, "Unsupported index: %x\n", ctrl->id); rc = -ENOTSUPP; Loading drivers/media/platform/msm/vidc/vidc_hfi_api.h +1 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,7 @@ enum hal_property { HAL_PARAM_VENC_VQZIP_SEI, HAL_PROPERTY_PARAM_VENC_ASPECT_RATIO, HAL_CONFIG_VDEC_ENTROPY, HAL_PARAM_VENC_BITRATE_TYPE, }; enum hal_domain { Loading drivers/media/platform/msm/vidc/vidc_hfi_helper.h +2 −0 Original line number Diff line number Diff line Loading @@ -369,6 +369,8 @@ struct hfi_buffer_info { (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x02C) #define HFI_PROPERTY_PARAM_VENC_HIER_P_HYBRID_MODE \ (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x02F) #define HFI_PROPERTY_PARAM_VENC_BITRATE_TYPE \ (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x031) #define HFI_PROPERTY_PARAM_VENC_VQZIP_SEI_TYPE \ (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x033) Loading include/uapi/linux/v4l2-controls.h +9 −0 Original line number Diff line number Diff line Loading @@ -1107,6 +1107,15 @@ enum v4l2_mpeg_vidc_video_priority { #define V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE \ (V4L2_CID_MPEG_MSM_VIDC_BASE + 84) #define V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_TYPE \ (V4L2_CID_MPEG_MSM_VIDC_BASE + 85) enum v4l2_mpeg_vidc_video_venc_bitrate_type_enable { V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_DISABLE = 0, V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_ENABLE = 1 }; /* Camera class control IDs */ #define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900) Loading Loading
drivers/media/platform/msm/vidc/hfi_packetization.c +8 −0 Original line number Diff line number Diff line Loading @@ -1936,6 +1936,14 @@ int create_pkt_cmd_session_set_property( sizeof(struct hfi_aspect_ratio); break; } case HAL_PARAM_VENC_BITRATE_TYPE: { create_pkt_enable(pkt->rg_property_data, HFI_PROPERTY_PARAM_VENC_BITRATE_TYPE, ((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: Loading
drivers/media/platform/msm/vidc/msm_venc.c +26 −0 Original line number Diff line number Diff line Loading @@ -1173,6 +1173,15 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = { .default_value = 0, .step = OPERATING_FRAME_RATE_STEP, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_TYPE, .name = "BITRATE TYPE", .type = V4L2_CTRL_TYPE_BOOLEAN, .minimum = V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_DISABLE, .maximum = V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_ENABLE, .default_value = V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_ENABLE, .step = 1, }, }; #define NUM_CTRLS ARRAY_SIZE(msm_venc_ctrls) Loading Loading @@ -1514,6 +1523,7 @@ static int set_bitrate_for_each_layer(struct msm_vidc_inst *inst, int i = 0, rc = 0; struct hfi_device *hdev = NULL; struct hal_bitrate bitrate; struct hal_enable enable; int bitrate_table[3][4] = { {50, 50, 0, 0}, {34, 33, 33, 0}, Loading @@ -1532,6 +1542,15 @@ static int set_bitrate_for_each_layer(struct msm_vidc_inst *inst, } hdev = inst->core->device; property_id = HAL_PARAM_VENC_BITRATE_TYPE; enable.enable = V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_ENABLE; rc = call_hfi_op(hdev, session_set_property, (void *)inst->session, property_id, &enable); if (rc) { dprintk(VIDC_ERR, "Failed to set layerwise bitrate\n"); return false; } for (i = 0; !rc && i <= num_enh_layers; i++) { property_id = HAL_CONFIG_VENC_TARGET_BITRATE; bitrate.bit_rate = (u32)((total_bitrate * Loading Loading @@ -2924,6 +2943,13 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl) break; case V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE: break; case V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_TYPE: { property_id = HAL_PARAM_VENC_BITRATE_TYPE; enable.enable = ctrl->val; pdata = &enable; break; } default: dprintk(VIDC_ERR, "Unsupported index: %x\n", ctrl->id); rc = -ENOTSUPP; Loading
drivers/media/platform/msm/vidc/vidc_hfi_api.h +1 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,7 @@ enum hal_property { HAL_PARAM_VENC_VQZIP_SEI, HAL_PROPERTY_PARAM_VENC_ASPECT_RATIO, HAL_CONFIG_VDEC_ENTROPY, HAL_PARAM_VENC_BITRATE_TYPE, }; enum hal_domain { Loading
drivers/media/platform/msm/vidc/vidc_hfi_helper.h +2 −0 Original line number Diff line number Diff line Loading @@ -369,6 +369,8 @@ struct hfi_buffer_info { (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x02C) #define HFI_PROPERTY_PARAM_VENC_HIER_P_HYBRID_MODE \ (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x02F) #define HFI_PROPERTY_PARAM_VENC_BITRATE_TYPE \ (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x031) #define HFI_PROPERTY_PARAM_VENC_VQZIP_SEI_TYPE \ (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x033) Loading
include/uapi/linux/v4l2-controls.h +9 −0 Original line number Diff line number Diff line Loading @@ -1107,6 +1107,15 @@ enum v4l2_mpeg_vidc_video_priority { #define V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE \ (V4L2_CID_MPEG_MSM_VIDC_BASE + 84) #define V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_TYPE \ (V4L2_CID_MPEG_MSM_VIDC_BASE + 85) enum v4l2_mpeg_vidc_video_venc_bitrate_type_enable { V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_DISABLE = 0, V4L2_CID_MPEG_VIDC_VIDEO_VENC_BITRATE_ENABLE = 1 }; /* Camera class control IDs */ #define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900) Loading