From 9aa2ab4276baeca2f968f6c9b90002d8c8a62a89 Mon Sep 17 00:00:00 2001 From: Vitor Sessak Date: Sun, 8 Mar 2009 17:43:12 +0000 Subject: Use FLG pseudo-random number generator in RoQ and ELBG Originally committed as revision 17881 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/elbg.c | 10 +++++----- libavcodec/elbg.h | 4 ++-- libavcodec/roqvideo.h | 4 ++-- libavcodec/roqvideoenc.c | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c index 712c927cec..35f068825f 100644 --- a/libavcodec/elbg.c +++ b/libavcodec/elbg.c @@ -25,7 +25,7 @@ #include -#include "libavutil/random.h" +#include "libavutil/lfg.h" #include "elbg.h" #include "avcodec.h" @@ -52,7 +52,7 @@ typedef struct{ int *utility_inc; int *nearest_cb; int *points; - AVRandomState *rand_state; + AVLFG *rand_state; } elbg_data; static inline int distance_limited(int *a, int *b, int dim, int limit) @@ -105,7 +105,7 @@ static int get_high_utility_cell(elbg_data *elbg) { int i=0; /* Using linear search, do binary if it ever turns to be speed critical */ - int r = av_random(elbg->rand_state)%(elbg->utility_inc[elbg->numCB-1]-1) + 1; + int r = av_lfg_get(elbg->rand_state)%(elbg->utility_inc[elbg->numCB-1]-1) + 1; while (elbg->utility_inc[i] < r) i++; @@ -318,7 +318,7 @@ static void do_shiftings(elbg_data *elbg) void ff_init_elbg(int *points, int dim, int numpoints, int *codebook, int numCB, int max_steps, int *closest_cb, - AVRandomState *rand_state) + AVLFG *rand_state) { int i, k; @@ -345,7 +345,7 @@ void ff_init_elbg(int *points, int dim, int numpoints, int *codebook, void ff_do_elbg(int *points, int dim, int numpoints, int *codebook, int numCB, int max_steps, int *closest_cb, - AVRandomState *rand_state) + AVLFG *rand_state) { int dist; elbg_data elbg_d; diff --git a/libavcodec/elbg.h b/libavcodec/elbg.h index cbc1f98c1f..5eb33ecb28 100644 --- a/libavcodec/elbg.h +++ b/libavcodec/elbg.h @@ -39,7 +39,7 @@ */ void ff_do_elbg(int *points, int dim, int numpoints, int *codebook, int numCB, int num_steps, int *closest_cb, - AVRandomState *rand_state); + AVLFG *rand_state); /** * Initialize the **codebook vector for the elbg algorithm. If you have already @@ -50,6 +50,6 @@ void ff_do_elbg(int *points, int dim, int numpoints, int *codebook, */ void ff_init_elbg(int *points, int dim, int numpoints, int *codebook, int numCB, int num_steps, int *closest_cb, - AVRandomState *rand_state); + AVLFG *rand_state); #endif /* AVCODEC_ELBG_H */ diff --git a/libavcodec/roqvideo.h b/libavcodec/roqvideo.h index 2b69838757..3fe11c670b 100644 --- a/libavcodec/roqvideo.h +++ b/libavcodec/roqvideo.h @@ -22,7 +22,7 @@ #ifndef AVCODEC_ROQVIDEO_H #define AVCODEC_ROQVIDEO_H -#include "libavutil/random.h" +#include "libavutil/lfg.h" #include "avcodec.h" #include "dsputil.h" @@ -58,7 +58,7 @@ typedef struct RoqContext { int width, height; /* Encoder only data */ - AVRandomState randctx; + AVLFG randctx; uint64_t lambda; motion_vect *this_motion4; diff --git a/libavcodec/roqvideoenc.c b/libavcodec/roqvideoenc.c index b9ab912564..8cca312f22 100644 --- a/libavcodec/roqvideoenc.c +++ b/libavcodec/roqvideoenc.c @@ -929,7 +929,7 @@ static int roq_encode_init(AVCodecContext *avctx) { RoqContext *enc = avctx->priv_data; - av_random_init(&enc->randctx, 1); + av_lfg_init(&enc->randctx, 1); enc->framesSinceKeyframe = 0; if ((avctx->width & 0xf) || (avctx->height & 0xf)) { -- cgit v1.2.3