queue2: Move struct declarations to a separate header
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 29 Oct 2009 10:21:36 +0000 (11:21 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 29 Oct 2009 10:21:36 +0000 (11:21 +0100)
plugins/elements/gstqueue2.c
plugins/elements/gstqueue2.h [new file with mode: 0644]

index 0dcc0598c26e3e0fe311fecdaad42c3a33e583cb..dd6e723d9f1dc91b5f5f4117cc0ef58313ef480a 100644 (file)
 #include "config.h"
 #endif
 
+#include "gstqueue2.h"
+
 #include <glib/gstdio.h>
 
-#include <gst/gst.h>
 #include <gst/gst-i18n-plugin.h>
 
 #ifdef G_OS_WIN32
@@ -128,23 +129,6 @@ enum
   PROP_TEMP_LOCATION
 };
 
-#define GST_TYPE_QUEUE \
-  (gst_queue_get_type())
-#define GST_QUEUE(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_QUEUE,GstQueue))
-#define GST_QUEUE_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_QUEUE,GstQueueClass))
-#define GST_IS_QUEUE(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_QUEUE))
-#define GST_IS_QUEUE_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_QUEUE))
-#define GST_QUEUE_CAST(obj) \
-  ((GstQueue *)(obj))
-
-typedef struct _GstQueue GstQueue;
-typedef struct _GstQueueSize GstQueueSize;
-typedef struct _GstQueueClass GstQueueClass;
-
 /* used to keep track of sizes (current and max) */
 struct _GstQueueSize
 {
@@ -161,77 +145,6 @@ struct _GstQueueSize
   l.rate_time = 0;                                      \
 } G_STMT_END
 
-struct _GstQueue
-{
-  GstElement element;
-
-  /*< private > */
-  GstPad *sinkpad;
-  GstPad *srcpad;
-
-  /* segments to keep track of timestamps */
-  GstSegment sink_segment;
-  GstSegment src_segment;
-
-  /* flowreturn when srcpad is paused */
-  GstFlowReturn srcresult;
-  gboolean is_eos;
-  gboolean unexpected;
-
-  /* the queue of data we're keeping our hands on */
-  GQueue *queue;
-
-  GstQueueSize cur_level;       /* currently in the queue */
-  GstQueueSize max_level;       /* max. amount of data allowed in the queue */
-  gboolean use_buffering;
-  gboolean use_rate_estimate;
-  GstClockTime buffering_interval;
-  gint low_percent;             /* low/high watermarks for buffering */
-  gint high_percent;
-
-  /* current buffering state */
-  gboolean is_buffering;
-  guint buffering_iteration;
-
-  /* for measuring input/output rates */
-  GTimer *in_timer;
-  gboolean in_timer_started;
-  gdouble last_in_elapsed;
-  guint64 bytes_in;
-  gdouble byte_in_rate;
-
-  GTimer *out_timer;
-  gboolean out_timer_started;
-  gdouble last_out_elapsed;
-  guint64 bytes_out;
-  gdouble byte_out_rate;
-
-  GMutex *qlock;                /* lock for queue (vs object lock) */
-  gboolean waiting_add;
-  GCond *item_add;              /* signals buffers now available for reading */
-  gboolean waiting_del;
-  GCond *item_del;              /* signals space now available for writing */
-
-  /* temp location stuff */
-  gchar *temp_template;
-  gboolean temp_location_set;
-  gchar *temp_location;
-  FILE *temp_file;
-  guint64 writing_pos;
-  guint64 reading_pos;
-  guint64 max_reading_pos;
-  /* we need this to send the first new segment event of the stream
-   * because we can't save it on the file */
-  gboolean segment_event_received;
-  GstEvent *starting_segment;
-
-};
-
-struct _GstQueueClass
-{
-  GstElementClass parent_class;
-};
-
 #define STATUS(queue, pad, msg) \
   GST_CAT_LOG_OBJECT (queue_dataflow, queue, \
                       "(%s:%s) " msg ": %u of %u buffers, %u of %u " \
diff --git a/plugins/elements/gstqueue2.h b/plugins/elements/gstqueue2.h
new file mode 100644 (file)
index 0000000..a541f24
--- /dev/null
@@ -0,0 +1,121 @@
+/* GStreamer
+ * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
+ *                    2003 Colin Walters <cwalters@gnome.org>
+ *                    2000,2005,2007 Wim Taymans <wim.taymans@gmail.com>
+ *                    2007 Thiago Sousa Santos <thiagoss@lcc.ufcg.edu.br>
+ *
+ * gstqueue2.h:
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * 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.
+ */
+#ifndef __GST_QUEUE2_H__
+#define __GST_QUEUE2_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_QUEUE \
+  (gst_queue_get_type())
+#define GST_QUEUE(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_QUEUE,GstQueue))
+#define GST_QUEUE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_QUEUE,GstQueueClass))
+#define GST_IS_QUEUE(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_QUEUE))
+#define GST_IS_QUEUE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_QUEUE))
+#define GST_QUEUE_CAST(obj) \
+  ((GstQueue *)(obj))
+
+typedef struct _GstQueue GstQueue;
+typedef struct _GstQueueSize GstQueueSize;
+typedef struct _GstQueueClass GstQueueClass;
+
+struct _GstQueue
+{
+  GstElement element;
+
+  /*< private > */
+  GstPad *sinkpad;
+  GstPad *srcpad;
+
+  /* segments to keep track of timestamps */
+  GstSegment sink_segment;
+  GstSegment src_segment;
+
+  /* flowreturn when srcpad is paused */
+  GstFlowReturn srcresult;
+  gboolean is_eos;
+  gboolean unexpected;
+
+  /* the queue of data we're keeping our hands on */
+  GQueue *queue;
+
+  GstQueueSize cur_level;       /* currently in the queue */
+  GstQueueSize max_level;       /* max. amount of data allowed in the queue */
+  gboolean use_buffering;
+  gboolean use_rate_estimate;
+  GstClockTime buffering_interval;
+  gint low_percent;             /* low/high watermarks for buffering */
+  gint high_percent;
+
+  /* current buffering state */
+  gboolean is_buffering;
+  guint buffering_iteration;
+
+  /* for measuring input/output rates */
+  GTimer *in_timer;
+  gboolean in_timer_started;
+  gdouble last_in_elapsed;
+  guint64 bytes_in;
+  gdouble byte_in_rate;
+
+  GTimer *out_timer;
+  gboolean out_timer_started;
+  gdouble last_out_elapsed;
+  guint64 bytes_out;
+  gdouble byte_out_rate;
+
+  GMutex *qlock;                /* lock for queue (vs object lock) */
+  gboolean waiting_add;
+  GCond *item_add;              /* signals buffers now available for reading */
+  gboolean waiting_del;
+  GCond *item_del;              /* signals space now available for writing */
+
+  /* temp location stuff */
+  gchar *temp_template;
+  gboolean temp_location_set;
+  gchar *temp_location;
+  FILE *temp_file;
+  guint64 writing_pos;
+  guint64 reading_pos;
+  guint64 max_reading_pos;
+  /* we need this to send the first new segment event of the stream
+   * because we can't save it on the file */
+  gboolean segment_event_received;
+  GstEvent *starting_segment;
+
+};
+
+struct _GstQueueClass
+{
+  GstElementClass parent_class;
+};
+
+G_END_DECLS
+
+#endif /* __GST_QUEUE2_H__ */