comparison ac3dec.c @ 7601:69d5f318275f libavcodec

use LFG instead of Mersenne Twister for AC-3 PRNG
author jbr
date Sun, 17 Aug 2008 17:41:48 +0000
parents cd6217c9ce92
children 20c91136fe71
comparison
equal deleted inserted replaced
7600:3e0103ac9d76 7601:69d5f318275f
31 #include <stddef.h> 31 #include <stddef.h>
32 #include <math.h> 32 #include <math.h>
33 #include <string.h> 33 #include <string.h>
34 34
35 #include "libavutil/crc.h" 35 #include "libavutil/crc.h"
36 #include "libavutil/random.h"
37 #include "avcodec.h" 36 #include "avcodec.h"
38 #include "ac3_parser.h" 37 #include "ac3_parser.h"
39 #include "bitstream.h" 38 #include "bitstream.h"
40 #include "dsputil.h" 39 #include "dsputil.h"
41 #include "ac3dec.h" 40 #include "ac3dec.h"
196 ac3_tables_init(); 195 ac3_tables_init();
197 ff_mdct_init(&s->imdct_256, 8, 1); 196 ff_mdct_init(&s->imdct_256, 8, 1);
198 ff_mdct_init(&s->imdct_512, 9, 1); 197 ff_mdct_init(&s->imdct_512, 9, 1);
199 ff_kbd_window_init(s->window, 5.0, 256); 198 ff_kbd_window_init(s->window, 5.0, 256);
200 dsputil_init(&s->dsp, avctx); 199 dsputil_init(&s->dsp, avctx);
201 av_init_random(0, &s->dith_state); 200 av_lfg_init(&s->dith_state, 0);
202 201
203 /* set bias values for float to int16 conversion */ 202 /* set bias values for float to int16 conversion */
204 if(s->dsp.float_to_int16_interleave == ff_float_to_int16_interleave_c) { 203 if(s->dsp.float_to_int16_interleave == ff_float_to_int16_interleave_c) {
205 s->add_bias = 385.0f; 204 s->add_bias = 385.0f;
206 s->mul_bias = 1.0f; 205 s->mul_bias = 1.0f;
448 447
449 for (i = start; i < end; i++) { 448 for (i = start; i < end; i++) {
450 tbap = bap[i]; 449 tbap = bap[i];
451 switch (tbap) { 450 switch (tbap) {
452 case 0: 451 case 0:
453 coeffs[i] = (av_random(&s->dith_state) & 0x7FFFFF) - 0x400000; 452 coeffs[i] = (av_lfg_get(&s->dith_state) & 0x7FFFFF) - 0x400000;
454 break; 453 break;
455 454
456 case 1: 455 case 1:
457 if(m->b1ptr > 2) { 456 if(m->b1ptr > 2) {
458 gcode = get_bits(gbc, 5); 457 gcode = get_bits(gbc, 5);