summaryrefslogtreecommitdiff
path: root/libavformat/network.c
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2011-02-06 00:06:49 +0100
committerMartin Storsjö <martin@martin.st>2011-11-05 12:09:27 +0200
commit1606e551ff4ace23da8a372ebb1147da36566372 (patch)
treee8c764fcd7f4fab80a5c4a613bc8c76b82257b8a /libavformat/network.c
parent8148631269734f4ecde7a63ca7432e82c12c0b3e (diff)
avformat: Initialize gnutls in ff_tls_init()
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat/network.c')
-rw-r--r--libavformat/network.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/libavformat/network.c b/libavformat/network.c
index 6ef609f2ed..d50e1e70f8 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -53,6 +53,16 @@ static unsigned long openssl_thread_id(void)
#endif
#endif
#endif
+#if CONFIG_GNUTLS
+#include <gnutls/gnutls.h>
+#if THREADS && GNUTLS_VERSION_NUMBER <= 0x020b00
+#include <gcrypt.h>
+#include <errno.h>
+#undef malloc
+#undef free
+GCRY_THREAD_OPTION_PTHREAD_IMPL;
+#endif
+#endif
void ff_tls_init(void)
{
@@ -76,6 +86,13 @@ void ff_tls_init(void)
}
openssl_init++;
#endif
+#if CONFIG_GNUTLS
+#if THREADS && GNUTLS_VERSION_NUMBER < 0x020b00
+ if (gcry_control(GCRYCTL_ANY_INITIALIZATION_P) == 0)
+ gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
+#endif
+ gnutls_global_init();
+#endif
avpriv_unlock_avformat();
}
@@ -96,6 +113,9 @@ void ff_tls_deinit(void)
#endif
}
#endif
+#if CONFIG_GNUTLS
+ gnutls_global_deinit();
+#endif
avpriv_unlock_avformat();
}