gst_plugins_base/gst/audioconvert/gstaudioquantize.c
branchRCL_3
changeset 29 567bb019e3e3
parent 0 0e761a78d257
child 30 7e817e7e631c
--- a/gst_plugins_base/gst/audioconvert/gstaudioquantize.c	Wed Mar 31 22:03:18 2010 +0300
+++ b/gst_plugins_base/gst/audioconvert/gstaudioquantize.c	Tue Aug 31 15:30:33 2010 +0300
@@ -37,6 +37,8 @@
 #include "audioconvert.h"
 #include "gstaudioquantize.h"
 
+#include "gstfastrandom.h"
+
 #define MAKE_QUANTIZE_FUNC_NAME(name)                                   \
 gst_audio_quantize_quantize_##name
 
@@ -144,8 +146,8 @@
   gint32 dither = (1<<(scale));
 
 #define ADD_DITHER_RPDF_I()                                             \
-        rand = g_rand_int_range (ctx->dither_random, bias - dither,     \
-               bias + dither);                                          \
+        rand = gst_fast_random_int32_range (bias - dither,              \
+	    bias + dither);                                             \
         if (rand > 0 && tmp > 0 && G_MAXINT32 - tmp <= rand)            \
                 tmp = G_MAXINT32;                                       \
         else if (rand < 0 && tmp < 0 && G_MININT32 - tmp >= rand)       \
@@ -157,8 +159,7 @@
   gdouble dither = 1.0/(1U<<(32 - scale - 1));
 
 #define ADD_DITHER_RPDF_F()                                             \
-        tmp += g_rand_double_range (ctx->dither_random, - dither,       \
-               dither);
+        tmp += gst_fast_random_double_range (- dither, dither);
 
 #define INIT_DITHER_TPDF_I()                                            \
   gint32 rand;                                                          \
@@ -166,10 +167,10 @@
   bias = bias >> 1;
 
 #define ADD_DITHER_TPDF_I()                                             \
-        rand = g_rand_int_range (ctx->dither_random, bias - dither,     \
-               bias + dither - 1)                                           \
-               + g_rand_int_range (ctx->dither_random, bias - dither,   \
-               bias + dither - 1);                                          \
+        rand = gst_fast_random_int32_range (bias - dither,              \
+                   bias + dither - 1)                                   \
+               + gst_fast_random_int32_range (bias - dither,            \
+                   bias + dither - 1);                                  \
         if (rand > 0 && tmp > 0 && G_MAXINT32 - tmp <= rand)            \
                 tmp = G_MAXINT32;                                       \
         else if (rand < 0 && tmp < 0 && G_MININT32 - tmp >= rand)       \
@@ -181,10 +182,8 @@
   gdouble dither = 1.0/(1U<<(32 - scale));
 
 #define ADD_DITHER_TPDF_F()                                             \
-        tmp += g_rand_double_range (ctx->dither_random, - dither,       \
-               dither)                                                  \
-               + g_rand_double_range (ctx->dither_random, - dither,     \
-               dither);
+        tmp += gst_fast_random_double_range (- dither, dither)          \
+               + gst_fast_random_double_range (- dither, dither);
 
 #define INIT_DITHER_TPDF_HF_I()                                         \
   gint32 rand;                                                          \
@@ -193,8 +192,8 @@
   bias = bias >> 1;
 
 #define ADD_DITHER_TPDF_HF_I()                                          \
-        tmp_rand = g_rand_int_range (ctx->dither_random, bias - dither, \
-                   bias + dither); \
+        tmp_rand = gst_fast_random_int32_range (bias - dither,          \
+                       bias + dither);                                  \
         rand = tmp_rand - last_random[chan_pos];                        \
         last_random[chan_pos] = tmp_rand;                               \
         if (rand > 0 && tmp > 0 && G_MAXINT32 - tmp <= rand)            \
@@ -213,8 +212,7 @@
   gdouble *last_random = (gdouble *) ctx->last_random, tmp_rand;
 
 #define ADD_DITHER_TPDF_HF_F()                                          \
-        tmp_rand = g_rand_double_range (ctx->dither_random, - dither,   \
-                   dither);                                             \
+        tmp_rand = gst_fast_random_double_range (- dither, dither);     \
         rand = tmp_rand - last_random[chan_pos];                        \
         last_random[chan_pos] = tmp_rand;                               \
         tmp += rand;
@@ -430,7 +428,6 @@
     default:
       break;
   }
-  return;
 
   g_free (ctx->error_buf);
   ctx->error_buf = NULL;
@@ -446,16 +443,13 @@
         ctx->last_random = g_new0 (gint32, ctx->out.channels);
       else
         ctx->last_random = g_new0 (gdouble, ctx->out.channels);
-      ctx->dither_random = g_rand_new ();
       break;
     case DITHER_RPDF:
     case DITHER_TPDF:
-      ctx->dither_random = g_rand_new ();
       ctx->last_random = NULL;
       break;
     case DITHER_NONE:
     default:
-      ctx->dither_random = NULL;
       ctx->last_random = NULL;
       break;
   }
@@ -466,8 +460,6 @@
 gst_audio_quantize_free_dither (AudioConvertCtx * ctx)
 {
   g_free (ctx->last_random);
-  if (ctx->dither_random)
-    g_rand_free (ctx->dither_random);
 
   return;
 }