diff --git a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp index d5a77b4039..c4d33e52ce 100644 --- a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp +++ b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp @@ -454,12 +454,13 @@ gst_dshowaudiosrc_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec) GstDshowAudioSrc *src = GST_DSHOWAUDIOSRC (asrc); GstCaps *current_caps = gst_pad_get_current_caps (GST_BASE_SRC_PAD (asrc)); - if (gst_caps_is_equal (spec->caps, current_caps)) { + if (current_caps) { + if (gst_caps_is_equal (spec->caps, current_caps)) { + gst_caps_unref (current_caps); + return TRUE; + } gst_caps_unref (current_caps); - return TRUE; } - gst_caps_unref (current_caps); - /* In 1.0, prepare() seems to be called in the PLAYING state. Most of the time you can't do much on a running graph. */ diff --git a/sys/dshowsrcwrapper/gstdshowvideosrc.cpp b/sys/dshowsrcwrapper/gstdshowvideosrc.cpp index c254f0c805..441dff90e1 100644 --- a/sys/dshowsrcwrapper/gstdshowvideosrc.cpp +++ b/sys/dshowsrcwrapper/gstdshowvideosrc.cpp @@ -578,11 +578,13 @@ gst_dshowvideosrc_set_caps (GstBaseSrc * bsrc, GstCaps * caps) GstStructure *s = gst_caps_get_structure (caps, 0); GstCaps *current_caps = gst_pad_get_current_caps (GST_BASE_SRC_PAD (bsrc)); - if (gst_caps_is_equal (caps, current_caps)) { + if (current_caps) { + if (gst_caps_is_equal (caps, current_caps)) { + gst_caps_unref (current_caps); + return TRUE; + } gst_caps_unref (current_caps); - return TRUE; } - gst_caps_unref (current_caps); /* Same remark as in gstdshowaudiosrc. */ gboolean was_running = src->is_running;