diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-10-12 14:15:33 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-10-12 14:15:33 +0200 |
commit | 43cce41267a7aa71946911e87b4dfce48183bb25 (patch) | |
tree | 65005ccffc4a671a46163fc3e47b5f1c40b9e12d | |
parent | caa7e24eb1d47a0dfeb9783909bce7df6d3f5482 (diff) | |
parent | 0a75d1da23b8659ec49391469bb592da12760077 (diff) | |
download | ffmpeg-43cce41267a7aa71946911e87b4dfce48183bb25.tar.gz |
Merge commit '0a75d1da23b8659ec49391469bb592da12760077'
* commit '0a75d1da23b8659ec49391469bb592da12760077':
options_table: refs option is not snow-only
random_seed: Support using CryptGenRandom on windows
doc: update the faq entry about custom I/O
Conflicts:
doc/faq.texi
libavcodec/options_table.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rwxr-xr-x | configure | 2 | ||||
-rw-r--r-- | doc/faq.texi | 4 | ||||
-rw-r--r-- | libavutil/random_seed.c | 15 |
3 files changed, 19 insertions, 2 deletions
@@ -1281,6 +1281,7 @@ HAVE_LIST=" closesocket cmov cpunop + CryptGenRandom dcbzl dev_bktr_ioctl_bt848_h dev_bktr_ioctl_meteor_h @@ -3540,6 +3541,7 @@ check_func_headers windows.h PeekNamedPipe check_func_headers io.h setmode check_func_headers lzo/lzo1x.h lzo1x_999_compress check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32 +check_lib2 "windows.h wincrypt.h" CryptGenRandom -ladvapi32 check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi check_func_headers windows.h GetProcessAffinityMask check_func_headers windows.h GetProcessTimes diff --git a/doc/faq.texi b/doc/faq.texi index 5477faf219..1158091a0c 100644 --- a/doc/faq.texi +++ b/doc/faq.texi @@ -467,8 +467,8 @@ to use them you have to append -D__STDC_CONSTANT_MACROS to your CXXFLAGS @section I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat? -You have to implement a URLProtocol, see @file{libavformat/file.c} in -FFmpeg and @file{libmpdemux/demux_lavf.c} in MPlayer sources. +You have to create a custom AVIOContext using @code{avio_alloc_context}, +see @file{libavformat/aviobuf.c} in FFmpeg and @file{libmpdemux/demux_lavf.c} in MPlayer or MPlayer2 sources. @section Where can I find libav* headers for Pascal/Delphi? diff --git a/libavutil/random_seed.c b/libavutil/random_seed.c index 49c122001a..c674704615 100644 --- a/libavutil/random_seed.c +++ b/libavutil/random_seed.c @@ -23,6 +23,10 @@ #if HAVE_UNISTD_H #include <unistd.h> #endif +#if HAVE_CRYPTGENRANDOM +#include <windows.h> +#include <wincrypt.h> +#endif #include <fcntl.h> #include <math.h> #include <time.h> @@ -102,6 +106,17 @@ uint32_t av_get_random_seed(void) { uint32_t seed; +#if HAVE_CRYPTGENRANDOM + HCRYPTPROV provider; + if (CryptAcquireContext(&provider, NULL, NULL, PROV_RSA_FULL, + CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) { + BOOL ret = CryptGenRandom(provider, sizeof(seed), (PBYTE) &seed); + CryptReleaseContext(provider, 0); + if (ret) + return seed; + } +#endif + if (read_random(&seed, "/dev/urandom") == sizeof(seed)) return seed; if (read_random(&seed, "/dev/random") == sizeof(seed)) |