Re: [PATCH 1/2] hantro: vp8: Move noisy WARN_ON to vpu_debug

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

 



Le lundi 21 juin 2021 à 20:11 -0300, Ezequiel Garcia a écrit :
> When the VP8 decoders can't find a reference frame,
> the driver falls back to the current output frame.
> 
> This will probably produce some undesirable results,
> leading to frame corruption, but shouldn't cause
> noisy warnings.
> 
> Signed-off-by: Ezequiel Garcia <ezequiel@xxxxxxxxxxxxx>

Greatly appreciated fix.

Acked-by: Nicolas Dufresne <nicolas.dufresne@xxxxxxxxxxxxx>

> ---
>  drivers/staging/media/hantro/hantro_g1_vp8_dec.c    | 13 ++++++++++---
>  .../staging/media/hantro/rockchip_vpu2_hw_vp8_dec.c | 13 ++++++++++---
>  2 files changed, 20 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/staging/media/hantro/hantro_g1_vp8_dec.c b/drivers/staging/media/hantro/hantro_g1_vp8_dec.c
> index 96622a7f8279..7f88dcee1473 100644
> --- a/drivers/staging/media/hantro/hantro_g1_vp8_dec.c
> +++ b/drivers/staging/media/hantro/hantro_g1_vp8_dec.c
> @@ -376,12 +376,17 @@ static void cfg_ref(struct hantro_ctx *ctx,
>  	vb2_dst = hantro_get_dst_buf(ctx);
>  
>  	ref = hantro_get_ref(ctx, hdr->last_frame_ts);
> -	if (!ref)
> +	if (!ref) {
> +		vpu_debug(0, "failed to find last frame ts=%ld\n",
> +			  hdr->last_frame_ts);
>  		ref = vb2_dma_contig_plane_dma_addr(&vb2_dst->vb2_buf, 0);
> +	}
>  	vdpu_write_relaxed(vpu, ref, G1_REG_ADDR_REF(0));
>  
>  	ref = hantro_get_ref(ctx, hdr->golden_frame_ts);
> -	WARN_ON(!ref && hdr->golden_frame_ts);
> +	if (!ref && hdr->golden_frame_ts)
> +		vpu_debug(0, "failed to find golden frame ts=%ld\n",
> +			  hdr->golden_frame_ts);
>  	if (!ref)
>  		ref = vb2_dma_contig_plane_dma_addr(&vb2_dst->vb2_buf, 0);
>  	if (hdr->flags & V4L2_VP8_FRAME_FLAG_SIGN_BIAS_GOLDEN)
> @@ -389,7 +394,9 @@ static void cfg_ref(struct hantro_ctx *ctx,
>  	vdpu_write_relaxed(vpu, ref, G1_REG_ADDR_REF(4));
>  
>  	ref = hantro_get_ref(ctx, hdr->alt_frame_ts);
> -	WARN_ON(!ref && hdr->alt_frame_ts);
> +	if (!ref && hdr->alt_frame_ts)
> +		vpu_debug(0, "failed to find alt frame ts=%ld\n",
> +			  hdr->alt_frame_ts);
>  	if (!ref)
>  		ref = vb2_dma_contig_plane_dma_addr(&vb2_dst->vb2_buf, 0);
>  	if (hdr->flags & V4L2_VP8_FRAME_FLAG_SIGN_BIAS_ALT)
> diff --git a/drivers/staging/media/hantro/rockchip_vpu2_hw_vp8_dec.c b/drivers/staging/media/hantro/rockchip_vpu2_hw_vp8_dec.c
> index 951b55f58a61..cd53748efe4e 100644
> --- a/drivers/staging/media/hantro/rockchip_vpu2_hw_vp8_dec.c
> +++ b/drivers/staging/media/hantro/rockchip_vpu2_hw_vp8_dec.c
> @@ -453,12 +453,17 @@ static void cfg_ref(struct hantro_ctx *ctx,
>  	vb2_dst = hantro_get_dst_buf(ctx);
>  
>  	ref = hantro_get_ref(ctx, hdr->last_frame_ts);
> -	if (!ref)
> +	if (!ref) {
> +		vpu_debug(0, "failed to find last frame ts=%ld\n",
> +			  hdr->last_frame_ts);
>  		ref = vb2_dma_contig_plane_dma_addr(&vb2_dst->vb2_buf, 0);
> +	}
>  	vdpu_write_relaxed(vpu, ref, VDPU_REG_VP8_ADDR_REF0);
>  
>  	ref = hantro_get_ref(ctx, hdr->golden_frame_ts);
> -	WARN_ON(!ref && hdr->golden_frame_ts);
> +	if (!ref && hdr->golden_frame_ts)
> +		vpu_debug(0, "failed to find golden frame ts=%ld\n",
> +			  hdr->golden_frame_ts);
>  	if (!ref)
>  		ref = vb2_dma_contig_plane_dma_addr(&vb2_dst->vb2_buf, 0);
>  	if (hdr->flags & V4L2_VP8_FRAME_FLAG_SIGN_BIAS_GOLDEN)
> @@ -466,7 +471,9 @@ static void cfg_ref(struct hantro_ctx *ctx,
>  	vdpu_write_relaxed(vpu, ref, VDPU_REG_VP8_ADDR_REF2_5(2));
>  
>  	ref = hantro_get_ref(ctx, hdr->alt_frame_ts);
> -	WARN_ON(!ref && hdr->alt_frame_ts);
> +	if (!ref && hdr->alt_frame_ts)
> +		vpu_debug(0, "failed to find alt frame ts=%ld\n",
> +			  hdr->alt_frame_ts);
>  	if (!ref)
>  		ref = vb2_dma_contig_plane_dma_addr(&vb2_dst->vb2_buf, 0);
>  	if (hdr->flags & V4L2_VP8_FRAME_FLAG_SIGN_BIAS_ALT)





[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux