media: venus: venc: set IDR period to FW only for H264 & HEVC

HFI_PROPERTY_CONFIG_VENC_IDR_PERIOD is supported for only
H264 & HEVC codec. There is no need to set it for VP8 since
all key frames are treated as IDR frames for VP8.

Signed-off-by: Dikshita Agarwal <dikshita@codeaurora.org>
Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
Dikshita Agarwal 2020-12-16 08:06:50 +01:00 committed by Mauro Carvalho Chehab
parent 002c22bd36
commit f0ddb4e991
1 changed files with 13 additions and 10 deletions

View File

@ -598,16 +598,19 @@ static int venc_set_properties(struct venus_inst *inst)
return ret;
}
/* IDR periodicity, n:
* n = 0 - only the first I-frame is IDR frame
* n = 1 - all I-frames will be IDR frames
* n > 1 - every n-th I-frame will be IDR frame
*/
ptype = HFI_PROPERTY_CONFIG_VENC_IDR_PERIOD;
idrp.idr_period = 0;
ret = hfi_session_set_property(inst, ptype, &idrp);
if (ret)
return ret;
if (inst->fmt_cap->pixfmt == V4L2_PIX_FMT_H264 ||
inst->fmt_cap->pixfmt == V4L2_PIX_FMT_HEVC) {
/* IDR periodicity, n:
* n = 0 - only the first I-frame is IDR frame
* n = 1 - all I-frames will be IDR frames
* n > 1 - every n-th I-frame will be IDR frame
*/
ptype = HFI_PROPERTY_CONFIG_VENC_IDR_PERIOD;
idrp.idr_period = 0;
ret = hfi_session_set_property(inst, ptype, &idrp);
if (ret)
return ret;
}
if (ctr->num_b_frames) {
u32 max_num_b_frames = NUM_B_FRAMES_MAX;