ext/ffmpeg/gstffmpegdec.c: Unref when not usable.
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Sat, 9 Oct 2004 16:13:31 +0000 (16:13 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Sat, 9 Oct 2004 16:13:31 +0000 (16:13 +0000)
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_chain):
Unref when not usable.

ChangeLog
ext/ffmpeg/gstffmpegdec.c

index 05604b3..f9c6585 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-10-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_chain):
+         Unref when not usable.
+
 2004-10-04  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
 
        * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps),
index 230bb27..950e546 100644 (file)
@@ -445,7 +445,7 @@ gst_ffmpegdec_chain (GstPad * pad, GstData * _data)
           return;
         }
 
-        if (have_data) {
+        if (len >= 0 && have_data) {
           GST_BUFFER_SIZE (outbuf) = have_data;
           if (GST_CLOCK_TIME_IS_VALID (expected_ts)) {
             GST_BUFFER_TIMESTAMP (outbuf) = expected_ts;
@@ -492,12 +492,16 @@ gst_ffmpegdec_chain (GstPad * pad, GstData * _data)
                   oclass->in_plugin->name));
          if (caps != NULL)
            gst_caps_free (caps);
+          gst_buffer_unref (outbuf);
           return;
         }
        gst_caps_free (caps);
       }
 
-      gst_pad_push (ffmpegdec->srcpad, GST_DATA (outbuf));
+      if (GST_PAD_IS_USABLE (ffmpegdec->srcpad))
+        gst_pad_push (ffmpegdec->srcpad, GST_DATA (outbuf));
+      else
+        gst_buffer_unref (outbuf);
     }
 
     size -= len;