diff -r 000000000000 -r 0e761a78d257 gst_plugins_base/gst/adder/gstadder.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gst_plugins_base/gst/adder/gstadder.h Thu Dec 17 08:53:32 2009 +0200 @@ -0,0 +1,105 @@ +/* GStreamer + * Copyright (C) 1999,2000 Erik Walthinsen + * 2000 Wim Taymans + * + * gstadder.h: Header for GstAdder element + * + * 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_ADDER_H__ +#define __GST_ADDER_H__ + +#include +#include + +G_BEGIN_DECLS + +#define GST_TYPE_ADDER (gst_adder_get_type()) +#define GST_ADDER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ADDER,GstAdder)) +#define GST_IS_ADDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ADDER)) +#define GST_ADDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_ADDER,GstAdderClass)) +#define GST_IS_ADDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_ADDER)) +#define GST_ADDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_ADDER,GstAdderClass)) + +typedef struct _GstAdder GstAdder; +typedef struct _GstAdderClass GstAdderClass; +typedef struct _GstAdderInputChannel GstAdderInputChannel; + +typedef enum { + GST_ADDER_FORMAT_UNSET, + GST_ADDER_FORMAT_INT, + GST_ADDER_FORMAT_FLOAT +} GstAdderFormat; + +typedef void (*GstAdderFunction) (gpointer out, gpointer in, guint size); + +/** + * GstAdder: + * + * The adder object structure. + */ +struct _GstAdder { + GstElement element; + + GstPad *srcpad; + GstCollectPads *collect; + /* pad counter, used for creating unique request pads */ + gint padcount; + + /* the next are valid for both int and float */ + GstAdderFormat format; + gint rate; + gint channels; + gint width; + gint endianness; + + /* the next are valid only for format == GST_ADDER_FORMAT_INT */ + gint depth; + gboolean is_signed; + + /* number of bytes per sample, actually width/8 * channels */ + gint bps; + + /* function to add samples */ + GstAdderFunction func; + + /* counters to keep track of timestamps */ + gint64 timestamp; + gint64 offset; + + /* sink event handling */ + GstPadEventFunction collect_event; + GstSegment segment; + gboolean segment_pending; + guint64 segment_position; + gdouble segment_rate; +}; + +struct _GstAdderClass { + GstElementClass parent_class; +}; +#ifdef __SYMBIAN32__ +IMPORT_C +#endif + + +GType gst_adder_get_type (void); + +G_END_DECLS + + +#endif /* __GST_ADDER_H__ */