1/* GStreamer
2 * Copyright (C) 1999,2000 Erik Walthinsen <[email protected]>
3 * 2000 Wim Taymans <[email protected]>
4 *
5 * gstpipeline.h: Header for GstPipeline element
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
16 *
17 * You should have received a copy of the GNU Library General Public
18 * License along with this library; if not, write to the
19 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
20 * Boston, MA 02110-1301, USA.
21 */
22
23
24#ifndef __GST_PIPELINE_H__
25#define __GST_PIPELINE_H__
26
27#include <gst/gstbin.h>
28
29G_BEGIN_DECLS
30
31#define GST_TYPE_PIPELINE (gst_pipeline_get_type ())
32#define GST_PIPELINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PIPELINE, GstPipeline))
33#define GST_IS_PIPELINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PIPELINE))
34#define GST_PIPELINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PIPELINE, GstPipelineClass))
35#define GST_IS_PIPELINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PIPELINE))
36#define GST_PIPELINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_PIPELINE, GstPipelineClass))
37#define GST_PIPELINE_CAST(obj) ((GstPipeline*)(obj))
38
39typedef struct _GstPipeline GstPipeline;
40typedef struct _GstPipelineClass GstPipelineClass;
41typedef struct _GstPipelinePrivate GstPipelinePrivate;
42
43/**
44 * GstPipelineFlags:
45 * @GST_PIPELINE_FLAG_FIXED_CLOCK: this pipeline works with a fixed clock
46 * @GST_PIPELINE_FLAG_LAST: offset to define more flags
47 *
48 * Pipeline flags
49 */
50typedef enum {
51 GST_PIPELINE_FLAG_FIXED_CLOCK = (GST_BIN_FLAG_LAST << 0),
52 /* padding */
53 GST_PIPELINE_FLAG_LAST = (GST_BIN_FLAG_LAST << 4)
54} GstPipelineFlags;
55
56/**
57 * GstPipeline:
58 * @fixed_clock: The fixed clock of the pipeline, used when
59 * GST_PIPELINE_FLAG_FIXED_CLOCK is set.
60 * @stream_time: The stream time of the pipeline. A better name for this
61 * property would be the running_time, the total time spent in the
62 * PLAYING state without being flushed. (deprecated, use the start_time
63 * on GstElement).
64 * @delay: Extra delay added to base_time to compensate for computing delays
65 * when setting elements to PLAYING.
66 *
67 * The #GstPipeline structure.
68 */
69struct _GstPipeline {
70 GstBin bin;
71
72 /*< public >*/ /* with LOCK */
73 GstClock *fixed_clock;
74
75 GstClockTime stream_time;
76 GstClockTime delay;
77
78 /*< private >*/
79 GstPipelinePrivate *priv;
80
81 gpointer _gst_reserved[GST_PADDING];
82};
83
84struct _GstPipelineClass {
85 GstBinClass parent_class;
86
87 /*< private >*/
88 gpointer _gst_reserved[GST_PADDING];
89};
90
91GST_API
92GType gst_pipeline_get_type (void);
93
94GST_API
95GstElement* gst_pipeline_new (const gchar *name) G_GNUC_MALLOC;
96
97GST_API
98GstBus* gst_pipeline_get_bus (GstPipeline *pipeline);
99
100GST_API
101void gst_pipeline_use_clock (GstPipeline *pipeline, GstClock *clock);
102
103GST_API
104gboolean gst_pipeline_set_clock (GstPipeline *pipeline, GstClock *clock);
105
106GST_API
107GstClock* gst_pipeline_get_clock (GstPipeline *pipeline);
108
109GST_API
110GstClock* gst_pipeline_get_pipeline_clock (GstPipeline *pipeline);
111
112GST_API
113void gst_pipeline_auto_clock (GstPipeline *pipeline);
114
115GST_API
116void gst_pipeline_set_delay (GstPipeline *pipeline, GstClockTime delay);
117
118GST_API
119GstClockTime gst_pipeline_get_delay (GstPipeline *pipeline);
120
121GST_API
122void gst_pipeline_set_latency (GstPipeline *pipeline, GstClockTime latency);
123
124GST_API
125GstClockTime gst_pipeline_get_latency (GstPipeline *pipeline);
126
127GST_API
128void gst_pipeline_set_auto_flush_bus (GstPipeline *pipeline, gboolean auto_flush);
129
130GST_API
131gboolean gst_pipeline_get_auto_flush_bus (GstPipeline *pipeline);
132
133#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
134G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstPipeline, gst_object_unref)
135#endif
136
137G_END_DECLS
138
139#endif /* __GST_PIPELINE_H__ */
140
141