On Mon, 18 Aug 2014 23:22:02 +0200 Patrick Dehne <[email protected]> wrote:
> > Am 18.08.2014 um 23:10 schrieb wm4 <[email protected]>: > > > On Mon, 11 Aug 2014 12:39:02 +0200 > > Ole Andre Birkedal <[email protected]> wrote: > > > >> Hi. > >> I'm currently developing a multithreaded C++ program using std::thread. > >> Recently I have been having some crashing issues and it all seems to > >> related non-thread safety of some function in the FFmpeg API. > >> > >> Does there exist an exhausting list of all the function that are not > >> thread safe? > > > > All of them. > > You may want to take a look at the documentation of av_lockmgr_register. All functions that are specific to a certain context (like AVCodecContext) are by default not thread-safe. Of course using different contexts at the same time from different threads should be perfectly fine. However, many codecs use some global data that is usually constant, but needs to be initialized once. That's why av_lockmgr_register() exists. It's a very messy way to allocate mutexes that are supposed to coordinate this initialization. However, at least FFmpeg (not Libav) doesn't require this anymore, if you have compiled ffmpeg with threading. It may even be safer not to use the lock manager stuff, because then you avoid library-safety issues. _______________________________________________ Libav-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/libav-user
