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>
This commit is contained in:
commit
43cce41267
2
configure
vendored
2
configure
vendored
@ -1281,6 +1281,7 @@ HAVE_LIST="
|
|||||||
closesocket
|
closesocket
|
||||||
cmov
|
cmov
|
||||||
cpunop
|
cpunop
|
||||||
|
CryptGenRandom
|
||||||
dcbzl
|
dcbzl
|
||||||
dev_bktr_ioctl_bt848_h
|
dev_bktr_ioctl_bt848_h
|
||||||
dev_bktr_ioctl_meteor_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 io.h setmode
|
||||||
check_func_headers lzo/lzo1x.h lzo1x_999_compress
|
check_func_headers lzo/lzo1x.h lzo1x_999_compress
|
||||||
check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32
|
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_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
|
||||||
check_func_headers windows.h GetProcessAffinityMask
|
check_func_headers windows.h GetProcessAffinityMask
|
||||||
check_func_headers windows.h GetProcessTimes
|
check_func_headers windows.h GetProcessTimes
|
||||||
|
@ -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?
|
@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
|
You have to create a custom AVIOContext using @code{avio_alloc_context},
|
||||||
FFmpeg and @file{libmpdemux/demux_lavf.c} in MPlayer sources.
|
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?
|
@section Where can I find libav* headers for Pascal/Delphi?
|
||||||
|
|
||||||
|
@ -23,6 +23,10 @@
|
|||||||
#if HAVE_UNISTD_H
|
#if HAVE_UNISTD_H
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
#if HAVE_CRYPTGENRANDOM
|
||||||
|
#include <windows.h>
|
||||||
|
#include <wincrypt.h>
|
||||||
|
#endif
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
@ -102,6 +106,17 @@ uint32_t av_get_random_seed(void)
|
|||||||
{
|
{
|
||||||
uint32_t seed;
|
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))
|
if (read_random(&seed, "/dev/urandom") == sizeof(seed))
|
||||||
return seed;
|
return seed;
|
||||||
if (read_random(&seed, "/dev/random") == sizeof(seed))
|
if (read_random(&seed, "/dev/random") == sizeof(seed))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user