"Fossies" - the Fresh Open Source Software Archive

Member "gstreamer-1.16.1/plugins/elements/gstinputselector.h" (19 Apr 2019, 3239 Bytes) of package /linux/misc/gstreamer-1.16.1.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "gstinputselector.h" see the Fossies "Dox" file reference documentation.

    1 /* GStreamer
    2  * Copyright (C) 2003 Julien Moutte <julien@moutte.net>
    3  * Copyright (C) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
    4  * Copyright (C) 2008 Nokia Corporation. (contact <stefan.kost@nokia.com>)
    5  *
    6  * This library is free software; you can redistribute it and/or
    7  * modify it under the terms of the GNU Library General Public
    8  * License as published by the Free Software Foundation; either
    9  * version 2 of the License, or (at your option) any later version.
   10  *
   11  * This library is distributed in the hope that it will be useful,
   12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
   13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   14  * Library General Public License for more details.
   15  *
   16  * You should have received a copy of the GNU Library General Public
   17  * License along with this library; if not, write to the
   18  * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
   19  * Boston, MA 02110-1301, USA.
   20  */
   21  
   22 #ifndef __GST_INPUT_SELECTOR_H__
   23 #define __GST_INPUT_SELECTOR_H__
   24 
   25 #include <gst/gst.h>
   26 
   27 G_BEGIN_DECLS
   28 
   29 #define GST_TYPE_INPUT_SELECTOR \
   30   (gst_input_selector_get_type())
   31 #define GST_INPUT_SELECTOR(obj) \
   32   (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_INPUT_SELECTOR, GstInputSelector))
   33 #define GST_INPUT_SELECTOR_CLASS(klass) \
   34   (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_INPUT_SELECTOR, GstInputSelectorClass))
   35 #define GST_IS_INPUT_SELECTOR(obj) \
   36   (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_INPUT_SELECTOR))
   37 #define GST_IS_INPUT_SELECTOR_CLASS(klass) \
   38   (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_INPUT_SELECTOR))
   39 
   40 typedef struct _GstInputSelector GstInputSelector;
   41 typedef struct _GstInputSelectorClass GstInputSelectorClass;
   42 
   43 #define GST_INPUT_SELECTOR_GET_LOCK(sel) (&((GstInputSelector*)(sel))->lock)
   44 #define GST_INPUT_SELECTOR_GET_COND(sel) (&((GstInputSelector*)(sel))->cond)
   45 #define GST_INPUT_SELECTOR_LOCK(sel) (g_mutex_lock (GST_INPUT_SELECTOR_GET_LOCK(sel)))
   46 #define GST_INPUT_SELECTOR_UNLOCK(sel) (g_mutex_unlock (GST_INPUT_SELECTOR_GET_LOCK(sel)))
   47 #define GST_INPUT_SELECTOR_WAIT(sel) (g_cond_wait (GST_INPUT_SELECTOR_GET_COND(sel), \
   48             GST_INPUT_SELECTOR_GET_LOCK(sel)))
   49 #define GST_INPUT_SELECTOR_BROADCAST(sel) (g_cond_broadcast (GST_INPUT_SELECTOR_GET_COND(sel)))
   50 
   51 /**
   52  * GstInputSelectorSyncMode:
   53  * @GST_INPUT_SELECTOR_SYNC_MODE_ACTIVE_SEGMENT: Sync using the current active segment.
   54  * @GST_INPUT_SELECTOR_SYNC_MODE_CLOCK: Sync using the clock.
   55  *
   56  * The different ways that input-selector can behave when in sync-streams mode.
   57  */
   58 typedef enum {
   59   GST_INPUT_SELECTOR_SYNC_MODE_ACTIVE_SEGMENT,
   60   GST_INPUT_SELECTOR_SYNC_MODE_CLOCK
   61 } GstInputSelectorSyncMode;
   62 
   63 struct _GstInputSelector {
   64   GstElement element;
   65 
   66   GstPad *srcpad;
   67 
   68   GstPad *active_sinkpad;
   69   guint n_pads;           /* number of pads */
   70   guint padcount;         /* sequence number for pads */
   71   gboolean sync_streams;
   72   GstInputSelectorSyncMode sync_mode;
   73   gboolean cache_buffers;
   74 
   75   gboolean have_group_id;
   76 
   77   GMutex lock;
   78   GCond cond;
   79   gboolean eos;
   80   gboolean eos_sent;
   81   gboolean flushing;
   82 };
   83 
   84 struct _GstInputSelectorClass {
   85   GstElementClass parent_class;
   86 };
   87 
   88 G_GNUC_INTERNAL GType gst_input_selector_get_type (void);
   89 
   90 G_END_DECLS
   91 
   92 #endif /* __GST_INPUT_SELECTOR_H__ */