audio-converter: prepare API for rate changes
authorWim Taymans <wtaymans@redhat.com>
Fri, 8 Jan 2016 16:28:31 +0000 (17:28 +0100)
committerWim Taymans <wtaymans@redhat.com>
Fri, 8 Jan 2016 16:28:31 +0000 (17:28 +0100)
Use the update function to update the sample rates along with the config
once we implement resampling.

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

index 564a203..ccde30e 100644 (file)
@@ -273,11 +273,16 @@ copy_config (GQuark field_id, const GValue * value, gpointer user_data)
 }
 
 /**
- * gst_audio_converter_set_config:
+ * gst_audio_converter_update_config:
  * @convert: a #GstAudioConverter
+ * @in_rate: input rate
+ * @out_rate: output rate
  * @config: (transfer full): a #GstStructure
  *
- * Set @config as extra configuraion for @convert.
+ * Set @config as extra configuration for @convert.
+ *
+ * in_rate and @out_rate specify the new sample rates of input and output
+ * formats. A value of 0 leaves the sample rate unchanged.
  *
  * If the parameters in @config can not be set exactly, this function returns
  * %FALSE and will try to update as much state as possible. The new state can
@@ -289,8 +294,8 @@ copy_config (GQuark field_id, const GValue * value, gpointer user_data)
  * Returns: %TRUE when @config could be set.
  */
 gboolean
-gst_audio_converter_set_config (GstAudioConverter * convert,
-    GstStructure * config)
+gst_audio_converter_update_config (GstAudioConverter * convert,
+    gint in_rate, gint out_rate, GstStructure * config)
 {
   g_return_val_if_fail (convert != NULL, FALSE);
   g_return_val_if_fail (config != NULL, FALSE);
@@ -304,17 +309,25 @@ gst_audio_converter_set_config (GstAudioConverter * convert,
 /**
  * gst_audio_converter_get_config:
  * @convert: a #GstAudioConverter
+ * @in_rate: result input rate
+ * @out_rate: result output rate
  *
  * Get the current configuration of @convert.
  *
  * Returns: a #GstStructure that remains valid for as long as @convert is valid
- *   or until gst_audio_converter_set_config() is called.
+ *   or until gst_audio_converter_update_config() is called.
  */
 const GstStructure *
-gst_audio_converter_get_config (GstAudioConverter * convert)
+gst_audio_converter_get_config (GstAudioConverter * convert,
+    gint * in_rate, gint * out_rate)
 {
   g_return_val_if_fail (convert != NULL, NULL);
 
+  if (in_rate)
+    *in_rate = convert->in.rate;
+  if (out_rate)
+    *out_rate = convert->out.rate;
+
   return convert->config;
 }
 
@@ -704,7 +717,7 @@ gst_audio_converter_new (GstAudioInfo * in_info, GstAudioInfo * out_info,
   /* default config */
   convert->config = gst_structure_new_empty ("GstAudioConverter");
   if (config)
-    gst_audio_converter_set_config (convert, config);
+    gst_audio_converter_update_config (convert, 0, 0, config);
 
   GST_INFO ("unitsizes: %d -> %d", in_info->bpf, out_info->bpf);
 
index 18dcbc1..1d6aa34 100644 (file)
@@ -75,8 +75,11 @@ GstAudioConverter *  gst_audio_converter_new             (GstAudioInfo *in_info,
 
 void                 gst_audio_converter_free            (GstAudioConverter * convert);
 
-gboolean             gst_audio_converter_set_config      (GstAudioConverter * convert, GstStructure *config);
-const GstStructure * gst_audio_converter_get_config      (GstAudioConverter * convert);
+gboolean             gst_audio_converter_update_config   (GstAudioConverter * convert,
+                                                          gint in_rate, gint out_rate,
+                                                          GstStructure *config);
+const GstStructure * gst_audio_converter_get_config      (GstAudioConverter * convert,
+                                                          gint *in_rate, gint *out_rate);
 
 gsize                gst_audio_converter_get_out_frames  (GstAudioConverter *convert,
                                                           gsize in_frames);