Hi, Looks to me that ffmpeg.c could perfectly be thread-safe if each instance of it had its own copy of its global variables. You might be able to achieve this by storing all global variables of ffmpeg.c into a "struct ffmpeg_app". To me, such indirection is mandatory to match your needs. HTH, Cyril
2009/3/1 AliReza Khoshgoftar Monfared <[email protected]> > Dear All, > > For an academic project, I have recently wrote a wrapper function around > ffmpeg.c's main, and has created dll's, and .libs under mingw, and I am > using this function under MSVC++. > > In the normal cases nothing is wrong. I can call the function in my code, > and decode/encdoe any video just as ffmpeg's command line does. > > But in a more complicated case, I launch two threads (using POSIX Pthreads) > each of them just change the format of a different file. > > When I run the program, the behavior is strange, and threads mess up each > others work. > > To me, it seems ffmpeg.c is not thread safe. > > I did some searches, and saw that these function in ffmpeg.c are not thread > safe: > > avcodec_register_all(); > avdevice_register_all(); > av_register_all(); > avcodec_open(); > > I put a mutex over each of them, wherever they were used (I used SDL > Mutexes > for this purpose, as I saw ffmpeg developers already use them in ffplay.c) > I also put tricks to make sure the library iniltialization functions (the > first three of the list above) are performed only once. > > > Though I did all of these, still in the multithread case, my function > (which > is nothing but a call to ffmpeg.c' main) still behaves strangely, and > threads mess up each other. > > Can any of you help in this case, and instruct me how can I make all my > operations completely thread-safe? > _______________________________________________ > libav-user mailing list > [email protected] > https://lists.mplayerhq.hu/mailman/listinfo/libav-user > _______________________________________________ libav-user mailing list [email protected] https://lists.mplayerhq.hu/mailman/listinfo/libav-user
