rtspsrc: handle SEEKING queries.
authorAlessandro Decina <alessandro.d@gmail.com>
Tue, 4 May 2010 14:04:39 +0000 (16:04 +0200)
committerAlessandro Decina <alessandro.d@gmail.com>
Tue, 4 May 2010 14:05:13 +0000 (16:05 +0200)
gst/rtsp/gstrtspsrc.c

index 26617251cee24f77383a9d745b0824f4c370b6e8..5d9473b6f52f5e9bfd315f6e4b11b5c30f9b3fc2 100644 (file)
@@ -1884,6 +1884,21 @@ gst_rtspsrc_handle_src_query (GstPad * pad, GstQuery * query)
       }
       break;
     }
+    case GST_QUERY_SEEKING:
+    {
+      GstFormat format;
+
+      gst_query_parse_seeking (query, &format, NULL, NULL, NULL);
+      if (format == GST_FORMAT_TIME) {
+        gboolean seekable =
+            src->cur_protocols != GST_RTSP_LOWER_TRANS_UDP_MCAST;
+
+        gst_query_set_seeking (query, GST_FORMAT_TIME, seekable,
+            src->segment.start, src->segment.stop);
+        res = TRUE;
+      }
+      break;
+    }
     default:
     {
       GstPad *target = gst_ghost_pad_get_target (GST_GHOST_PAD_CAST (pad));
@@ -4592,6 +4607,9 @@ gst_rtspsrc_setup_streams (GstRTSPSrc * src)
     }
   }
 
+  /* store the transport protocol that was configured */
+  src->cur_protocols = protocols;
+
   gst_rtsp_ext_list_stream_select (src->extensions, url);
 
   /* if there is nothing to activate, error out */