diff --git a/gst-libs/gst/audio/audio-converter.c b/gst-libs/gst/audio/audio-converter.c index ccde30eabe..a701d753f9 100644 --- a/gst-libs/gst/audio/audio-converter.c +++ b/gst-libs/gst/audio/audio-converter.c @@ -338,7 +338,7 @@ do_unpack (AudioChain * chain, gsize num_samples, gpointer user_data) gpointer *tmp; gboolean src_writable; - src_writable = (convert->flags & GST_AUDIO_CONVERTER_FLAG_SOURCE_WRITABLE); + src_writable = (convert->flags & GST_AUDIO_CONVERTER_FLAG_IN_WRITABLE); if (!chain->allow_ip || !src_writable || !convert->in_default) { gint i; @@ -679,6 +679,7 @@ setup_allocators (GstAudioConverter * convert) /** * gst_audio_converter_new: (skip) + * @flags: #GstAudioConverterFlags * @in_info: a source #GstAudioInfo * @out_info: a destination #GstAudioInfo * @config: (transfer full): a #GstStructure with configuration options @@ -692,8 +693,8 @@ setup_allocators (GstAudioConverter * convert) * Returns: a #GstAudioConverter or %NULL if conversion is not possible. */ GstAudioConverter * -gst_audio_converter_new (GstAudioInfo * in_info, GstAudioInfo * out_info, - GstStructure * config) +gst_audio_converter_new (GstAudioConverterFlags flags, GstAudioInfo * in_info, + GstAudioInfo * out_info, GstStructure * config) { GstAudioConverter *convert; AudioChain *prev; diff --git a/gst-libs/gst/audio/audio-converter.h b/gst-libs/gst/audio/audio-converter.h index 1d6aa345a3..d2e7a4d4d0 100644 --- a/gst-libs/gst/audio/audio-converter.h +++ b/gst-libs/gst/audio/audio-converter.h @@ -59,17 +59,21 @@ typedef struct _GstAudioConverter GstAudioConverter; /** * GstAudioConverterFlags: * @GST_AUDIO_CONVERTER_FLAG_NONE: no flag - * @GST_AUDIO_CONVERTER_FLAG_SOURCE_WRITABLE: the source is writable and can be + * @GST_AUDIO_CONVERTER_FLAG_IN_WRITABLE: the input sample arrays are writable and can be * used as temporary storage during conversion. + * @GST_AUDIO_CONVERTER_FLAG_VARIABLE_RATE: allow arbitrary rate updates with + * gst_audio_converter_update_config(). * - * Extra flags passed to gst_audio_converter_samples(). + * Extra flags passed to gst_audio_converter_new() and gst_audio_converter_samples(). */ typedef enum { GST_AUDIO_CONVERTER_FLAG_NONE = 0, - GST_AUDIO_CONVERTER_FLAG_SOURCE_WRITABLE = (1 << 0) + GST_AUDIO_CONVERTER_FLAG_IN_WRITABLE = (1 << 0), + GST_AUDIO_CONVERTER_FLAG_VARIABLE_RATE = (1 << 1) } GstAudioConverterFlags; -GstAudioConverter * gst_audio_converter_new (GstAudioInfo *in_info, +GstAudioConverter * gst_audio_converter_new (GstAudioConverterFlags flags, + GstAudioInfo *in_info, GstAudioInfo *out_info, GstStructure *config); diff --git a/gst/audioconvert/gstaudioconvert.c b/gst/audioconvert/gstaudioconvert.c index b3714aa886..a3a8fad32f 100644 --- a/gst/audioconvert/gstaudioconvert.c +++ b/gst/audioconvert/gstaudioconvert.c @@ -660,7 +660,7 @@ gst_audio_convert_set_caps (GstBaseTransform * base, GstCaps * incaps, if (!gst_audio_info_from_caps (&out_info, outcaps)) goto invalid_out; - this->convert = gst_audio_converter_new (&in_info, &out_info, + this->convert = gst_audio_converter_new (0, &in_info, &out_info, gst_structure_new ("GstAudioConverterConfig", GST_AUDIO_CONVERTER_OPT_DITHER_METHOD, GST_TYPE_AUDIO_DITHER_METHOD, this->dither, @@ -734,7 +734,7 @@ gst_audio_convert_transform (GstBaseTransform * base, GstBuffer * inbuf, /* and convert the samples */ flags = 0; if (inbuf_writable) - flags |= GST_AUDIO_CONVERTER_FLAG_SOURCE_WRITABLE; + flags |= GST_AUDIO_CONVERTER_FLAG_IN_WRITABLE; if (!GST_BUFFER_FLAG_IS_SET (inbuf, GST_BUFFER_FLAG_GAP)) { gpointer in[1] = { srcmap.data };