summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wtaymans@redhat.com>2016-01-08 17:28:31 +0100
committerWim Taymans <wtaymans@redhat.com>2016-01-08 17:28:31 +0100
commit7f49b946cc1cced876642d873306f484afe5af50 (patch)
tree0e8681e400173b2698ee510d1f5942028c58b7c7
parent980163457e310082504f218061e4cde5e0603ad0 (diff)
audio-converter: prepare API for rate changes
Use the update function to update the sample rates along with the config once we implement resampling.
-rw-r--r--gst-libs/gst/audio/audio-converter.c27
-rw-r--r--gst-libs/gst/audio/audio-converter.h7
2 files changed, 25 insertions, 9 deletions
diff --git a/gst-libs/gst/audio/audio-converter.c b/gst-libs/gst/audio/audio-converter.c
index 564a203bd..ccde30eab 100644
--- a/gst-libs/gst/audio/audio-converter.c
+++ b/gst-libs/gst/audio/audio-converter.c
@@ -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);
diff --git a/gst-libs/gst/audio/audio-converter.h b/gst-libs/gst/audio/audio-converter.h
index 18dcbc125..1d6aa345a 100644
--- a/gst-libs/gst/audio/audio-converter.h
+++ b/gst-libs/gst/audio/audio-converter.h
@@ -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);