Mercurial > libavcodec.hg
comparison mpc7.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/mpc7.c Musepack SV7 decoder | 23 * @file libavcodec/mpc7.c Musepack SV7 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 |
| 51 if(avctx->extradata_size < 16){ | 51 if(avctx->extradata_size < 16){ |
| 52 av_log(avctx, AV_LOG_ERROR, "Too small extradata size (%i)!\n", avctx->extradata_size); | 52 av_log(avctx, AV_LOG_ERROR, "Too small extradata size (%i)!\n", avctx->extradata_size); |
| 53 return -1; | 53 return -1; |
| 54 } | 54 } |
| 55 memset(c->oldDSCF, 0, sizeof(c->oldDSCF)); | 55 memset(c->oldDSCF, 0, sizeof(c->oldDSCF)); |
| 56 av_random_init(&c->rnd, 0xDEADBEEF); | 56 av_lfg_init(&c->rnd, 0xDEADBEEF); |
| 57 dsputil_init(&c->dsp, avctx); | 57 dsputil_init(&c->dsp, avctx); |
| 58 c->dsp.bswap_buf((uint32_t*)buf, (const uint32_t*)avctx->extradata, 4); | 58 c->dsp.bswap_buf((uint32_t*)buf, (const uint32_t*)avctx->extradata, 4); |
| 59 ff_mpc_init(); | 59 ff_mpc_init(); |
| 60 init_get_bits(&gb, buf, 128); | 60 init_get_bits(&gb, buf, 128); |
| 61 | 61 |
| 116 { | 116 { |
| 117 int i, i1, t; | 117 int i, i1, t; |
| 118 switch(idx){ | 118 switch(idx){ |
| 119 case -1: | 119 case -1: |
| 120 for(i = 0; i < SAMPLES_PER_BAND; i++){ | 120 for(i = 0; i < SAMPLES_PER_BAND; i++){ |
| 121 *dst++ = (av_random(&c->rnd) & 0x3FC) - 510; | 121 *dst++ = (av_lfg_get(&c->rnd) & 0x3FC) - 510; |
| 122 } | 122 } |
| 123 break; | 123 break; |
| 124 case 1: | 124 case 1: |
| 125 i1 = get_bits1(gb); | 125 i1 = get_bits1(gb); |
| 126 for(i = 0; i < SAMPLES_PER_BAND/3; i++){ | 126 for(i = 0; i < SAMPLES_PER_BAND/3; i++){ |
