Message ID | 1608102410-23390-1-git-send-email-dikshita@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | venus: venc: set IDR period to FW only for H264 & HEVC | expand |
On 12/16/20 9:06 AM, Dikshita Agarwal wrote: > 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> > --- > drivers/media/platform/qcom/venus/venc.c | 23 +++++++++++++---------- > 1 file changed, 13 insertions(+), 10 deletions(-) Reviewed-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> > > diff --git a/drivers/media/platform/qcom/venus/venc.c b/drivers/media/platform/qcom/venus/venc.c > index 3a2e449..618cf92 100644 > --- a/drivers/media/platform/qcom/venus/venc.c > +++ b/drivers/media/platform/qcom/venus/venc.c > @@ -588,16 +588,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; >
diff --git a/drivers/media/platform/qcom/venus/venc.c b/drivers/media/platform/qcom/venus/venc.c index 3a2e449..618cf92 100644 --- a/drivers/media/platform/qcom/venus/venc.c +++ b/drivers/media/platform/qcom/venus/venc.c @@ -588,16 +588,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;
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> --- drivers/media/platform/qcom/venus/venc.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-)