gst: Update versioning
[platform/upstream/gst-plugins-good.git] / gst / wavparse / gstwavparse.h
index fbe9af8..82838e4 100644 (file)
@@ -1,5 +1,6 @@
 /* GStreamer
  * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2006> Nokia Corporation, Stefan Kost <stefan.kost@nokia.com>.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
 #include <gst/gst.h>
 #include "gst/riff/riff-ids.h"
 #include "gst/riff/riff-read.h"
+#include <gst/base/gstadapter.h>
 
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
+G_BEGIN_DECLS
 
 #define GST_TYPE_WAVPARSE \
   (gst_wavparse_get_type())
 #define GST_WAVPARSE(obj) \
   (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_WAVPARSE,GstWavParse))
 #define GST_WAVPARSE_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_WAVPARSE,GstWavParse))
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_WAVPARSE,GstWavParseClass))
 #define GST_IS_WAVPARSE(obj) \
   (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_WAVPARSE))
-#define GST_IS_WAVPARSE_CLASS(obj) \
+#define GST_IS_WAVPARSE_CLASS(klass) \
   (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_WAVPARSE))
 
 typedef enum {
   GST_WAVPARSE_START,
   GST_WAVPARSE_HEADER,
-  GST_WAVPARSE_DATA,
+  GST_WAVPARSE_DATA
 } GstWavParseState;
 
 typedef struct _GstWavParse GstWavParse;
 typedef struct _GstWavParseClass GstWavParseClass;
 
+/**
+ * GstWavParse:
+ *
+ * Opaque data structure.
+ */
 struct _GstWavParse {
   GstElement parent;
 
   /* pads */
   GstPad *sinkpad,*srcpad;
 
+  /* for delayed source pad creation for when
+   * we have the first chunk of data and know
+   * the format for sure */
+  GstCaps     *caps;
+  GstTagList  *tags;
+  GstEvent    *start_segment;
+
   /* WAVE decoding state */
   GstWavParseState state;
-  guint64      offset;
+  gboolean abort_buffering;
 
   /* format of audio, see defines below */
   gint format;
 
   /* useful audio data */
   guint16 depth;
-  gint rate;
+  guint32 rate;
   guint16 channels;
   guint16 blockalign;
   guint16 width;
+  guint32 av_bps;
+  guint32 fact;
+
+  /* real bps used or 0 when no bitrate is known */
   guint32 bps;
+  gboolean vbr;
+
+  guint bytes_per_sample;
+  guint max_buf_size;
 
-  guint64 dataleft, datasize, datastart;
-  
-  gboolean seek_pending;
+  /* position in data part */
+  guint64      offset;
+  guint64      end_offset;
+  guint64      dataleft;
+  /* offset/length of data part */
+  guint64      datastart;
+  guint64      datasize;
+  /* duration in time */
+  guint64      duration;
+
+  /* pending seek */
   GstEvent *seek_event;
-  guint64 seek_offset;
+
+  /* For streaming */
+  GstAdapter *adapter;
+  gboolean got_fmt;
+  gboolean streaming;
+
+  /* configured segment, start/stop expressed in time or bytes */
+  GstSegment segment;
+
+  /* for late pad configuration */
+  gboolean first;
+  /* discont after seek */
+  gboolean discont;
+
+  gboolean ignore_length;
 };
 
 struct _GstWavParseClass {
@@ -85,9 +126,6 @@ struct _GstWavParseClass {
 
 GType gst_wavparse_get_type(void);
 
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
+G_END_DECLS
 
 #endif /* __GST_WAVPARSE_H__ */