diff options
author | Wim Taymans <wtaymans@redhat.com> | 2016-01-08 17:28:31 +0100 |
---|---|---|
committer | Wim Taymans <wtaymans@redhat.com> | 2016-01-08 17:28:31 +0100 |
commit | 7f49b946cc1cced876642d873306f484afe5af50 (patch) | |
tree | 0e8681e400173b2698ee510d1f5942028c58b7c7 | |
parent | 980163457e310082504f218061e4cde5e0603ad0 (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.c | 27 | ||||
-rw-r--r-- | gst-libs/gst/audio/audio-converter.h | 7 |
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); |