gst_plugins_base/gst/audioconvert/audioconvert.c
changeset 16 8e837d1bf446
parent 0 0e761a78d257
child 30 7e817e7e631c
--- a/gst_plugins_base/gst/audioconvert/audioconvert.c	Wed Mar 24 17:58:42 2010 -0500
+++ b/gst_plugins_base/gst/audioconvert/audioconvert.c	Wed Mar 24 18:04:17 2010 -0500
@@ -66,7 +66,6 @@
   }                                                                           \
 }
 
-
 /* unpack from float to float 64 (double) */
 #define MAKE_UNPACK_FUNC_FF(name, type, FUNC)                                 \
 static void                                                                   \
@@ -418,7 +417,8 @@
 
 gboolean
 audio_convert_prepare_context (AudioConvertCtx * ctx, AudioConvertFmt * in,
-    AudioConvertFmt * out, DitherType dither, NoiseShapingType ns)
+    AudioConvertFmt * out, GstAudioConvertDithering dither,
+    GstAudioConvertNoiseShaping ns)
 {
   gint idx_in, idx_out;
 
@@ -429,6 +429,9 @@
   /* first clean the existing context */
   audio_convert_clean_context (ctx);
 
+  g_return_val_if_fail (in->unpositioned_layout == out->unpositioned_layout,
+      FALSE);
+
   ctx->in = *in;
   ctx->out = *out;
 
@@ -534,9 +537,9 @@
 audio_convert_convert (AudioConvertCtx * ctx, gpointer src,
     gpointer dst, gint samples, gboolean src_writable)
 {
-  gint insize, outsize, size;
+  guint insize, outsize, size;
   gpointer outbuf, tmpbuf;
-  gint intemp = 0, outtemp = 0, biggest;
+  guint intemp = 0, outtemp = 0, biggest;
 
   g_return_val_if_fail (ctx != NULL, FALSE);
   g_return_val_if_fail (src != NULL, FALSE);
@@ -554,9 +557,9 @@
       : sizeof (gint32);
 
   if (!ctx->in_default)
-    intemp = insize * size * 8 / ctx->in.width;
+    intemp = gst_util_uint64_scale (insize, size * 8, ctx->in.width);
   if (!ctx->mix_passthrough || !ctx->out_default)
-    outtemp = outsize * size * 8 / ctx->out.width;
+    outtemp = gst_util_uint64_scale (outsize, size * 8, ctx->out.width);
   biggest = MAX (intemp, outtemp);
 
   /* see if one of the buffers can be used as temp */