diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2016-02-23 18:19:18 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-02-23 18:19:18 +0200 |
commit | 20586e9f2d48e8bac3178172eec184b80cfca91e (patch) | |
tree | 97d5c274b9df34f5862443db8bbe0f6495464fa0 | |
parent | 4930a1f46115096a23937101787b3e5e667c81d0 (diff) | |
download | gst-libav-20586e9f2d48e8bac3178172eec184b80cfca91e.tar.gz |
avdeinterlace: Don't assume that get_current_caps() returns non-NULL caps after has_current_caps()
Remove calls to gst_pad_has_current_caps() which then go on to call
gst_pad_get_current_caps() as the caps can go to NULL in between. Instead just
use gst_pad_get_current_caps() and check for NULL.
https://bugzilla.gnome.org/show_bug.cgi?id=759539
-rw-r--r-- | ext/libav/gstavdeinterlace.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/ext/libav/gstavdeinterlace.c b/ext/libav/gstavdeinterlace.c index 1ffcb07..e3cfa8d 100644 --- a/ext/libav/gstavdeinterlace.c +++ b/ext/libav/gstavdeinterlace.c @@ -404,16 +404,15 @@ gst_ffmpegdeinterlace_chain (GstPad * pad, GstObject * parent, GST_OBJECT_LOCK (deinterlace); if (deinterlace->reconfigure) { + GstCaps *caps; + if ((gint) deinterlace->new_mode != -1) deinterlace->mode = deinterlace->new_mode; deinterlace->new_mode = -1; deinterlace->reconfigure = FALSE; GST_OBJECT_UNLOCK (deinterlace); - if (gst_pad_has_current_caps (deinterlace->srcpad)) { - GstCaps *caps; - - caps = gst_pad_get_current_caps (deinterlace->sinkpad); + if ((caps = gst_pad_get_current_caps (deinterlace->srcpad))) { gst_ffmpegdeinterlace_sink_setcaps (deinterlace->sinkpad, caps); gst_caps_unref (caps); } |