audio-convert: simplify API
authorWim Taymans <wtaymans@redhat.com>
Fri, 8 Jan 2016 16:17:44 +0000 (17:17 +0100)
committerWim Taymans <wtaymans@redhat.com>
Fri, 8 Jan 2016 16:19:58 +0000 (17:19 +0100)
Simplify the API, we don't need the consumed and produced output
arguments. The caller needs to use the _get_in_frames/get_out_frames API
to check how much input is needed and how much output will be produced.

gst-libs/gst/audio/audio-converter.c
gst-libs/gst/audio/audio-converter.h
gst/audioconvert/gstaudioconvert.c

index 1cd387b..564a203 100644 (file)
@@ -832,8 +832,6 @@ gst_audio_converter_get_max_latency (GstAudioConverter * convert)
  * @in_samples: number of input samples
  * @out: output samples
  * @out_samples: number of output samples
- * @in_consumed: number of input samples consumed
- * @out_produced: number of output samples produced
  *
  * Perform the conversion with @in_samples in @in to @out_samples in @out
  * using @convert.
@@ -844,17 +842,17 @@ gst_audio_converter_get_max_latency (GstAudioConverter * convert)
  * If non-interleaved samples are used, @in and @out must point to an
  * array with pointers to memory blocks, one for each channel.
  *
- * The actual number of samples used from @in is returned in @in_consumed and
- * can be less than @in_samples. The actual number of samples produced is
- * returned in @out_produced and can be less than @out_samples.
+ * This function always produces @out_frames of output and consumes @in_frames of
+ * input. Use gst_audio_converter_get_out_frames() and
+ * gst_audio_converter_get_in_frames() to make sure @in_frames and @out_frames
+ * are matching and @in and @out point to enough memory.
  *
  * Returns: %TRUE is the conversion could be performed.
  */
 gboolean
 gst_audio_converter_samples (GstAudioConverter * convert,
     GstAudioConverterFlags flags, gpointer in[], gsize in_samples,
-    gpointer out[], gsize out_samples, gsize * in_consumed,
-    gsize * out_produced)
+    gpointer out[], gsize out_samples)
 {
   AudioChain *chain;
   gpointer *tmp;
@@ -863,15 +861,11 @@ gst_audio_converter_samples (GstAudioConverter * convert,
   g_return_val_if_fail (convert != NULL, FALSE);
   g_return_val_if_fail (in != NULL, FALSE);
   g_return_val_if_fail (out != NULL, FALSE);
-  g_return_val_if_fail (in_consumed != NULL, FALSE);
-  g_return_val_if_fail (out_produced != NULL, FALSE);
 
   in_samples = MIN (in_samples, out_samples);
 
   if (in_samples == 0) {
     GST_LOG ("skipping empty buffer");
-    *in_consumed = 0;
-    *out_produced = 0;
     return TRUE;
   }
 
@@ -885,8 +879,6 @@ gst_audio_converter_samples (GstAudioConverter * convert,
         in_samples, bytes);
     for (i = 0; i < chain->blocks; i++)
       memcpy (out[i], in[i], bytes);
-    *out_produced = in_samples;
-    *in_consumed = in_samples;
     return TRUE;
   }
 
@@ -906,9 +898,5 @@ gst_audio_converter_samples (GstAudioConverter * convert,
       convert->out.finfo->pack_func (convert->out.finfo, 0, tmp[i], out[i],
           in_samples * chain->inc);
   }
-
-  *out_produced = in_samples;
-  *in_consumed = in_samples;
-
   return TRUE;
 }
index 1810293..18dcbc1 100644 (file)
@@ -89,7 +89,6 @@ gsize                gst_audio_converter_get_max_latency (GstAudioConverter *con
 gboolean             gst_audio_converter_samples         (GstAudioConverter * convert,
                                                           GstAudioConverterFlags flags,
                                                           gpointer in[], gsize in_samples,
-                                                          gpointer out[], gsize out_samples,
-                                                          gsize *in_consumed, gsize *out_produced);
+                                                          gpointer out[], gsize out_samples);
 
 #endif /* __GST_AUDIO_CONVERTER_H__ */
index e5e8bbb..b3714aa 100644 (file)
@@ -703,7 +703,7 @@ gst_audio_convert_transform (GstBaseTransform * base, GstBuffer * inbuf,
   gint insize, outsize;
   gboolean inbuf_writable;
   GstAudioConverterFlags flags;
-  gsize samples, consumed, produced;
+  gsize samples;
 
   /* get amount of samples to convert. */
   samples = gst_buffer_get_size (inbuf) / this->in_info.bpf;
@@ -741,7 +741,7 @@ gst_audio_convert_transform (GstBaseTransform * base, GstBuffer * inbuf,
     gpointer out[1] = { dstmap.data };
 
     if (!gst_audio_converter_samples (this->convert, flags,
-            in, samples, out, samples, &consumed, &produced))
+            in, samples, out, samples))
       goto convert_error;
   } else {
     /* Create silence buffer */