* 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 <config.h>
#include <gst/gst.h>
+#include <gst/base/gstbasesink.h>
G_BEGIN_DECLS
-GstElementDetails gst_filesink_details;
-
-
-#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;
+/**
+ * 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_FILESINK_OPEN = GST_ELEMENT_FLAG_LAST,
-
- GST_FILESINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
-} GstFileSinkFlags;
-
+ 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;
+
+/**
+ * GstFileSink:
+ *
+ * Opaque #GstFileSink structure.
+ */
struct _GstFileSink {
- GstElement element;
+ GstBaseSink parent;
+ /*< private >*/
gchar *filename;
+ gchar *uri;
FILE *file;
- gint filenum;
+ gboolean seekable;
+ guint64 current_pos;
+
+ gint buffer_mode;
+ guint buffer_size;
- guint64 data_written;
- gint maxfilesize;
+ GstBufferList *buffer;
+ guint current_buffer_size;
+
+ gboolean append;
};
struct _GstFileSinkClass {
- GstElementClass parent_class;
-
- /* signals */
- void (*handoff) (GstElement *element,GstPad *pad);
+ GstBaseSinkClass parent_class;
};
-GType gst_filesink_get_type(void);
+G_GNUC_INTERNAL GType gst_file_sink_get_type (void);
G_END_DECLS
-#endif /* __GST_FILESINK_H__ */
+#endif /* __GST_FILE_SINK_H__ */