video-driver: add to support DolbyVision metadata
1. add DolbyVision metadata cap and V4L2 id; 2. Increase decoder persist buffer size; 3. Increase decoder output meta buffer size; 4. Increase encoder input meta buffer size; 5. Parse buffer overflow flag and set buffer flag accordingly; Change-Id: I8fa5e89068dd479033d28f627e585edc3a1c58bb Signed-off-by: Zhongbo Shi <quic_zhongbos@quicinc.com>
This commit is contained in:
@@ -563,6 +563,8 @@ enum hfi_saliency_type {
|
||||
|
||||
#define HFI_PROP_TRANSCODING_STAT_INFO 0x03000191
|
||||
|
||||
#define HFI_PROP_DOLBY_RPU_METADATA 0x03000192
|
||||
|
||||
#define HFI_PROP_END 0x03FFFFFF
|
||||
|
||||
#define HFI_SESSION_ERROR_BEGIN 0x04000000
|
||||
|
@@ -384,6 +384,7 @@ enum msm_vidc_inst_capability_type {
|
||||
META_ROI_INFO,
|
||||
META_SALIENCY_INFO,
|
||||
META_TRANSCODING_STAT_INFO,
|
||||
META_DOLBY_RPU,
|
||||
META_CAP_MAX,
|
||||
/* end of metadata caps */
|
||||
FRAME_WIDTH,
|
||||
|
@@ -287,7 +287,12 @@ u32 msm_vidc_decoder_input_meta_size(struct msm_vidc_inst *inst)
|
||||
|
||||
u32 msm_vidc_decoder_output_meta_size(struct msm_vidc_inst *inst)
|
||||
{
|
||||
return MSM_VIDC_METADATA_SIZE;
|
||||
u32 size = MSM_VIDC_METADATA_SIZE;
|
||||
|
||||
if (inst->capabilities->cap[META_DOLBY_RPU].value)
|
||||
size += MSM_VIDC_METADATA_DOLBY_RPU_SIZE;
|
||||
|
||||
return ALIGN(size, SZ_4K);
|
||||
}
|
||||
|
||||
u32 msm_vidc_encoder_input_size(struct msm_vidc_inst *inst)
|
||||
@@ -450,6 +455,11 @@ u32 msm_vidc_encoder_input_meta_size(struct msm_vidc_inst *inst)
|
||||
size += ROI_METADATA_SIZE(width, height, lcu_size);
|
||||
size = ALIGN(size, SZ_4K);
|
||||
}
|
||||
|
||||
if (inst->capabilities->cap[META_DOLBY_RPU].value) {
|
||||
size += MSM_VIDC_METADATA_DOLBY_RPU_SIZE;
|
||||
size = ALIGN(size, SZ_4K);
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
|
@@ -83,6 +83,7 @@ static const struct msm_vidc_cap_name cap_name_arr[] = {
|
||||
{META_ROI_INFO, "META_ROI_INFO" },
|
||||
{META_SALIENCY_INFO, "META_SALIENCY_INFO" },
|
||||
{META_TRANSCODING_STAT_INFO, "META_TRANSCODING_STAT_INFO" },
|
||||
{META_DOLBY_RPU, "META_DOLBY_RPU" },
|
||||
{META_CAP_MAX, "META_CAP_MAX" },
|
||||
{FRAME_WIDTH, "FRAME_WIDTH" },
|
||||
{LOSSLESS_FRAME_WIDTH, "LOSSLESS_FRAME_WIDTH" },
|
||||
|
@@ -338,6 +338,10 @@ static int handle_session_info(struct msm_vidc_inst *inst,
|
||||
info = "data corrupt";
|
||||
inst->hfi_frame_info.data_corrupt = 1;
|
||||
break;
|
||||
case HFI_INFO_BUFFER_OVERFLOW:
|
||||
info = "buffer overflow";
|
||||
inst->hfi_frame_info.overflow = 1;
|
||||
break;
|
||||
default:
|
||||
info = "unknown";
|
||||
break;
|
||||
|
Reference in New Issue
Block a user