video: driver: enable image encode and decode support
Added change to enable image encode and decode support. Decoder: - codec: hevc - input buffer size: yuv size - run as turbo session - all intra session - disable dcvs & batching - ignore admission control(skip mbps, mbpf check) Encoder: - codec: hevc - rc mode: CQ - profile: MainStillPic - all intra session - output buffer size: 2 * yuv size - output dimension: 512 x 512 - disable dcvs & batching - ignore admission control(skip mbps, mbpf check) - skip scaling check - hfi: set grid enable & disable time_delta based rc. Change-Id: I0af47de1406a53d8d8bf1969a65b3a390b0aacb5 Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
此提交包含在:
@@ -50,7 +50,7 @@ static u32 msm_vidc_decoder_bin_size_iris2(struct msm_vidc_inst *inst)
|
||||
if (inst->codec == MSM_VIDC_H264)
|
||||
HFI_BUFFER_BIN_H264D(size, width, height,
|
||||
is_interlaced, vpp_delay, num_vpp_pipes);
|
||||
else if (inst->codec == MSM_VIDC_HEVC)
|
||||
else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC)
|
||||
HFI_BUFFER_BIN_H265D(size, width, height,
|
||||
0, vpp_delay, num_vpp_pipes);
|
||||
else if (inst->codec == MSM_VIDC_VP9)
|
||||
@@ -84,7 +84,7 @@ static u32 msm_vidc_decoder_comv_size_iris2(struct msm_vidc_inst* inst)
|
||||
|
||||
if (inst->codec == MSM_VIDC_H264)
|
||||
HFI_BUFFER_COMV_H264D(size, width, height, out_min_count);
|
||||
else if (inst->codec == MSM_VIDC_HEVC)
|
||||
else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC)
|
||||
HFI_BUFFER_COMV_H265D(size, width, height, out_min_count);
|
||||
|
||||
i_vpr_l(inst, "%s: size %d\n", __func__, size);
|
||||
@@ -115,7 +115,7 @@ static u32 msm_vidc_decoder_non_comv_size_iris2(struct msm_vidc_inst* inst)
|
||||
|
||||
if (inst->codec == MSM_VIDC_H264)
|
||||
HFI_BUFFER_NON_COMV_H264D(size, width, height, num_vpp_pipes);
|
||||
else if (inst->codec == MSM_VIDC_HEVC)
|
||||
else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC)
|
||||
HFI_BUFFER_NON_COMV_H265D(size, width, height, num_vpp_pipes);
|
||||
|
||||
i_vpr_l(inst, "%s: size %d\n", __func__, size);
|
||||
@@ -167,7 +167,7 @@ static u32 msm_vidc_decoder_line_size_iris2(struct msm_vidc_inst *inst)
|
||||
if (inst->codec == MSM_VIDC_H264)
|
||||
HFI_BUFFER_LINE_H264D(size, width, height, is_opb,
|
||||
num_vpp_pipes);
|
||||
else if (inst->codec == MSM_VIDC_HEVC)
|
||||
else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC)
|
||||
HFI_BUFFER_LINE_H265D(size, width, height, is_opb,
|
||||
num_vpp_pipes);
|
||||
else if (inst->codec == MSM_VIDC_VP9)
|
||||
@@ -189,7 +189,7 @@ static u32 msm_vidc_decoder_persist_size_iris2(struct msm_vidc_inst *inst)
|
||||
|
||||
if (inst->codec == MSM_VIDC_H264)
|
||||
HFI_BUFFER_PERSIST_H264D(size);
|
||||
else if (inst->codec == MSM_VIDC_HEVC)
|
||||
else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC)
|
||||
HFI_BUFFER_PERSIST_H265D(size);
|
||||
else if (inst->codec == MSM_VIDC_VP9)
|
||||
HFI_BUFFER_PERSIST_VP9D(size);
|
||||
@@ -269,7 +269,7 @@ static u32 msm_vidc_encoder_bin_size_iris2(struct msm_vidc_inst *inst)
|
||||
if (inst->codec == MSM_VIDC_H264)
|
||||
HFI_BUFFER_BIN_H264E(size, inst->hfi_rc_type, width,
|
||||
height, stage, num_vpp_pipes);
|
||||
else if (inst->codec == MSM_VIDC_HEVC)
|
||||
else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC)
|
||||
HFI_BUFFER_BIN_H265E(size, inst->hfi_rc_type, width,
|
||||
height, stage, num_vpp_pipes);
|
||||
|
||||
@@ -298,7 +298,7 @@ static u32 msm_vidc_encoder_comv_size_iris2(struct msm_vidc_inst* inst)
|
||||
HFI_CODEC_ENCODE_AVC);
|
||||
num_ref = num_recon - 1;
|
||||
HFI_BUFFER_COMV_H264E(size, width, height, num_ref);
|
||||
} else if (inst->codec == MSM_VIDC_HEVC) {
|
||||
} else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC) {
|
||||
// TODO: replace zeros with appropriate variables
|
||||
HFI_IRIS2_ENC_RECON_BUF_COUNT(num_recon, 0, 0, 0, 0, 0,
|
||||
HFI_CODEC_ENCODE_HEVC);
|
||||
@@ -333,7 +333,7 @@ static u32 msm_vidc_encoder_non_comv_size_iris2(struct msm_vidc_inst* inst)
|
||||
|
||||
if (inst->codec == MSM_VIDC_H264)
|
||||
HFI_BUFFER_NON_COMV_H264E(size, width, height, num_vpp_pipes);
|
||||
else if (inst->codec == MSM_VIDC_HEVC)
|
||||
else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC)
|
||||
HFI_BUFFER_NON_COMV_H265E(size, width, height, num_vpp_pipes);
|
||||
|
||||
i_vpr_l(inst, "%s: size %d\n", __func__, size);
|
||||
@@ -371,7 +371,7 @@ static u32 msm_vidc_encoder_line_size_iris2(struct msm_vidc_inst *inst)
|
||||
|
||||
if (inst->codec == MSM_VIDC_H264)
|
||||
HFI_BUFFER_LINE_H264E(size, width, height, is_tenbit, num_vpp_pipes);
|
||||
else if (inst->codec == MSM_VIDC_HEVC)
|
||||
else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC)
|
||||
HFI_BUFFER_LINE_H265E(size, width, height, is_tenbit, num_vpp_pipes);
|
||||
|
||||
i_vpr_l(inst, "%s: size %d\n", __func__, size);
|
||||
@@ -402,7 +402,7 @@ static u32 msm_vidc_encoder_dpb_size_iris2(struct msm_vidc_inst *inst)
|
||||
|
||||
if (inst->codec == MSM_VIDC_H264)
|
||||
HFI_BUFFER_DPB_H264E(size, width, height);
|
||||
else if (inst->codec == MSM_VIDC_HEVC)
|
||||
else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC)
|
||||
HFI_BUFFER_DPB_H265E(size, width, height, is_tenbit);
|
||||
|
||||
i_vpr_l(inst, "%s: size %d\n", __func__, size);
|
||||
@@ -534,7 +534,7 @@ static int msm_buffer_encoder_dpb_count(struct msm_vidc_inst *inst)
|
||||
// TODO: replace zeros with appropriate variables
|
||||
HFI_IRIS2_ENC_RECON_BUF_COUNT(count, 0, 0, 0, 0, 0,
|
||||
HFI_CODEC_ENCODE_AVC);
|
||||
} else if (inst->codec == MSM_VIDC_HEVC) {
|
||||
} else if (inst->codec == MSM_VIDC_HEVC || inst->codec == MSM_VIDC_HEIC) {
|
||||
// TODO: replace zeros with appropriate variables
|
||||
HFI_IRIS2_ENC_RECON_BUF_COUNT(count, 0, 0, 0, 0, 0,
|
||||
HFI_CODEC_ENCODE_HEVC);
|
||||
|
@@ -214,6 +214,7 @@ static u64 __calculate_decoder(struct vidc_bus_vote_data *d)
|
||||
num_vpp_pipes = d->num_vpp_pipes;
|
||||
|
||||
if (d->codec == MSM_VIDC_HEVC ||
|
||||
d->codec == MSM_VIDC_HEIC ||
|
||||
d->codec == MSM_VIDC_VP9) {
|
||||
/* H264, VP8, MPEG2 use the same settings */
|
||||
/* HEVC, VP9 use the same setting */
|
||||
|
新增問題並參考
封鎖使用者