src->seek_happened = TRUE;
src->need_flush = GST_EVENT_SEEK_FLAGS(event) & GST_SEEK_FLAG_FLUSH;
break;
+ case GST_EVENT_SIZE:
+ if (GST_EVENT_SIZE_FORMAT (event) != GST_FORMAT_BYTES) {
+ return FALSE;
+ }
+ src->block_size = GST_EVENT_SIZE_VALUE (event);
+ g_object_notify (G_OBJECT (src), "blocksize");
+ break;
case GST_EVENT_FLUSH:
src->need_flush = TRUE;
break;
}
+GstEvent*
+gst_event_new_size (GstFormat format, gint64 value)
+{
+ GstEvent *event;
+
+ event = gst_event_new (GST_EVENT_SIZE);
+ GST_EVENT_SIZE_FORMAT (event) = format;
+ GST_EVENT_SIZE_VALUE (event) = value;
+
+ return event;
+}
+
GST_EVENT_QOS,
GST_EVENT_SEEK,
GST_EVENT_FILLER,
+ GST_EVENT_SIZE,
} GstEventType;
extern GType _gst_event_type;
#define GST_EVENT_DISCONT_OFFSET(event,i) (GST_EVENT(event)->event_data.discont.offsets[i])
#define GST_EVENT_DISCONT_OFFSET_LEN(event) (GST_EVENT(event)->event_data.discont.noffsets)
+#define GST_EVENT_SIZE_FORMAT(event) (GST_EVENT(event)->event_data.size.format)
+#define GST_EVENT_SIZE_VALUE(event) (GST_EVENT(event)->event_data.size.value)
+
struct _GstEvent {
GstData data;
gint noffsets;
gboolean new_media;
} discont;
+ struct {
+ GstFormat format;
+ gint64 value;
+ } size;
} event_data;
};
/* seek event */
GstEvent* gst_event_new_seek (GstSeekType type, gint64 offset);
+/* size events */
+GstEvent* gst_event_new_size (GstFormat format, gint64 value);
+
/* discontinous event */
GstEvent* gst_event_new_discontinuous (gboolean new_media,
GstFormat format1, ...);
src->seek_happened = TRUE;
src->need_flush = GST_EVENT_SEEK_FLAGS(event) & GST_SEEK_FLAG_FLUSH;
break;
+ case GST_EVENT_SIZE:
+ if (GST_EVENT_SIZE_FORMAT (event) != GST_FORMAT_BYTES) {
+ return FALSE;
+ }
+ src->block_size = GST_EVENT_SIZE_VALUE (event);
+ g_object_notify (G_OBJECT (src), "blocksize");
+ break;
case GST_EVENT_FLUSH:
src->need_flush = TRUE;
break;