summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-11-09 10:25:25 +0100
committerSebastian Dröge <sebastian@centricular.com>2014-12-17 09:49:51 +0100
commit1ed825d6e272eeddd3785fadc0dbae5710dcd247 (patch)
tree52b7fe0d230dbc3a42eb069ba31f669cbede4566
parentf6ab94cc2d0ae64447f96eb189909c932846e784 (diff)
downloadgstreamer-plugins-bad-1ed825d6e272eeddd3785fadc0dbae5710dcd247.tar.gz
avfvideosrc: Don't pretend to support reconfiguration
We will run into an assertion in set_caps() if we try to change caps while the source is already running. Don't try to find new caps in GstBaseSrc::negotiate() to prevent caps changes.
-rw-r--r--sys/applemedia/avfvideosrc.m13
1 files changed, 13 insertions, 0 deletions
diff --git a/sys/applemedia/avfvideosrc.m b/sys/applemedia/avfvideosrc.m
index 4ee8a26cb..b943c97e7 100644
--- a/sys/applemedia/avfvideosrc.m
+++ b/sys/applemedia/avfvideosrc.m
@@ -933,6 +933,7 @@ static gboolean gst_avf_video_src_unlock (GstBaseSrc * basesrc);
static gboolean gst_avf_video_src_unlock_stop (GstBaseSrc * basesrc);
static GstFlowReturn gst_avf_video_src_create (GstPushSrc * pushsrc,
GstBuffer ** buf);
+static gboolean gst_avf_video_src_negotiate (GstBaseSrc * basesrc);
static void
@@ -957,6 +958,7 @@ gst_avf_video_src_class_init (GstAVFVideoSrcClass * klass)
gstbasesrc_class->unlock = gst_avf_video_src_unlock;
gstbasesrc_class->unlock_stop = gst_avf_video_src_unlock_stop;
gstbasesrc_class->decide_allocation = gst_avf_video_src_decide_allocation;
+ gstbasesrc_class->negotiate = gst_avf_video_src_negotiate;
gstpushsrc_class->create = gst_avf_video_src_create;
@@ -1210,3 +1212,14 @@ gst_avf_video_src_create (GstPushSrc * pushsrc, GstBuffer ** buf)
return ret;
}
+
+static gboolean
+gst_avf_video_src_negotiate (GstBaseSrc * basesrc)
+{
+ /* FIXME: We don't support reconfiguration yet */
+ if (gst_pad_has_current_caps (GST_BASE_SRC_PAD (basesrc)))
+ return TRUE;
+
+ return GST_BASE_SRC_CLASS (parent_class)->negotiate (basesrc);
+}
+