diff mbox series

[FFmpeg-devel] lavc/vp9: Fix regression introduced in 0ba05857

Message ID 20240423043258.30883-1-haihao.xiang@intel.com
State Accepted
Commit 8c62d77139ca07390414fcfd26b2a4d506fed3b9
Headers show
Series [FFmpeg-devel] lavc/vp9: Fix regression introduced in 0ba05857 | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Xiang, Haihao April 23, 2024, 4:32 a.m. UTC
From: Haihao Xiang <haihao.xiang@intel.com>

It is possible that ff_progress_frame_await() is called but
ff_progress_frame_report() isn't called when a hardware acceleration
method is used, so a thread for vp9 decoding might get stuck.

Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
---
 libavcodec/vp9.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Andreas Rheinhardt April 23, 2024, 12:14 p.m. UTC | #1
Xiang, Haihao:
> From: Haihao Xiang <haihao.xiang@intel.com>
> 
> It is possible that ff_progress_frame_await() is called but
> ff_progress_frame_report() isn't called when a hardware acceleration
> method is used, so a thread for vp9 decoding might get stuck.
> 
> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
> ---
>  libavcodec/vp9.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c
> index 3adfb98f2d..6e2d18bf95 100644
> --- a/libavcodec/vp9.c
> +++ b/libavcodec/vp9.c
> @@ -1735,9 +1735,9 @@ static int vp9_decode_frame(AVCodecContext *avctx, AVFrame *frame,
>          if (ret < 0)
>              goto fail;
>      }
> -    ff_progress_frame_report(&s->s.frames[CUR_FRAME].tf, INT_MAX);
>  
>  finish:
> +    ff_progress_frame_report(&s->s.frames[CUR_FRAME].tf, INT_MAX);
>      // ref frame setup
>      for (int i = 0; i < 8; i++)
>          ff_progress_frame_replace(&s->s.refs[i], &s->next_refs[i]);

LGTM. Sorry for the breakage.

- Andreas
Xiang, Haihao April 24, 2024, 4:11 a.m. UTC | #2
On Di, 2024-04-23 at 14:14 +0200, Andreas Rheinhardt wrote:
> Xiang, Haihao:
> > From: Haihao Xiang <haihao.xiang@intel.com>
> > 
> > It is possible that ff_progress_frame_await() is called but
> > ff_progress_frame_report() isn't called when a hardware acceleration
> > method is used, so a thread for vp9 decoding might get stuck.
> > 
> > Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
> > ---
> >  libavcodec/vp9.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c
> > index 3adfb98f2d..6e2d18bf95 100644
> > --- a/libavcodec/vp9.c
> > +++ b/libavcodec/vp9.c
> > @@ -1735,9 +1735,9 @@ static int vp9_decode_frame(AVCodecContext *avctx,
> > AVFrame *frame,
> >          if (ret < 0)
> >              goto fail;
> >      }
> > -    ff_progress_frame_report(&s->s.frames[CUR_FRAME].tf, INT_MAX);
> >  
> >  finish:
> > +    ff_progress_frame_report(&s->s.frames[CUR_FRAME].tf, INT_MAX);
> >      // ref frame setup
> >      for (int i = 0; i < 8; i++)
> >          ff_progress_frame_replace(&s->s.refs[i], &s->next_refs[i]);
> 
> LGTM. Sorry for the breakage.
> 

Thanks for reviewing the patch, I pushed the patch.

BRs
Haihao
diff mbox series

Patch

diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c
index 3adfb98f2d..6e2d18bf95 100644
--- a/libavcodec/vp9.c
+++ b/libavcodec/vp9.c
@@ -1735,9 +1735,9 @@  static int vp9_decode_frame(AVCodecContext *avctx, AVFrame *frame,
         if (ret < 0)
             goto fail;
     }
-    ff_progress_frame_report(&s->s.frames[CUR_FRAME].tf, INT_MAX);
 
 finish:
+    ff_progress_frame_report(&s->s.frames[CUR_FRAME].tf, INT_MAX);
     // ref frame setup
     for (int i = 0; i < 8; i++)
         ff_progress_frame_replace(&s->s.refs[i], &s->next_refs[i]);