*
* 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.
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef __GST_INPUT_SELECTOR_H__
GST_INPUT_SELECTOR_GET_LOCK(sel)))
#define GST_INPUT_SELECTOR_BROADCAST(sel) (g_cond_broadcast (GST_INPUT_SELECTOR_GET_COND(sel)))
+/**
+ * GstInputSelectorSyncMode:
+ * @GST_INPUT_SELECTOR_SYNC_MODE_ACTIVE_SEGMENT: Sync using the current active segment.
+ * @GST_INPUT_SELECTOR_SYNC_MODE_CLOCK: Sync using the clock.
+ *
+ * The different ways that input-selector can behave when in sync-streams mode.
+ */
+typedef enum {
+ GST_INPUT_SELECTOR_SYNC_MODE_ACTIVE_SEGMENT,
+ GST_INPUT_SELECTOR_SYNC_MODE_CLOCK
+} GstInputSelectorSyncMode;
+
struct _GstInputSelector {
GstElement element;
GstPad *srcpad;
GstPad *active_sinkpad;
- guint n_pads;
- guint padcount;
+ guint n_pads; /* number of pads */
+ guint padcount; /* sequence number for pads */
gboolean sync_streams;
+ GstInputSelectorSyncMode sync_mode;
+ gboolean cache_buffers;
+
+ gboolean have_group_id;
GMutex lock;
GCond cond;
- gboolean blocked;
+ gboolean eos;
+ gboolean eos_sent;
gboolean flushing;
};
struct _GstInputSelectorClass {
GstElementClass parent_class;
-
- gint64 (*block) (GstInputSelector *self);
};
-GType gst_input_selector_get_type (void);
+G_GNUC_INTERNAL GType gst_input_selector_get_type (void);
G_END_DECLS