* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
* 2000 Wim Taymans <wtay@chello.be>
*
- * gstfilesink.h:
+ * gstfilesink.h:
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
-#ifndef __GST_FILESINK_H__
-#define __GST_FILESINK_H__
+#ifndef __GST_FILE_SINK_H__
+#define __GST_FILE_SINK_H__
+
+#include <stdio.h>
#include <gst/gst.h>
+#include <gst/base/gstbasesink.h>
G_BEGIN_DECLS
-#define GST_TYPE_FILESINK \
- (gst_filesink_get_type())
-#define GST_FILESINK(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_FILESINK,GstFileSink))
-#define GST_FILESINK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_FILESINK,GstFileSinkClass))
-#define GST_IS_FILESINK(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FILESINK))
-#define GST_IS_FILESINK_CLASS(obj) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FILESINK))
+
+#define GST_TYPE_FILE_SINK \
+ (gst_file_sink_get_type())
+#define GST_FILE_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_FILE_SINK,GstFileSink))
+#define GST_FILE_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_FILE_SINK,GstFileSinkClass))
+#define GST_IS_FILE_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FILE_SINK))
+#define GST_IS_FILE_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FILE_SINK))
+#define GST_FILE_SINK_CAST(obj) ((GstFileSink *)(obj))
+
typedef struct _GstFileSink GstFileSink;
typedef struct _GstFileSinkClass GstFileSinkClass;
-typedef enum
-{
- GST_FILESINK_OPEN = GST_ELEMENT_FLAG_LAST,
-
- GST_FILESINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2
-} GstFileSinkFlags;
+/**
+ * GstFileSinkBufferMode:
+ * @GST_FILE_SINK_BUFFER_MODE_DEFAULT: Default buffering
+ * @GST_FILE_SINK_BUFFER_MODE_FULL: Fully buffered
+ * @GST_FILE_SINK_BUFFER_MODE_LINE: Line buffered
+ * @GST_FILE_SINK_BUFFER_MODE_UNBUFFERED: Unbuffered
+ *
+ * File read buffering mode.
+ */
+typedef enum {
+ GST_FILE_SINK_BUFFER_MODE_DEFAULT = -1,
+ GST_FILE_SINK_BUFFER_MODE_FULL = _IOFBF,
+ GST_FILE_SINK_BUFFER_MODE_LINE = _IOLBF,
+ GST_FILE_SINK_BUFFER_MODE_UNBUFFERED = _IONBF
+} GstFileSinkBufferMode;
-struct _GstFileSink
-{
- GstElement element;
+/**
+ * GstFileSink:
+ *
+ * Opaque #GstFileSink structure.
+ */
+struct _GstFileSink {
+ GstBaseSink parent;
+ /*< private >*/
gchar *filename;
gchar *uri;
FILE *file;
- guint64 data_written;
-};
+ gboolean seekable;
+ guint64 current_pos;
+
+ gint buffer_mode;
+ guint buffer_size;
-struct _GstFileSinkClass
-{
- GstElementClass parent_class;
+ GstBufferList *buffer;
+ guint current_buffer_size;
- /* signals */
- void (*handoff) (GstElement * element, GstPad * pad);
+ gboolean append;
};
-GType gst_filesink_get_type (void);
+struct _GstFileSinkClass {
+ GstBaseSinkClass parent_class;
+};
+
+G_GNUC_INTERNAL GType gst_file_sink_get_type (void);
G_END_DECLS
-#endif /* __GST_FILESINK_H__ */
+
+#endif /* __GST_FILE_SINK_H__ */