Browse Source

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>
tags/n1.1
Michael Niedermayer 12 years ago
parent
commit
43cce41267
3 changed files with 19 additions and 2 deletions
  1. +2
    -0
      configure
  2. +2
    -2
      doc/faq.texi
  3. +15
    -0
      libavutil/random_seed.c

+ 2
- 0
configure View File

@@ -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


+ 2
- 2
doc/faq.texi View File

@@ -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?



+ 15
- 0
libavutil/random_seed.c View File

@@ -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))


Loading…
Cancel
Save