diff options
author | Mathieu Duponchelle <mathieu@centricular.com> | 2018-02-15 20:00:42 +0100 |
---|---|---|
committer | Mathieu Duponchelle <mathieu@centricular.com> | 2018-02-15 20:51:30 +0100 |
commit | 9cf4293bde083685999820f1dee8ac908701df27 (patch) | |
tree | 020ac4d21bfddcc8f9c9be5823532dbb1bad01ca | |
parent | 6a4a82f35500614fb876886c9d1606dac3783169 (diff) |
audio-converter: add a convenience conversion method
This is useful from python bindings
https://bugzilla.gnome.org/show_bug.cgi?id=793492
-rw-r--r-- | docs/libs/gst-plugins-base-libs-sections.txt | 1 | ||||
-rw-r--r-- | gst-libs/gst/audio/audio-converter.c | 35 | ||||
-rw-r--r-- | gst-libs/gst/audio/audio-converter.h | 6 |
3 files changed, 42 insertions, 0 deletions
diff --git a/docs/libs/gst-plugins-base-libs-sections.txt b/docs/libs/gst-plugins-base-libs-sections.txt index 57222fb56..53d0b0094 100644 --- a/docs/libs/gst-plugins-base-libs-sections.txt +++ b/docs/libs/gst-plugins-base-libs-sections.txt @@ -658,6 +658,7 @@ GstAudioConverterFlags gst_audio_converter_new gst_audio_converter_free gst_audio_converter_samples +gst_audio_converter_convert gst_audio_converter_get_in_frames gst_audio_converter_get_max_latency gst_audio_converter_get_out_frames diff --git a/gst-libs/gst/audio/audio-converter.c b/gst-libs/gst/audio/audio-converter.c index 2cf63c13b..b56743c6b 100644 --- a/gst-libs/gst/audio/audio-converter.c +++ b/gst-libs/gst/audio/audio-converter.c @@ -1448,6 +1448,41 @@ gst_audio_converter_samples (GstAudioConverter * convert, } /** + * gst_audio_converter_convert: + * @flags: extra #GstAudioConverterFlags + * @in: (array length=in_size) (element-type guint8): input data + * @in_size: size of @in + * @out: (out) (array length=out_size) (element-type guint8): a pointer where + * the output data will be written + * @out_size: (out): a pointer where the size of @out will be written + * + * Convenience wrapper around gst_audio_converter_samples(), which will + * perform allocation of the output buffer based on the result from + * gst_audio_converter_get_out_frames(). + * + * Returns: %TRUE is the conversion could be performed. + * + * Since: 1.14 + */ +gboolean +gst_audio_converter_convert (GstAudioConverter * convert, + GstAudioConverterFlags flags, gpointer in, gsize in_size, + gpointer * out, gsize * out_size) +{ + g_return_val_if_fail (convert != NULL, FALSE); + g_return_val_if_fail (flags ^ GST_AUDIO_CONVERTER_FLAG_IN_WRITABLE, FALSE); + + gsize in_frames = in_size / convert->in.bpf; + gsize out_frames = gst_audio_converter_get_out_frames (convert, in_frames); + + *out_size = out_frames * convert->out.bpf; + *out = g_malloc0 (*out_size); + + return gst_audio_converter_samples (convert, flags, &in, in_frames, out, + out_frames); +} + +/** * gst_audio_converter_supports_inplace: * @convert: a #GstAudioConverter * diff --git a/gst-libs/gst/audio/audio-converter.h b/gst-libs/gst/audio/audio-converter.h index 4d93b0b3b..e04bcad06 100644 --- a/gst-libs/gst/audio/audio-converter.h +++ b/gst-libs/gst/audio/audio-converter.h @@ -159,6 +159,12 @@ gboolean gst_audio_converter_samples (GstAudioConverter * co GST_EXPORT gboolean gst_audio_converter_supports_inplace (GstAudioConverter *convert); +GST_EXPORT +gboolean gst_audio_converter_convert (GstAudioConverter * convert, + GstAudioConverterFlags flags, + gpointer in, gsize in_size, + gpointer *out, gsize *out_size); + G_END_DECLS #endif /* __GST_AUDIO_CONVERTER_H__ */ |