On Thu, 3 Nov 2011 15:45:38 +0200 (EET), Martin Storsjö <[email protected]> 
wrote:
> On Thu, 3 Nov 2011, Anton Khirnov wrote:
> 
> >
> > On Tue,  1 Nov 2011 15:32:39 +0200, Martin Storsjö <[email protected]> wrote:
> >> If the application hasn't set up mutex callbacks, we set up
> >> our own using pthreads (or w32pthreads).
> >> ---
> >>  libavformat/network.c |   79 
> >> +++++++++++++++++++++++++++++++++++++++++++++++++
> >>  libavformat/network.h |    3 ++
> >>  2 files changed, 82 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/libavformat/network.c b/libavformat/network.c
> >> index c42cf23..291dc8c 100644
> >> --- a/libavformat/network.c
> >> +++ b/libavformat/network.c
> >> @@ -19,6 +19,85 @@
> >>   */
> >>
> >>  #include "network.h"
> >> +#include "libavcodec/internal.h"
> >> +
> >> +#define THREADS (HAVE_PTHREADS || (defined(WIN32) && 
> >> !defined(__MINGW32CE__)))
> >> +
> >> +#if THREADS
> >> +#if HAVE_PTHREADS
> >> +#include <pthread.h>
> >> +#else
> >> +#include "libavcodec/w32pthreads.h"
> >> +#endif
> >> +#endif
> >> +
> >> +#if CONFIG_OPENSSL
> >> +#include <openssl/ssl.h>
> >> +static int openssl_init;
> >> +#if THREADS
> >> +#include <openssl/crypto.h>
> >> +#include "libavutil/avutil.h"
> >> +pthread_mutex_t *openssl_mutexes;
> >> +static void openssl_lock(int mode, int type, const char *file, int line)
> >> +{
> >> +    if (mode & CRYPTO_LOCK)
> >> +        pthread_mutex_lock(&openssl_mutexes[type]);
> >> +    else
> >> +        pthread_mutex_unlock(&openssl_mutexes[type]);
> >> +}
> >> +#ifndef WIN32
> >> +static unsigned long openssl_thread_id(void)
> >> +{
> >> +    return (intptr_t) pthread_self();
> >> +}
> >> +#endif
> >> +#endif
> >> +#endif
> >> +
> >> +void ff_tls_init(void)
> >> +{
> >> +    avpriv_lock_avformat();
> >> +#if CONFIG_OPENSSL
> >> +    openssl_init++;
> >> +    if (openssl_init > 1)
> >> +        return;
> >> +    SSL_library_init();
> >> +    SSL_load_error_strings();
> >> +#if THREADS
> >> +    if (!CRYPTO_get_locking_callback()) {
> >> +        int i;
> >> +        openssl_mutexes = av_malloc(sizeof(pthread_mutex_t) * 
> >> CRYPTO_num_locks());
> >> +        for (i = 0; i < CRYPTO_num_locks(); i++)
> >> +            pthread_mutex_init(&openssl_mutexes[i], NULL);
> >> +        CRYPTO_set_locking_callback(openssl_lock);
> >> +#ifndef WIN32
> >> +        CRYPTO_set_id_callback(openssl_thread_id);
> >
> > This function seems to be deprecated since 1.0.0, replaced by
> > CRYPTO_THREADID_set_callback().
> 
> OS X Snow Leopard, which I'm using, only has OpenSSL 0.9.8l. As far as I 
> know, the 0.9.8 series is still in quite wide use - debian stable only has 
> 0.9.8, and Ubuntu got 1.0.0 only in 11.10.
> 

Ok then. But we should keep it in mind for the future.

-- 
Anton Khirnov
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to