some enhancements for capsnego
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Wed, 18 Sep 2002 10:57:56 +0000 (10:57 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Wed, 18 Sep 2002 10:57:56 +0000 (10:57 +0000)
Original commit message from CVS:
some enhancements for capsnego

sys/v4l2/gstv4l2src.c

index 3c1e6c9..d5ca710 100644 (file)
@@ -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;
+                                               }
                                        }
                                }
                        }