diff options
author | Rostislav Pehlivanov <atomnuker@gmail.com> | 2015-09-06 15:06:34 +0100 |
---|---|---|
committer | Rostislav Pehlivanov <atomnuker@gmail.com> | 2015-09-06 15:30:25 +0100 |
commit | 92aa3e7fb21a4b0764ac8a0348a5bf84badee216 (patch) | |
tree | b3c5248c1bcaf4b10cbd8bdbacf896478fb0dab3 | |
parent | 34e85cb340675ac9b67b72a34cc785bbc8863660 (diff) | |
download | ffmpeg-92aa3e7fb21a4b0764ac8a0348a5bf84badee216.tar.gz |
aacenc: copy PRNG from the decoder
Needed for the following PNS commits.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
-rw-r--r-- | libavcodec/aacenc.c | 1 | ||||
-rw-r--r-- | libavcodec/aacenc.h | 1 | ||||
-rw-r--r-- | libavcodec/aacenc_utils.h | 9 |
3 files changed, 11 insertions, 0 deletions
diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c index 9cce1a2ff0..2b2d039f6e 100644 --- a/libavcodec/aacenc.c +++ b/libavcodec/aacenc.c @@ -861,6 +861,7 @@ static av_cold int aac_encode_init(AVCodecContext *avctx) ff_aac_coder_init_mips(s); s->lambda = avctx->global_quality > 0 ? avctx->global_quality : 120; + s->random_state = 0x1f2e3d4c; ff_aac_tableinit(); diff --git a/libavcodec/aacenc.h b/libavcodec/aacenc.h index 2b7a62a146..54951f9f70 100644 --- a/libavcodec/aacenc.h +++ b/libavcodec/aacenc.h @@ -98,6 +98,7 @@ typedef struct AACEncContext { AACCoefficientsEncoder *coder; int cur_channel; int last_frame; + int random_state; float lambda; AudioFrameQueue afq; DECLARE_ALIGNED(16, int, qcoefs)[96]; ///< quantized coefficients diff --git a/libavcodec/aacenc_utils.h b/libavcodec/aacenc_utils.h index 327fbad833..0ab15a3e5e 100644 --- a/libavcodec/aacenc_utils.h +++ b/libavcodec/aacenc_utils.h @@ -128,6 +128,15 @@ static inline int quant_array_idx(const float val, const float *arr, const int n return index; } +/* + * linear congruential pseudorandom number generator, copied from the decoder + */ +static inline int lcg_random(unsigned previous_val) +{ + union { unsigned u; int s; } v = { previous_val * 1664525u + 1013904223 }; + return v.s; +} + #define ERROR_IF(cond, ...) \ if (cond) { \ av_log(avctx, AV_LOG_ERROR, __VA_ARGS__); \ |