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:
{
if (G_UNLIKELY (res < 0 || res != offset))
goto seek_failed;
- segment->last_stop = segment->start;
+ segment->position = segment->start;
segment->time = segment->start;
return TRUE;
/*** 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);