[FFmpeg-devel] mutlithreading in ffmpeg?

Frank Barchard fbarchard at google.com
Tue Mar 29 21:41:22 CEST 2011

On Mon, Mar 28, 2011 at 10:50 PM, Reimar Döffinger <Reimar.Doeffinger at gmx.de
> wrote:

> On 29 Mar 2011, at 03:32, Frank Barchard <fbarchard at google.com> wrote:
> > On Sun, Mar 27, 2011 at 2:52 AM, Reimar Döffinger
> > <Reimar.Doeffinger at gmx.de>wrote:
> >
> >> On Sat, Mar 26, 2011 at 12:14:40PM +0100, Michael Niedermayer wrote:
> >>> This patch looks like it would break if libavcodec would be linked
> >>> with an application that itself also used static pthreads
> >>
> >> Not to mention that it will crash if an application dynamically loads
> >> libavcodec and then unloads it before exiting (i.e. the atexit code
> >> will no longer exist when the program exits).
> >>
> > Thats what Chromium does - Each tab is a process that loads
> avcodec-52.dll.
> > Closing a tab unloads the dll.
> > A DLL is really an .exe.  The atexit code runs when the DLL is unloaded.
> At least "man atexit" does not specify any such behaviour, are you really
> sure you're not relying on an implementation detail?

MSDN documents _onexit better:

> Actually, are you really sure that you unload the avcodec dll separately
> before exiting the tab process, that seems like a pointless thing to do.

Correct.  The process (for each tab) unloads the dll for us.  The chromium
ffmpeg dll loader is here:

We picked up this static pthread patch from here:

Ran another test - ff vp8
>media_bench --flush --stream=video --video-threads=1 tulip2.webm
        FPS:     378.99
>media_bench --flush --stream=video --video-threads=2 tulip2.webm
        FPS:     377.25
just checking :)

More information about the ffmpeg-devel mailing list