oggdemux: Don't use gst_pad_alloc_buffer()
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Wed, 22 Dec 2010 19:06:56 +0000 (19:06 +0000)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 22 Dec 2010 19:19:15 +0000 (20:19 +0100)
allocate buffers using gst_buffer_new_and_alloc() instead of
gst_pad_alloc_buffer_and_set_caps(), as the first one will
cause the pad to block, and we don't want that since that will
prevent subsequent pads from being fed if a block occurs at
start, when all pads must be fed for playback to start.

This fixes autoplugging of the tiger element and other things.

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

ext/ogg/gstoggdemux.c

index 8da7288..8970783 100644 (file)
@@ -567,10 +567,9 @@ gst_ogg_demux_chain_peer (GstOggPad * pad, ogg_packet * packet,
       goto empty_packet;
   }
 
-  ret =
-      gst_pad_alloc_buffer_and_set_caps (GST_PAD_CAST (pad),
-      GST_BUFFER_OFFSET_NONE, packet->bytes - offset - trim,
-      GST_PAD_CAPS (pad), &buf);
+  buf = gst_buffer_new_and_alloc (packet->bytes - offset - trim);
+  gst_buffer_set_caps (buf, GST_PAD_CAPS (pad));
+  ret = GST_FLOW_OK;
 
   /* combine flows */
   cret = gst_ogg_demux_combine_flows (ogg, pad, ret);