aacenc: copy PRNG from the decoder
authorRostislav Pehlivanov <atomnuker@gmail.com>
Sun, 6 Sep 2015 14:06:34 +0000 (15:06 +0100)
committerRostislav Pehlivanov <atomnuker@gmail.com>
Sun, 6 Sep 2015 14:30:25 +0000 (15:30 +0100)
Needed for the following PNS commits.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
libavcodec/aacenc.c
libavcodec/aacenc.h
libavcodec/aacenc_utils.h

index 9cce1a2..2b2d039 100644 (file)
@@ -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();
 
index 2b7a62a..54951f9 100644 (file)
@@ -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
index 327fbad..0ab15a3 100644 (file)
@@ -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__); \