/* icecast/audiocast metadata extraction handling */
gboolean iradio_mode;
gboolean http_callbacks_pushed;
+ gboolean seekable;
gint icy_metaint;
GnomeVFSFileSize icy_count;
ARG_IRADIO_GENRE,
ARG_IRADIO_URL,
ARG_IRADIO_TITLE,
+ ARG_SEEKABLE,
};
GType gst_gnomevfssrc_get_type(void);
"Name of currently playing song",
NULL,
G_PARAM_READABLE));
+ g_object_class_install_property (gobject_class,
+ ARG_SEEKABLE,
+ g_param_spec_boolean ("seekable",
+ "seekable",
+ "TRUE is stream is seekable",
+ FALSE,
+ G_PARAM_READABLE));
gstelement_class->set_property = gst_gnomevfssrc_set_property;
gstelement_class->get_property = gst_gnomevfssrc_get_property;
gnomevfssrc->icy_metaint = 0;
+ gnomevfssrc->seekable = FALSE;
+
gnomevfssrc->iradio_mode = FALSE;
gnomevfssrc->http_callbacks_pushed = FALSE;
gnomevfssrc->icy_count = 0;
g_value_set_string (value, src->iradio_title);
g_mutex_unlock(src->audiocast_udpdata_mutex);
break;
+ case ARG_SEEKABLE:
+ g_value_set_boolean (value, src->seekable);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
src->in_first_get = TRUE;
+ if(gnome_vfs_seek(src->handle, GNOME_VFS_SEEK_CURRENT, 0)
+ == GNOME_VFS_OK){
+ src->seekable = TRUE;
+ }else{
+ src->seekable = FALSE;
+ }
+
GST_FLAG_SET(src, GST_GNOMEVFSSRC_OPEN);
return TRUE;