mad: If gst_pad_alloc_buffer() returns a buffer with the wrong size allocate a new one
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 16 Dec 2010 09:30:31 +0000 (10:30 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 16 Dec 2010 09:32:37 +0000 (10:32 +0100)
Fixes bug #635461.

ext/mad/gstmad.c

index d345023..3d76b4d 100644 (file)
@@ -1728,6 +1728,13 @@ gst_mad_chain (GstPad * pad, GstBuffer * buffer)
           goto skip_frame;
         }
 
+        if (GST_BUFFER_SIZE (outbuffer) != nsamples * mad->channels * 4) {
+          gst_buffer_unref (outbuffer);
+
+          outbuffer = gst_buffer_new_and_alloc (nsamples * mad->channels * 4);
+          gst_buffer_set_caps (outbuffer, GST_PAD_CAPS (mad->srcpad));
+        }
+
         mad_synth_frame (&mad->synth, &mad->frame);
         left_ch = mad->synth.pcm.samples[0];
         right_ch = mad->synth.pcm.samples[1];