diff mbox

[FFmpeg-devel] avcodec/vp8: Fix hang with slice threads

Message ID 20170310011253.22468-1-michael@niedermayer.cc
State Accepted
Commit 9bbc73ae9fdedc8789b2b6be65279e9a0ecd7090
Headers show

Commit Message

Michael Niedermayer March 10, 2017, 1:12 a.m. UTC
From: Thomas Guilbert <tguilbert@google.com>

Fixes: 447860.webm

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/vp8.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Ronald S. Bultje March 10, 2017, 1:17 a.m. UTC | #1
Hi,

On Thu, Mar 9, 2017 at 8:12 PM, Michael Niedermayer <michael@niedermayer.cc>
wrote:

> From: Thomas Guilbert <tguilbert@google.com>
>
> Fixes: 447860.webm
>
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>  libavcodec/vp8.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c
> index 6759b310f0..068223920e 100644
> --- a/libavcodec/vp8.c
> +++ b/libavcodec/vp8.c
> @@ -2508,8 +2508,10 @@ int vp78_decode_mb_row_sliced(AVCodecContext
> *avctx, void *tdata, int jobnr,
>      for (mb_y = jobnr; mb_y < s->mb_height; mb_y += num_jobs) {
>          td->thread_mb_pos = mb_y << 16;
>          ret = s->decode_mb_row_no_filter(avctx, tdata, jobnr, threadnr);
> -        if (ret < 0)
> +        if (ret < 0) {
> +            update_pos(td, s->mb_height, INT_MAX & 0xFFFF);
>              return ret;
> +        }
>          if (s->deblock_filter)
>              s->filter_mb_row(avctx, tdata, jobnr, threadnr);
>          update_pos(td, mb_y, INT_MAX & 0xFFFF);
> --
> 2.11.0


OK.

Ronald
Michael Niedermayer March 10, 2017, 1:20 a.m. UTC | #2
On Thu, Mar 09, 2017 at 08:17:37PM -0500, Ronald S. Bultje wrote:
> Hi,
> 
> On Thu, Mar 9, 2017 at 8:12 PM, Michael Niedermayer <michael@niedermayer.cc>
> wrote:
> 
> > From: Thomas Guilbert <tguilbert@google.com>
> >
> > Fixes: 447860.webm
> >
> > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> > ---
> >  libavcodec/vp8.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c
> > index 6759b310f0..068223920e 100644
> > --- a/libavcodec/vp8.c
> > +++ b/libavcodec/vp8.c
> > @@ -2508,8 +2508,10 @@ int vp78_decode_mb_row_sliced(AVCodecContext
> > *avctx, void *tdata, int jobnr,
> >      for (mb_y = jobnr; mb_y < s->mb_height; mb_y += num_jobs) {
> >          td->thread_mb_pos = mb_y << 16;
> >          ret = s->decode_mb_row_no_filter(avctx, tdata, jobnr, threadnr);
> > -        if (ret < 0)
> > +        if (ret < 0) {
> > +            update_pos(td, s->mb_height, INT_MAX & 0xFFFF);
> >              return ret;
> > +        }
> >          if (s->deblock_filter)
> >              s->filter_mb_row(avctx, tdata, jobnr, threadnr);
> >          update_pos(td, mb_y, INT_MAX & 0xFFFF);
> > --
> > 2.11.0
> 
> 
> OK.

applied

thx

[...]
Thomas Guilbert March 10, 2017, 1:53 a.m. UTC | #3
Thank you!

On Thu, Mar 9, 2017 at 5:20 PM, Michael Niedermayer <michael@niedermayer.cc>
wrote:

> On Thu, Mar 09, 2017 at 08:17:37PM -0500, Ronald S. Bultje wrote:
> > Hi,
> >
> > On Thu, Mar 9, 2017 at 8:12 PM, Michael Niedermayer
> <michael@niedermayer.cc>
> > wrote:
> >
> > > From: Thomas Guilbert <tguilbert@google.com>
> > >
> > > Fixes: 447860.webm
> > >
> > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> > > ---
> > >  libavcodec/vp8.c | 4 +++-
> > >  1 file changed, 3 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c
> > > index 6759b310f0..068223920e 100644
> > > --- a/libavcodec/vp8.c
> > > +++ b/libavcodec/vp8.c
> > > @@ -2508,8 +2508,10 @@ int vp78_decode_mb_row_sliced(AVCodecContext
> > > *avctx, void *tdata, int jobnr,
> > >      for (mb_y = jobnr; mb_y < s->mb_height; mb_y += num_jobs) {
> > >          td->thread_mb_pos = mb_y << 16;
> > >          ret = s->decode_mb_row_no_filter(avctx, tdata, jobnr,
> threadnr);
> > > -        if (ret < 0)
> > > +        if (ret < 0) {
> > > +            update_pos(td, s->mb_height, INT_MAX & 0xFFFF);
> > >              return ret;
> > > +        }
> > >          if (s->deblock_filter)
> > >              s->filter_mb_row(avctx, tdata, jobnr, threadnr);
> > >          update_pos(td, mb_y, INT_MAX & 0xFFFF);
> > > --
> > > 2.11.0
> >
> >
> > OK.
>
> applied
>
> thx
>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Complexity theory is the science of finding the exact solution to an
> approximation. Benchmarking OTOH is finding an approximation of the exact
>
diff mbox

Patch

diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c
index 6759b310f0..068223920e 100644
--- a/libavcodec/vp8.c
+++ b/libavcodec/vp8.c
@@ -2508,8 +2508,10 @@  int vp78_decode_mb_row_sliced(AVCodecContext *avctx, void *tdata, int jobnr,
     for (mb_y = jobnr; mb_y < s->mb_height; mb_y += num_jobs) {
         td->thread_mb_pos = mb_y << 16;
         ret = s->decode_mb_row_no_filter(avctx, tdata, jobnr, threadnr);
-        if (ret < 0)
+        if (ret < 0) {
+            update_pos(td, s->mb_height, INT_MAX & 0xFFFF);
             return ret;
+        }
         if (s->deblock_filter)
             s->filter_mb_row(avctx, tdata, jobnr, threadnr);
         update_pos(td, mb_y, INT_MAX & 0xFFFF);