summaryrefslogtreecommitdiffstats
path: root/gst-libs/gst/app/gstappsrc.h
diff options
context:
space:
mode:
Diffstat (limited to 'gst-libs/gst/app/gstappsrc.h')
-rw-r--r--gst-libs/gst/app/gstappsrc.h59
1 files changed, 40 insertions, 19 deletions
diff --git a/gst-libs/gst/app/gstappsrc.h b/gst-libs/gst/app/gstappsrc.h
index 4ca5cbc9..1ce73b4c 100644
--- a/gst-libs/gst/app/gstappsrc.h
+++ b/gst-libs/gst/app/gstappsrc.h
@@ -39,9 +39,27 @@ G_BEGIN_DECLS
typedef struct _GstAppSrc GstAppSrc;
typedef struct _GstAppSrcClass GstAppSrcClass;
+/**
+ * GstAppStreamType:
+ * @GST_APP_STREAM_TYPE_STREAM: No seeking is supported in the stream, such as a
+ * live stream.
+ * @GST_APP_STREAM_TYPE_SEEKABLE: The stream is seekable but seeking might not
+ * be very fast, such as data from a webserver.
+ * @GST_APP_STREAM_TYPE_RANDOM_ACCESS: The stream is seekable and seeking is fast,
+ * such as in a local file.
+ *
+ * The stream type.
+ */
+typedef enum
+{
+ GST_APP_STREAM_TYPE_STREAM,
+ GST_APP_STREAM_TYPE_SEEKABLE,
+ GST_APP_STREAM_TYPE_RANDOM_ACCESS
+} GstAppStreamType;
+
struct _GstAppSrc
{
- GstPushSrc pushsrc;
+ GstBaseSrc basesrc;
/*< private >*/
GCond *cond;
@@ -50,46 +68,49 @@ struct _GstAppSrc
GstCaps *caps;
gint64 size;
- gboolean seekable;
- guint max_buffers;
+ GstAppStreamType stream_type;
+ guint64 max_bytes;
+ GstFormat format;
gboolean flushing;
gboolean started;
gboolean is_eos;
+ guint64 queued_bytes;
+ GstAppStreamType current_type;
};
struct _GstAppSrcClass
{
- GstPushSrcClass pushsrc_class;
+ GstBaseSrcClass basesrc_class;
/* signals */
- void (*need_data) (GstAppSrc *src);
- void (*enough_data) (GstAppSrc *src);
- gboolean (*seek_data) (GstAppSrc *src, guint64 offset);
+ void (*need_data) (GstAppSrc *src, guint length);
+ void (*enough_data) (GstAppSrc *src);
+ gboolean (*seek_data) (GstAppSrc *src, guint64 offset);
/* actions */
- void (*push_buffer) (GstAppSrc *src, GstBuffer *buffer);
- void (*end_of_stream) (GstAppSrc *src);
+ GstFlowReturn (*push_buffer) (GstAppSrc *src, GstBuffer *buffer);
+ GstFlowReturn (*end_of_stream) (GstAppSrc *src);
};
GType gst_app_src_get_type(void);
GST_DEBUG_CATEGORY_EXTERN (app_src_debug);
-void gst_app_src_set_caps (GstAppSrc *appsrc, const GstCaps *caps);
-GstCaps* gst_app_src_get_caps (GstAppSrc *appsrc);
+void gst_app_src_set_caps (GstAppSrc *appsrc, const GstCaps *caps);
+GstCaps* gst_app_src_get_caps (GstAppSrc *appsrc);
-void gst_app_src_set_size (GstAppSrc *appsrc, gint64 size);
-gint64 gst_app_src_get_size (GstAppSrc *appsrc);
+void gst_app_src_set_size (GstAppSrc *appsrc, gint64 size);
+gint64 gst_app_src_get_size (GstAppSrc *appsrc);
-void gst_app_src_set_seekable (GstAppSrc *appsrc, gboolean seekable);
-gboolean gst_app_src_get_seekable (GstAppSrc *appsrc);
+void gst_app_src_set_stream_type (GstAppSrc *appsrc, GstAppStreamType type);
+GstAppStreamType gst_app_src_get_stream_type (GstAppSrc *appsrc);
-void gst_app_src_set_max_buffers (GstAppSrc *appsrc, guint max);
-guint gst_app_src_get_max_buffers (GstAppSrc *appsrc);
+void gst_app_src_set_max_bytes (GstAppSrc *appsrc, guint64 max);
+guint64 gst_app_src_get_max_bytes (GstAppSrc *appsrc);
-void gst_app_src_push_buffer (GstAppSrc *appsrc, GstBuffer *buffer);
-void gst_app_src_end_of_stream (GstAppSrc *appsrc);
+GstFlowReturn gst_app_src_push_buffer (GstAppSrc *appsrc, GstBuffer *buffer);
+GstFlowReturn gst_app_src_end_of_stream (GstAppSrc *appsrc);
G_END_DECLS