audiobasesrc: Fix ringbuffer handling when settings caps
authorPaul HENRYS <visechelle@gmail.com>
Fri, 22 Mar 2013 12:41:17 +0000 (13:41 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 25 Mar 2013 09:16:03 +0000 (10:16 +0100)
ringbuffer was released after setting values to its spec field
in gst_audio_base_src_setcaps(). This led to failure in case
gst_audio_base_src_setcaps() is called more than one time.

https://bugzilla.gnome.org/show_bug.cgi?id=696540

gst-libs/gst/audio/gstaudiobasesrc.c

index 66bade4..8f1721b 100644 (file)
@@ -534,6 +534,9 @@ gst_audio_base_src_setcaps (GstBaseSrc * bsrc, GstCaps * caps)
   GstAudioRingBufferSpec *spec;
   gint bpf, rate;
 
+  GST_DEBUG ("release old ringbuffer");
+  gst_audio_ring_buffer_release (src->ringbuffer);
+
   spec = &src->ringbuffer->spec;
 
   spec->buffer_time = src->buffer_time;
@@ -554,10 +557,6 @@ gst_audio_base_src_setcaps (GstBaseSrc * bsrc, GstCaps * caps)
 
   GST_OBJECT_UNLOCK (src);
 
-  GST_DEBUG ("release old ringbuffer");
-
-  gst_audio_ring_buffer_release (src->ringbuffer);
-
   gst_audio_ring_buffer_debug_spec_buff (spec);
 
   GST_DEBUG ("acquire new ringbuffer");