static gboolean gst_fd_src_is_seekable (GstBaseSrc * bsrc);
static gboolean gst_fd_src_get_size (GstBaseSrc * src, guint64 * size);
static gboolean gst_fd_src_do_seek (GstBaseSrc * src, GstSegment * segment);
-static gboolean gst_fd_src_query (GstBaseSrc * src, GstQuery ** query);
+static gboolean gst_fd_src_query (GstBaseSrc * src, GstQuery * query);
static GstFlowReturn gst_fd_src_create (GstPushSrc * psrc, GstBuffer ** outbuf);
GST_INFO_OBJECT (src, "marking fd %d as seekable", src->fd);
src->seekable_fd = TRUE;
+
+ gst_base_src_set_dynamic_size (GST_BASE_SRC (src), TRUE);
}
return;
{
GST_INFO_OBJECT (src, "marking fd %d as NOT seekable", src->fd);
src->seekable_fd = FALSE;
+ gst_base_src_set_dynamic_size (GST_BASE_SRC (src), FALSE);
}
}
blocksize = GST_BASE_SRC (src)->blocksize;
/* create the buffer */
- buf = gst_buffer_new_and_alloc (blocksize);
+ buf = gst_buffer_new_allocate (NULL, blocksize, 0);
if (G_UNLIKELY (buf == NULL))
goto alloc_failed;
{
GST_DEBUG_OBJECT (psrc, "Read 0 bytes. EOS.");
gst_buffer_unref (buf);
- return GST_FLOW_UNEXPECTED;
+ return GST_FLOW_EOS;
}
read_error:
{
}
static gboolean
-gst_fd_src_query (GstBaseSrc * basesrc, GstQuery ** query)
+gst_fd_src_query (GstBaseSrc * basesrc, GstQuery * query)
{
gboolean ret = FALSE;
GstFdSrc *src = GST_FD_SRC (basesrc);
- switch (GST_QUERY_TYPE (*query)) {
+ switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_URI:
- gst_query_set_uri (*query, src->uri);
+ gst_query_set_uri (query, src->uri);
ret = TRUE;
break;
default:
/*** GSTURIHANDLER INTERFACE *************************************************/
static GstURIType
-gst_fd_src_uri_get_type (void)
+gst_fd_src_uri_get_type (GType type)
{
return GST_URI_SRC;
}
-static gchar **
-gst_fd_src_uri_get_protocols (void)
+static const gchar *const *
+gst_fd_src_uri_get_protocols (GType type)
{
- static gchar *protocols[] = { (char *) "fd", NULL };
+ static const gchar *protocols[] = { "fd", NULL };
return protocols;
}
-static const gchar *
+static gchar *
gst_fd_src_uri_get_uri (GstURIHandler * handler)
{
GstFdSrc *src = GST_FD_SRC (handler);
- return src->uri;
+ /* FIXME: make thread-safe */
+ return g_strdup (src->uri);
}
static gboolean
-gst_fd_src_uri_set_uri (GstURIHandler * handler, const gchar * uri)
+gst_fd_src_uri_set_uri (GstURIHandler * handler, const gchar * uri,
+ GError ** err)
{
gchar *protocol, *q;
GstFdSrc *src = GST_FD_SRC (handler);
gint fd;
- guint64 size = -1;
+ guint64 size = (guint64) - 1;
GST_INFO_OBJECT (src, "checking uri %s", uri);