1 | /* GStreamer |
2 | * Copyright (C) 1999,2000 Erik Walthinsen <[email protected]> |
3 | * 2000 Wim Taymans <[email protected]> |
4 | * 2005 Andy Wingo <[email protected]> |
5 | * |
6 | * gstghostpad.h: Proxy pads |
7 | * |
8 | * This library is free software; you can redistribute it and/or |
9 | * modify it under the terms of the GNU Library General Public |
10 | * License as published by the Free Software Foundation; either |
11 | * version 2 of the License, or (at your option) any later version. |
12 | * |
13 | * This library is distributed in the hope that it will be useful, |
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 | * Library General Public License for more details. |
17 | * |
18 | * You should have received a copy of the GNU Library General Public |
19 | * License along with this library; if not, write to the |
20 | * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, |
21 | * Boston, MA 02110-1301, USA. |
22 | */ |
23 | |
24 | |
25 | #ifndef __GST_GHOST_PAD_H__ |
26 | #define __GST_GHOST_PAD_H__ |
27 | |
28 | |
29 | #include <gst/gstpad.h> |
30 | |
31 | |
32 | G_BEGIN_DECLS |
33 | |
34 | #define GST_TYPE_PROXY_PAD (gst_proxy_pad_get_type ()) |
35 | #define GST_IS_PROXY_PAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PROXY_PAD)) |
36 | #define GST_IS_PROXY_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PROXY_PAD)) |
37 | #define GST_PROXY_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PROXY_PAD, GstProxyPad)) |
38 | #define GST_PROXY_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PROXY_PAD, GstProxyPadClass)) |
39 | |
40 | typedef struct _GstProxyPad GstProxyPad; |
41 | typedef struct _GstProxyPadPrivate GstProxyPadPrivate; |
42 | typedef struct _GstProxyPadClass GstProxyPadClass; |
43 | |
44 | struct _GstProxyPad |
45 | { |
46 | GstPad pad; |
47 | |
48 | /*< private >*/ |
49 | GstProxyPadPrivate *priv; |
50 | }; |
51 | |
52 | struct _GstProxyPadClass |
53 | { |
54 | GstPadClass parent_class; |
55 | |
56 | /*< private >*/ |
57 | gpointer _gst_reserved[1]; |
58 | }; |
59 | |
60 | GST_API |
61 | GType gst_proxy_pad_get_type (void); |
62 | |
63 | GST_API |
64 | GstProxyPad * gst_proxy_pad_get_internal (GstProxyPad *pad); |
65 | |
66 | |
67 | GST_API |
68 | GstIterator* gst_proxy_pad_iterate_internal_links_default (GstPad *pad, GstObject *parent) G_GNUC_MALLOC; |
69 | |
70 | GST_API |
71 | GstFlowReturn gst_proxy_pad_chain_default (GstPad *pad, GstObject *parent, |
72 | GstBuffer *buffer); |
73 | GST_API |
74 | GstFlowReturn gst_proxy_pad_chain_list_default (GstPad *pad, GstObject *parent, |
75 | GstBufferList *list); |
76 | GST_API |
77 | GstFlowReturn gst_proxy_pad_getrange_default (GstPad *pad, GstObject *parent, |
78 | guint64 offset, guint size, |
79 | GstBuffer **buffer); |
80 | |
81 | #define GST_TYPE_GHOST_PAD (gst_ghost_pad_get_type ()) |
82 | #define GST_IS_GHOST_PAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GHOST_PAD)) |
83 | #define GST_IS_GHOST_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GHOST_PAD)) |
84 | #define GST_GHOST_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GHOST_PAD, GstGhostPad)) |
85 | #define GST_GHOST_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GHOST_PAD, GstGhostPadClass)) |
86 | #define GST_GHOST_PAD_CAST(obj) ((GstGhostPad*)(obj)) |
87 | |
88 | /** |
89 | * GstGhostPad: |
90 | * |
91 | * Opaque #GstGhostPad structure. |
92 | */ |
93 | typedef struct _GstGhostPad GstGhostPad; |
94 | typedef struct _GstGhostPadPrivate GstGhostPadPrivate; |
95 | typedef struct _GstGhostPadClass GstGhostPadClass; |
96 | |
97 | struct _GstGhostPad |
98 | { |
99 | GstProxyPad pad; |
100 | |
101 | /*< private >*/ |
102 | GstGhostPadPrivate *priv; |
103 | }; |
104 | |
105 | struct _GstGhostPadClass |
106 | { |
107 | GstProxyPadClass parent_class; |
108 | |
109 | /*< private >*/ |
110 | gpointer _gst_reserved[GST_PADDING]; |
111 | }; |
112 | |
113 | |
114 | GST_API |
115 | GType gst_ghost_pad_get_type (void); |
116 | |
117 | GST_API |
118 | GstPad* gst_ghost_pad_new (const gchar *name, GstPad *target) G_GNUC_MALLOC; |
119 | |
120 | GST_API |
121 | GstPad* gst_ghost_pad_new_no_target (const gchar *name, GstPadDirection dir) G_GNUC_MALLOC; |
122 | |
123 | GST_API |
124 | GstPad* gst_ghost_pad_new_from_template (const gchar *name, GstPad * target, GstPadTemplate * templ) G_GNUC_MALLOC; |
125 | |
126 | GST_API |
127 | GstPad* gst_ghost_pad_new_no_target_from_template (const gchar *name, GstPadTemplate * templ) G_GNUC_MALLOC; |
128 | |
129 | GST_API |
130 | GstPad* gst_ghost_pad_get_target (GstGhostPad *gpad); |
131 | |
132 | GST_API |
133 | gboolean gst_ghost_pad_set_target (GstGhostPad *gpad, GstPad *newtarget); |
134 | |
135 | GST_API |
136 | gboolean gst_ghost_pad_construct (GstGhostPad *gpad); |
137 | |
138 | GST_API |
139 | gboolean gst_ghost_pad_activate_mode_default (GstPad * pad, GstObject * parent, |
140 | GstPadMode mode, gboolean active); |
141 | GST_API |
142 | gboolean gst_ghost_pad_internal_activate_mode_default (GstPad * pad, GstObject * parent, |
143 | GstPadMode mode, gboolean active); |
144 | |
145 | #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC |
146 | G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstGhostPad, gst_object_unref) |
147 | #endif |
148 | |
149 | #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC |
150 | G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstProxyPad, gst_object_unref) |
151 | #endif |
152 | |
153 | G_END_DECLS |
154 | |
155 | #endif /* __GST_GHOST_PAD_H__ */ |
156 | |