Loading drivers/media/platform/msm/vidc/msm_venc.c +32 −10 Original line number Diff line number Diff line Loading @@ -1029,6 +1029,11 @@ static u32 get_enc_input_extra_size(struct msm_vidc_inst *inst, u32 extra_types) u32 size = 0; u32 width = inst->prop.width[OUTPUT_PORT]; u32 height = inst->prop.height[OUTPUT_PORT]; u32 extradata_count = 0; /* Add size for default extradata */ size += sizeof(struct msm_vidc_enc_cvp_metadata_payload); extradata_count++; if (extra_types & EXTRADATA_ENC_INPUT_ROI) { u32 lcu_size = 16; Loading @@ -1037,14 +1042,18 @@ static u32 get_enc_input_extra_size(struct msm_vidc_inst *inst, u32 extra_types) lcu_size = 32; size += ROI_EXTRADATA_SIZE(width, height, lcu_size); extradata_count++; } if (extra_types & EXTRADATA_ENC_INPUT_HDR10PLUS) if (extra_types & EXTRADATA_ENC_INPUT_HDR10PLUS) { size += sizeof(struct hfi_hdr10_pq_sei); extradata_count++; } /* Add size for extradata none */ /* Add extradata header sizes including EXTRADATA_NONE */ if (size) size += sizeof(struct msm_vidc_extradata_header); size += sizeof(struct msm_vidc_extradata_header) * (extradata_count + 1); return ALIGN(size, SZ_4K); } Loading Loading @@ -1170,6 +1179,7 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst) { int rc = 0; struct msm_vidc_format *fmt = NULL; struct hal_buffer_requirements *buff_req_buffer = NULL; if (!inst) { dprintk(VIDC_ERR, "Invalid input = %pK\n", inst); Loading @@ -1189,8 +1199,8 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst) inst->buffer_mode_set[CAPTURE_PORT] = HAL_BUFFER_MODE_STATIC; inst->clk_data.frame_rate = (DEFAULT_FPS << 16); inst->capability.pixelprocess_capabilities = 0; /* To start with, both ports are 1 plane each */ inst->bufq[OUTPUT_PORT].num_planes = 1; inst->bufq[OUTPUT_PORT].num_planes = 2; inst->bufq[CAPTURE_PORT].num_planes = 1; inst->clk_data.operating_rate = (DEFAULT_FPS << 16); Loading Loading @@ -1218,6 +1228,19 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst) inst->buff_req.buffer[13].buffer_type = HAL_BUFFER_INTERNAL_RECON; msm_vidc_init_buffer_size_calculators(inst); buff_req_buffer = get_buff_req_buffer(inst, HAL_BUFFER_EXTRADATA_INPUT); if (!buff_req_buffer) { dprintk(VIDC_ERR, "Failed to get extradata buff info\n"); return -EINVAL; } buff_req_buffer->buffer_size = get_enc_input_extra_size(inst, EXTRADATA_DEFAULT); inst->bufq[OUTPUT_PORT].plane_sizes[1] = buff_req_buffer->buffer_size; /* By default, initialize OUTPUT port to UBWC YUV format */ fmt = msm_comm_get_pixel_fmt_fourcc(venc_formats, ARRAY_SIZE(venc_formats), V4L2_PIX_FMT_NV12_UBWC, Loading Loading @@ -1669,13 +1692,8 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl) } break; case V4L2_CID_MPEG_VIDC_VIDEO_EXTRADATA: inst->bufq[OUTPUT_PORT].num_planes = 1; inst->bufq[CAPTURE_PORT].num_planes = 1; if ((ctrl->val & EXTRADATA_ENC_INPUT_ROI) || (ctrl->val & EXTRADATA_ENC_INPUT_HDR10PLUS)) { inst->bufq[OUTPUT_PORT].num_planes = 2; buff_req_buffer = get_buff_req_buffer(inst, HAL_BUFFER_EXTRADATA_INPUT); if (!buff_req_buffer) { Loading Loading @@ -3304,6 +3322,10 @@ int msm_venc_set_extradata(struct msm_vidc_inst *inst) } } /* Always enable default extradata */ rc = msm_comm_set_extradata(inst, HFI_PROPERTY_PARAM_VENC_CVP_METADATA_EXTRADATA, 0x1); if (ctrl->val & EXTRADATA_ADVANCED) // Enable Advanced Extradata - LTR Info msm_comm_set_extradata(inst, Loading drivers/media/platform/msm/vidc/vidc_hfi.h +2 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,8 @@ struct hfi_extradata_header { (HFI_PROPERTY_PARAM_VENC_OX_START + 0x008) #define HFI_PROPERTY_PARAM_VENC_HDR10PLUS_METADATA_EXTRADATA \ (HFI_PROPERTY_PARAM_VENC_OX_START + 0x00A) #define HFI_PROPERTY_PARAM_VENC_CVP_METADATA_EXTRADATA \ (HFI_PROPERTY_PARAM_VENC_OX_START + 0x00B) #define HFI_PROPERTY_CONFIG_VENC_OX_START \ (HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x6000) Loading include/uapi/media/msm_vidc_utils.h +5 −0 Original line number Diff line number Diff line Loading @@ -184,6 +184,11 @@ struct msm_vidc_hdr10plus_metadata_payload { __u32 data[1]; }; #define MSM_VIDC_EXTRADATA_CVP_METADATA 0x0000001B struct msm_vidc_enc_cvp_metadata_payload { __u32 data[256]; }; /* video_format */ #define MSM_VIDC_COMPONENT 0 #define MSM_VIDC_PAL 1 Loading Loading
drivers/media/platform/msm/vidc/msm_venc.c +32 −10 Original line number Diff line number Diff line Loading @@ -1029,6 +1029,11 @@ static u32 get_enc_input_extra_size(struct msm_vidc_inst *inst, u32 extra_types) u32 size = 0; u32 width = inst->prop.width[OUTPUT_PORT]; u32 height = inst->prop.height[OUTPUT_PORT]; u32 extradata_count = 0; /* Add size for default extradata */ size += sizeof(struct msm_vidc_enc_cvp_metadata_payload); extradata_count++; if (extra_types & EXTRADATA_ENC_INPUT_ROI) { u32 lcu_size = 16; Loading @@ -1037,14 +1042,18 @@ static u32 get_enc_input_extra_size(struct msm_vidc_inst *inst, u32 extra_types) lcu_size = 32; size += ROI_EXTRADATA_SIZE(width, height, lcu_size); extradata_count++; } if (extra_types & EXTRADATA_ENC_INPUT_HDR10PLUS) if (extra_types & EXTRADATA_ENC_INPUT_HDR10PLUS) { size += sizeof(struct hfi_hdr10_pq_sei); extradata_count++; } /* Add size for extradata none */ /* Add extradata header sizes including EXTRADATA_NONE */ if (size) size += sizeof(struct msm_vidc_extradata_header); size += sizeof(struct msm_vidc_extradata_header) * (extradata_count + 1); return ALIGN(size, SZ_4K); } Loading Loading @@ -1170,6 +1179,7 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst) { int rc = 0; struct msm_vidc_format *fmt = NULL; struct hal_buffer_requirements *buff_req_buffer = NULL; if (!inst) { dprintk(VIDC_ERR, "Invalid input = %pK\n", inst); Loading @@ -1189,8 +1199,8 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst) inst->buffer_mode_set[CAPTURE_PORT] = HAL_BUFFER_MODE_STATIC; inst->clk_data.frame_rate = (DEFAULT_FPS << 16); inst->capability.pixelprocess_capabilities = 0; /* To start with, both ports are 1 plane each */ inst->bufq[OUTPUT_PORT].num_planes = 1; inst->bufq[OUTPUT_PORT].num_planes = 2; inst->bufq[CAPTURE_PORT].num_planes = 1; inst->clk_data.operating_rate = (DEFAULT_FPS << 16); Loading Loading @@ -1218,6 +1228,19 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst) inst->buff_req.buffer[13].buffer_type = HAL_BUFFER_INTERNAL_RECON; msm_vidc_init_buffer_size_calculators(inst); buff_req_buffer = get_buff_req_buffer(inst, HAL_BUFFER_EXTRADATA_INPUT); if (!buff_req_buffer) { dprintk(VIDC_ERR, "Failed to get extradata buff info\n"); return -EINVAL; } buff_req_buffer->buffer_size = get_enc_input_extra_size(inst, EXTRADATA_DEFAULT); inst->bufq[OUTPUT_PORT].plane_sizes[1] = buff_req_buffer->buffer_size; /* By default, initialize OUTPUT port to UBWC YUV format */ fmt = msm_comm_get_pixel_fmt_fourcc(venc_formats, ARRAY_SIZE(venc_formats), V4L2_PIX_FMT_NV12_UBWC, Loading Loading @@ -1669,13 +1692,8 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl) } break; case V4L2_CID_MPEG_VIDC_VIDEO_EXTRADATA: inst->bufq[OUTPUT_PORT].num_planes = 1; inst->bufq[CAPTURE_PORT].num_planes = 1; if ((ctrl->val & EXTRADATA_ENC_INPUT_ROI) || (ctrl->val & EXTRADATA_ENC_INPUT_HDR10PLUS)) { inst->bufq[OUTPUT_PORT].num_planes = 2; buff_req_buffer = get_buff_req_buffer(inst, HAL_BUFFER_EXTRADATA_INPUT); if (!buff_req_buffer) { Loading Loading @@ -3304,6 +3322,10 @@ int msm_venc_set_extradata(struct msm_vidc_inst *inst) } } /* Always enable default extradata */ rc = msm_comm_set_extradata(inst, HFI_PROPERTY_PARAM_VENC_CVP_METADATA_EXTRADATA, 0x1); if (ctrl->val & EXTRADATA_ADVANCED) // Enable Advanced Extradata - LTR Info msm_comm_set_extradata(inst, Loading
drivers/media/platform/msm/vidc/vidc_hfi.h +2 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,8 @@ struct hfi_extradata_header { (HFI_PROPERTY_PARAM_VENC_OX_START + 0x008) #define HFI_PROPERTY_PARAM_VENC_HDR10PLUS_METADATA_EXTRADATA \ (HFI_PROPERTY_PARAM_VENC_OX_START + 0x00A) #define HFI_PROPERTY_PARAM_VENC_CVP_METADATA_EXTRADATA \ (HFI_PROPERTY_PARAM_VENC_OX_START + 0x00B) #define HFI_PROPERTY_CONFIG_VENC_OX_START \ (HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x6000) Loading
include/uapi/media/msm_vidc_utils.h +5 −0 Original line number Diff line number Diff line Loading @@ -184,6 +184,11 @@ struct msm_vidc_hdr10plus_metadata_payload { __u32 data[1]; }; #define MSM_VIDC_EXTRADATA_CVP_METADATA 0x0000001B struct msm_vidc_enc_cvp_metadata_payload { __u32 data[256]; }; /* video_format */ #define MSM_VIDC_COMPONENT 0 #define MSM_VIDC_PAL 1 Loading