Merge branch 'master' into 0.11
[platform/upstream/gst-plugins-good.git] / gst / level / gstlevel.h
index 50794b3..ae9ba3a 100644 (file)
@@ -26,7 +26,7 @@
 
 #include <gst/gst.h>
 #include <gst/base/gstbasetransform.h>
-
+#include <gst/audio/audio.h>
 
 G_BEGIN_DECLS
 
@@ -36,31 +36,37 @@ G_BEGIN_DECLS
 #define GST_LEVEL(obj) \
   (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_LEVEL,GstLevel))
 #define GST_LEVEL_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_ULAW,GstLevel))
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_LEVEL,GstLevelClass))
+#define GST_LEVEL_GET_CLASS(obj) \
+  (G_TYPE_INSTANCE_GET_CLASS((obj),GST_TYPE_LEVEL,GstLevelClass))
 #define GST_IS_LEVEL(obj) \
   (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_LEVEL))
-#define GST_IS_LEVEL_CLASS(obj) \
+#define GST_IS_LEVEL_CLASS(klass) \
   (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_LEVEL))
 
 
 typedef struct _GstLevel GstLevel;
 typedef struct _GstLevelClass GstLevelClass;
 
-
+/**
+ * GstLevel:
+ *
+ * Opaque data structure.
+ */
 struct _GstLevel {
   GstBaseTransform element;
 
   gboolean message;             /* whether or not to post messages */
-  gdouble interval;             /* how many seconds between emits */
+  guint64 interval;             /* how many seconds between emits */
 
-  gint rate;                    /* caps variables */
-  gint width;
-  gint channels;
+  GstAudioInfo info;
 
   gdouble decay_peak_ttl;       /* time to live for peak in seconds */
   gdouble decay_peak_falloff;   /* falloff in dB/sec */
   gint num_frames;              /* frame count (1 sample per channel)
                                  * since last emit */
+  gint interval_frames;         /* after how many frame to sent a message */
+  GstClockTime message_ts;      /* starttime for next message */
 
   /* per-channel arrays for intermediate values */
   gdouble *CS;                  /* normalized Cumulative Square */
@@ -71,6 +77,8 @@ struct _GstLevel {
   gdouble *MS;                  /* normalized Mean Square of buffer */
   gdouble *RMS_dB;              /* RMS in dB to emit */
   GstClockTime *decay_peak_age; /* age of last peak */
+
+  void (*process)(gpointer, guint, guint, gdouble*, gdouble*);
 };
 
 struct _GstLevelClass {