flacdec: Actually output the pending buffer.. and not a blank one.
authorEdward Hervey <bilboed@bilboed.com>
Fri, 8 May 2009 14:40:57 +0000 (16:40 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Fri, 8 May 2009 14:40:57 +0000 (16:40 +0200)
It was previously sending the bogus buffer which was returned from
the bufferalloc (required for reverse negotiation apparently) instead
of the pending buffer.

ext/flac/gstflacdec.c

index f8eb818..9fe153a 100644 (file)
@@ -938,10 +938,11 @@ gst_flac_dec_write (GstFlacDec * flacdec, const FLAC__Frame * frame,
         GST_BUFFER_OFFSET (flacdec->pending),
         GST_BUFFER_SIZE (flacdec->pending),
         GST_BUFFER_CAPS (flacdec->pending), &outbuf);
-    if (ret == GST_FLOW_OK)
-      gst_pad_push (flacdec->srcpad, outbuf);
+    if (ret == GST_FLOW_OK) {
+      gst_pad_push (flacdec->srcpad, flacdec->pending);
+      gst_buffer_unref (outbuf);
+    }
 
-    gst_buffer_unref (flacdec->pending);
     outbuf = flacdec->pending = NULL;
     flacdec->segment.last_stop += flacdec->pending_samples;
     flacdec->pending_samples = 0;