Mercurial > libavutil.hg
annotate lfg.c @ 752:1e5bfdf9054d libavutil
Prepare SHA code to handle SHA-2 as well. For now rename files and functions
and leave av_sha1_* functions for compatibility until next major bump.
author | kostya |
---|---|
date | Fri, 10 Jul 2009 15:50:49 +0000 |
parents | ef2c3d23d344 |
children | 41da9d9d39b7 |
rev | line source |
---|---|
533 | 1 /* |
2 * Lagged Fibonacci PRNG | |
3 * Copyright (c) 2008 Michael Niedermayer | |
4 * | |
5 * This file is part of FFmpeg. | |
6 * | |
7 * FFmpeg is free software; you can redistribute it and/or | |
8 * modify it under the terms of the GNU Lesser General Public | |
9 * License as published by the Free Software Foundation; either | |
10 * version 2.1 of the License, or (at your option) any later version. | |
11 * | |
12 * FFmpeg is distributed in the hope that it will be useful, | |
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 * Lesser General Public License for more details. | |
16 * | |
17 * You should have received a copy of the GNU Lesser General Public | |
18 * License along with FFmpeg; if not, write to the Free Software | |
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
20 */ | |
21 | |
22 #include <inttypes.h> | |
23 #include "lfg.h" | |
24 #include "md5.h" | |
25 #include "intreadwrite.h" | |
26 | |
27 void av_cold av_lfg_init(AVLFG *c, unsigned int seed){ | |
28 uint8_t tmp[16]={0}; | |
29 int i; | |
30 | |
31 for(i=8; i<64; i+=4){ | |
32 AV_WL32(tmp, seed); tmp[4]=i; | |
33 av_md5_sum(tmp, tmp, 16); | |
34 c->state[i ]= AV_RL32(tmp); | |
35 c->state[i+1]= AV_RL32(tmp+4); | |
36 c->state[i+2]= AV_RL32(tmp+8); | |
37 c->state[i+3]= AV_RL32(tmp+12); | |
38 } | |
39 c->index=0; | |
40 } | |
41 | |
42 #ifdef TEST | |
43 #include "log.h" | |
44 #include "common.h" | |
45 | |
46 int main(void) | |
47 { | |
48 int x=0; | |
49 int i, j; | |
50 AVLFG state; | |
51 | |
52 av_lfg_init(&state, 0xdeadbeef); | |
53 for (j = 0; j < 10000; j++) { | |
54 START_TIMER | |
55 for (i = 0; i < 624; i++) { | |
56 // av_log(NULL,AV_LOG_ERROR, "%X\n", av_lfg_get(&state)); | |
57 x+=av_lfg_get(&state); | |
58 } | |
702
ef2c3d23d344
Fix reference to av_random where av_lfg_get was meant.
diego
parents:
533
diff
changeset
|
59 STOP_TIMER("624 calls of av_lfg_get"); |
533 | 60 } |
61 av_log(NULL, AV_LOG_ERROR, "final value:%X\n", x); | |
62 return 0; | |
63 } | |
64 #endif |