static GstFlowReturn gst_base_src_get_range (GstBaseSrc * src, guint64 offset,
guint length, GstBuffer ** buf);
static gboolean gst_base_src_seekable (GstBaseSrc * src);
+static gboolean gst_base_src_negotiate (GstBaseSrc * basesrc);
+ static gboolean gst_base_src_update_length (GstBaseSrc * src, guint64 offset,
+ guint * length);
static void
-gst_base_src_base_init (gpointer g_class)
-{
- GST_DEBUG_CATEGORY_INIT (gst_base_src_debug, "basesrc", 0, "basesrc element");
-}
-
-static void
gst_base_src_class_init (GstBaseSrcClass * klass)
{
GObjectClass *gobject_class;
format = src->segment.format;
stop = src->segment.stop;
/* get total file size */
-- size = (guint64) src->segment.duration;
++ size = src->segment.duration;
/* only operate if we are working with bytes */
if (format != GST_FORMAT_BYTES)
/* keep track of current position and update duration.
* segment is in bytes, we checked that above. */
GST_OBJECT_LOCK (src);
- if (src->segment.duration != size) {
- src->segment.duration = size;
- event = gst_event_new_segment (&src->segment);
- }
- gst_segment_set_duration (&src->segment, GST_FORMAT_BYTES, size);
- gst_segment_set_last_stop (&src->segment, GST_FORMAT_BYTES, offset);
++ src->segment.duration = size;
+ src->segment.position = offset;
GST_OBJECT_UNLOCK (src);
- /* If we updated the duration, we have to update the downstream
- * segments to update the stop position */
- if (event)
- gst_pad_push_event (src->srcpad, event);
-
return TRUE;
/* ERRORS */