/* ex: set tabstop=2 shiftwidth=2 expandtab: */
/*
 * Copyright (C) 2010 Marc Leeman <marc.leeman@gmail.com>
 *
 */

#ifndef __GST_RECOMBINE_H__
#define __GST_RECOMBINE_H__

#include <gst/gst.h>

G_BEGIN_DECLS

/* standard header definitions */
#define GST_TYPE_RECOMBINE \
  (gst_bufresize_get_type())
#define GST_RECOMBINE(obj) \
  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RECOMBINE,GstRecombine))
#define GST_RECOMBINE_CLASS(klass) \
  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RECOMBINE,GstRecombineClass))
#define GST_IS_RECOMBINE(obj) \
  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RECOMBINE))
#define GST_IS_RECOMBINE_CLASS(klass) \
  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RECOMBINE))

typedef struct _GstRecombine      GstRecombine;
typedef struct _GstRecombineClass GstRecombineClass;

struct _GstRecombine
{
  GstElement element;

  /* store pads locally */
  GstPad *sinkpad, *srcpad;

  GstBufferList *combinebuf;
  GstBufferListIterator *it;
  guint listsize;

  guint size;
};

struct _GstRecombineClass 
{
  GstElementClass parent_class;
};

GType gst_bufresize_get_type (void);

G_END_DECLS

#endif /* __GST_RECOMBINE_H__ */
