[FFmpeg-devel] [PATCH] Make execute() and execute2() return FFMIN() of thread return codes

Tomas Härdin tjoppen at acc.umu.se
Tue Jun 21 11:05:35 EEST 2022


tis 2022-06-21 klockan 09:55 +0200 skrev Anton Khirnov:
> Quoting Tomas Härdin (2022-06-21 09:51:55)
> > lör 2022-06-18 klockan 16:38 +0200 skrev Anton Khirnov:
> > > Quoting Tomas Härdin (2022-06-17 11:42:25)
> > > > fre 2022-06-17 klockan 01:38 +0200 skrev Michael Niedermayer:
> > > > > On Thu, Jun 16, 2022 at 11:04:01PM +0200, Tomas Härdin wrote:
> > > > > > tor 2022-06-16 klockan 20:27 +0200 skrev Michael
> > > > > > Niedermayer:
> > > > > > > 
> > > > > > > >  
> > > > > > > >  void avpriv_slicethread_free(AVSliceThread **pctx)
> > > > > > > > @@ -236,8 +244,8 @@ void
> > > > > > > > avpriv_slicethread_free(AVSliceThread
> > > > > > > > **pctx)
> > > > > > > >  #else /* HAVE_PTHREADS || HAVE_W32THREADS ||
> > > > > > > > HAVE_OS32THREADS
> > > > > > > > */
> > > > > > > >  
> > > > > > > >  int avpriv_slicethread_create(AVSliceThread **pctx,
> > > > > > > > void
> > > > > > > > *priv,
> > > > > > > > -                              void (*worker_func)(void
> > > > > > > > *priv,
> > > > > > > > int
> > > > > > > > jobnr, int threadnr, int nb_jobs, int nb_threads),
> > > > > > > > -                              void (*main_func)(void
> > > > > > > > *priv),
> > > > > > > > +                              int (*worker_func)(void
> > > > > > > > *priv,
> > > > > > > > int
> > > > > > > > jobnr, int threadnr, int nb_jobs, int nb_threads),
> > > > > > > > +                              int (*main_func)(void
> > > > > > > > *priv),
> > > > > > > >                                int nb_threads)
> > > > > > > >  {
> > > > > > > >      *pctx = NULL;
> > > > > > > 
> > > > > > > You forgot to update the fallback code when threads are
> > > > > > > disabled
> > > > > > 
> > > > > > Uhm, the existing code just abort()s if threads are
> > > > > > disabled?
> > > > > > I'm
> > > > > > not
> > > > > > really sure if there anything that can or should be done
> > > > > > there
> > > > > 
> > > > > Before your patches fate passes with --disable-pthreads
> > > > > afterwards it will fail during build because the function
> > > > > mismatches,
> > > > > the abort should not be reachable i hope
> > > > 
> > > > Updated patch attached
> > > > 
> > > > /Tomas
> > > > 
> > > > From e3729f70d016b8e5c9d1bdb6014506ddd8d4eb56 Mon Sep 17
> > > > 00:00:00
> > > > 2001
> > > > From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= <git at haerdin.se>
> > > > Date: Thu, 16 Jun 2022 12:16:44 +0200
> > > > Subject: [PATCH] Make execute() and execute2() return FFMIN()
> > > > of
> > > > thread return
> > > >  codes
> > > > 
> > > > At the moment only fic.c actually checks return code of
> > > > execute()
> > > > hence the change to its FATE reference
> > > 
> > > Wait, how does this follow?
> > > 
> > 
> > fic.c actually gets informed that one or more fic_decode_slice()
> > jobs
> > failed and so it successfully fails on frames that don't decode
> > correctly
> 
> Why does it fail though? The sample we use for the test is actually
> broken?
> 

Not sure, and I have to head off. But I get this error at least:

  [avi @ 0x7f40c4000cc0] Packet corrupt (stream = 0, dts = 120)

/Tomas




More information about the ffmpeg-devel mailing list