X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=plugins%2Felements%2Fgstfdsrc.c;h=0ca9115b1126096d7ec969be54f68c14163b6aed;hb=35ea12eeea50030d798787a44d20f1363849fa8e;hp=9f297ff66f488513b6e3ffef497dee69f8952407;hpb=a0fded5c375344b8a1e1d445aa24c5f9607a2cd8;p=platform%2Fupstream%2Fgstreamer.git diff --git a/plugins/elements/gstfdsrc.c b/plugins/elements/gstfdsrc.c index 9f297ff..0ca9115 100644 --- a/plugins/elements/gstfdsrc.c +++ b/plugins/elements/gstfdsrc.c @@ -259,6 +259,8 @@ gst_fd_src_update_fd (GstFdSrc * src, guint64 size) 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; @@ -266,6 +268,7 @@ not_seekable: { 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); } } @@ -439,7 +442,7 @@ gst_fd_src_create (GstPushSrc * psrc, GstBuffer ** outbuf) 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; @@ -493,7 +496,7 @@ eos: { GST_DEBUG_OBJECT (psrc, "Read 0 bytes. EOS."); gst_buffer_unref (buf); - return GST_FLOW_UNEXPECTED; + return GST_FLOW_EOS; } read_error: { @@ -597,34 +600,36 @@ seek_failed: /*** 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);