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:
Zhongbo Shi
2022-05-10 10:51:42 +08:00
committed by Shi Zhongbo
parent 9ee0638b20
commit f781c619a9
9 changed files with 54 additions and 7 deletions

View File

@@ -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

View File

@@ -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,

View File

@@ -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;
}

View File

@@ -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" },

View File

@@ -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;