Mercurial > libavcodec.hg
comparison mpc8.c @ 9153:4e91d96dd045 libavcodec
Make Musepack decoders use LFG pseudorandom generator
| author | kostya |
|---|---|
| date | Sun, 08 Mar 2009 16:37:57 +0000 |
| parents | e9d9d946f213 |
| children | 54bc8a2727b0 |
comparison
equal
deleted
inserted
replaced
| 9152:788aa0c09382 | 9153:4e91d96dd045 |
|---|---|
| 23 * @file libavcodec/mpc8.c Musepack SV8 decoder | 23 * @file libavcodec/mpc8.c Musepack SV8 decoder |
| 24 * MPEG Audio Layer 1/2 -like codec with frames of 1152 samples | 24 * MPEG Audio Layer 1/2 -like codec with frames of 1152 samples |
| 25 * divided into 32 subbands. | 25 * divided into 32 subbands. |
| 26 */ | 26 */ |
| 27 | 27 |
| 28 #include "libavutil/random.h" | 28 #include "libavutil/lfg.h" |
| 29 #include "avcodec.h" | 29 #include "avcodec.h" |
| 30 #include "bitstream.h" | 30 #include "bitstream.h" |
| 31 #include "dsputil.h" | 31 #include "dsputil.h" |
| 32 #include "mpegaudio.h" | 32 #include "mpegaudio.h" |
| 33 | 33 |
| 98 if(avctx->extradata_size < 2){ | 98 if(avctx->extradata_size < 2){ |
| 99 av_log(avctx, AV_LOG_ERROR, "Too small extradata size (%i)!\n", avctx->extradata_size); | 99 av_log(avctx, AV_LOG_ERROR, "Too small extradata size (%i)!\n", avctx->extradata_size); |
| 100 return -1; | 100 return -1; |
| 101 } | 101 } |
| 102 memset(c->oldDSCF, 0, sizeof(c->oldDSCF)); | 102 memset(c->oldDSCF, 0, sizeof(c->oldDSCF)); |
| 103 av_random_init(&c->rnd, 0xDEADBEEF); | 103 av_lfg_init(&c->rnd, 0xDEADBEEF); |
| 104 dsputil_init(&c->dsp, avctx); | 104 dsputil_init(&c->dsp, avctx); |
| 105 | 105 |
| 106 ff_mpc_init(); | 106 ff_mpc_init(); |
| 107 | 107 |
| 108 init_get_bits(&gb, avctx->extradata, 16); | 108 init_get_bits(&gb, avctx->extradata, 16); |
| 282 for(ch = 0; ch < 2; ch++){ | 282 for(ch = 0; ch < 2; ch++){ |
| 283 res = bands[i].res[ch]; | 283 res = bands[i].res[ch]; |
| 284 switch(res){ | 284 switch(res){ |
| 285 case -1: | 285 case -1: |
| 286 for(j = 0; j < SAMPLES_PER_BAND; j++) | 286 for(j = 0; j < SAMPLES_PER_BAND; j++) |
| 287 c->Q[ch][off + j] = (av_random(&c->rnd) & 0x3FC) - 510; | 287 c->Q[ch][off + j] = (av_lfg_get(&c->rnd) & 0x3FC) - 510; |
| 288 break; | 288 break; |
| 289 case 0: | 289 case 0: |
| 290 break; | 290 break; |
| 291 case 1: | 291 case 1: |
| 292 for(j = 0; j < SAMPLES_PER_BAND; j += SAMPLES_PER_BAND / 2){ | 292 for(j = 0; j < SAMPLES_PER_BAND; j += SAMPLES_PER_BAND / 2){ |
