diff options
author | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2002-09-18 10:57:56 +0000 |
---|---|---|
committer | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2002-09-18 10:57:56 +0000 |
commit | c75c3a354260601d99725d030dd5fef5ae6e8ffd (patch) | |
tree | 953b510e7aa90e2072f0cb5ae642ff510cd8d0de /sys/v4l2 | |
parent | 730688d30458573b03963c13a9f4fcc8721272d6 (diff) |
some enhancements for capsnego
Original commit message from CVS:
some enhancements for capsnego
Diffstat (limited to 'sys/v4l2')
-rw-r--r-- | sys/v4l2/gstv4l2src.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c index 3c1e6c9f..d5ca7106 100644 --- a/sys/v4l2/gstv4l2src.c +++ b/sys/v4l2/gstv4l2src.c @@ -563,8 +563,14 @@ gst_v4l2src_srcconnect (GstPad *pad, /* clean up if we still haven't cleaned up our previous * capture session */ if (GST_V4L2_IS_ACTIVE(GST_V4L2ELEMENT(v4l2src))) + { if (!gst_v4l2src_capture_deinit(v4l2src)) return GST_PAD_CONNECT_REFUSED; + } + else if (!GST_V4L2_IS_OPEN(GST_V4L2ELEMENT(v4l2src))) + { + return GST_PAD_CONNECT_DELAYED; + } /* build our own capslist */ if (v4l2src->palette) { @@ -610,10 +616,17 @@ gst_v4l2src_srcconnect (GstPad *pad, format->flags & V4L2_FMT_FLAG_COMPRESSED); GstCaps *onecaps; for (;lastcaps != NULL; lastcaps = lastcaps->next) { + GstPadConnectReturn ret_val; onecaps = gst_caps_copy_1(lastcaps); - if (gst_pad_try_set_caps(v4l2src->srcpad, onecaps) > 0) + if ((ret_val = gst_pad_try_set_caps(v4l2src->srcpad, onecaps)) > 0) + { if (gst_v4l2src_capture_init(v4l2src)) - return GST_PAD_CONNECT_OK; + return GST_PAD_CONNECT_DONE; + } + else if (ret_val == GST_PAD_CONNECT_DELAYED) + { + return GST_PAD_CONNECT_DELAYED; + } } } } |