Re: [PATCH] venus: vdec: queue dpb buffers to firmware for video seek

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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,




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux