On 2/27/2025 8:13 AM, Renjiang Han wrote: > For the seek case, the input port will be called stream_off and then > stream_on in the driver. Firmware will flush all buffers during stream_off > input port. Therefore, driver needs to queue DPB buffers to firmware > during stream_on input port to ensure that decoder can decode normally > when it receives enough input and output buffers. Otherwise, decoder > will not be able to decode due to lack of DPB buffer even if there are > enough input and output buffers. > > Signed-off-by: Renjiang Han <quic_renjiang@xxxxxxxxxxx> > --- > drivers/media/platform/qcom/venus/vdec.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c > index 6252a6b3d4ba6d49b343bb53dfb7b0e683410bb4..7d932c985a0b82aa547a7ada75b620c65cb44030 100644 > --- a/drivers/media/platform/qcom/venus/vdec.c > +++ b/drivers/media/platform/qcom/venus/vdec.c > @@ -1110,10 +1110,20 @@ static int vdec_start_output(struct venus_inst *inst) > > if (inst->codec_state == VENUS_DEC_STATE_SEEK) { > ret = venus_helper_process_initial_out_bufs(inst); > - if (inst->next_buf_last) > + if (ret) > + return ret; > + > + if (inst->next_buf_last) { > inst->codec_state = VENUS_DEC_STATE_DRC; > - else > + } else { > inst->codec_state = VENUS_DEC_STATE_DECODING; > + > + if (inst->streamon_cap) { > + ret = venus_helper_queue_dpb_bufs(inst); > + if (ret) > + return ret; > + } > + } > goto done; > } > LGTM. Reviewed-by: Dikshita Agarwal <quic_dikshita@xxxxxxxxxxx> > > --- > base-commit: 63b3ff03d91ae8f875fe8747c781a521f78cde17 > change-id: 20250227-fix-seek-bug-7d3cf544bd2f > > Best regards,