1 | /* GStreamer |
2 | * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> |
3 | * 2000 Wim Taymans <wim.taymans@chello.be> |
4 | * 2005 Andy Wingo <wingo@pobox.com> |
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., 59 Temple Place - Suite 330, |
21 | * Boston, MA 02111-1307, 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 | GType gst_proxy_pad_get_type (void); |
61 | |
62 | GstProxyPad* gst_proxy_pad_get_internal (GstProxyPad *pad); |
63 | |
64 | |
65 | const GstQueryType* gst_proxy_pad_query_type_default (GstPad *pad); |
66 | gboolean gst_proxy_pad_event_default (GstPad *pad, GstEvent *event); |
67 | gboolean gst_proxy_pad_query_default (GstPad *pad, GstQuery *query); |
68 | GstIterator* gst_proxy_pad_iterate_internal_links_default (GstPad *pad) G_GNUC_MALLOC; |
69 | GstFlowReturn gst_proxy_pad_bufferalloc_default (GstPad *pad, guint64 offset, guint size, GstCaps *caps, GstBuffer **buf); |
70 | GstFlowReturn gst_proxy_pad_chain_default (GstPad *pad, GstBuffer *buffer); |
71 | GstFlowReturn gst_proxy_pad_chain_list_default (GstPad *pad, GstBufferList *list); |
72 | GstFlowReturn gst_proxy_pad_getrange_default (GstPad *pad, guint64 offset, guint size, GstBuffer **buffer); |
73 | gboolean gst_proxy_pad_checkgetrange_default (GstPad *pad); |
74 | GstCaps* gst_proxy_pad_getcaps_default (GstPad *pad); |
75 | gboolean gst_proxy_pad_acceptcaps_default (GstPad *pad, GstCaps *caps); |
76 | void gst_proxy_pad_fixatecaps_default (GstPad *pad, GstCaps *caps); |
77 | gboolean gst_proxy_pad_setcaps_default (GstPad *pad, GstCaps *caps); |
78 | void gst_proxy_pad_unlink_default (GstPad * pad); |
79 | |
80 | #define GST_TYPE_GHOST_PAD (gst_ghost_pad_get_type ()) |
81 | #define GST_IS_GHOST_PAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GHOST_PAD)) |
82 | #define GST_IS_GHOST_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GHOST_PAD)) |
83 | #define GST_GHOST_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GHOST_PAD, GstGhostPad)) |
84 | #define GST_GHOST_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GHOST_PAD, GstGhostPadClass)) |
85 | #define GST_GHOST_PAD_CAST(obj) ((GstGhostPad*)(obj)) |
86 | |
87 | /** |
88 | * GstGhostPad: |
89 | * |
90 | * Opaque #GstGhostPad structure. |
91 | */ |
92 | typedef struct _GstGhostPad GstGhostPad; |
93 | typedef struct _GstGhostPadPrivate GstGhostPadPrivate; |
94 | typedef struct _GstGhostPadClass GstGhostPadClass; |
95 | |
96 | struct _GstGhostPad |
97 | { |
98 | GstProxyPad pad; |
99 | |
100 | /*< private >*/ |
101 | GstGhostPadPrivate *priv; |
102 | }; |
103 | |
104 | struct _GstGhostPadClass |
105 | { |
106 | GstProxyPadClass parent_class; |
107 | |
108 | /*< private >*/ |
109 | gpointer _gst_reserved[GST_PADDING]; |
110 | }; |
111 | |
112 | |
113 | GType gst_ghost_pad_get_type (void); |
114 | |
115 | GstPad* gst_ghost_pad_new (const gchar *name, GstPad *target) G_GNUC_MALLOC; |
116 | GstPad* gst_ghost_pad_new_no_target (const gchar *name, GstPadDirection dir) G_GNUC_MALLOC; |
117 | |
118 | GstPad* gst_ghost_pad_new_from_template (const gchar *name, GstPad * target, GstPadTemplate * templ) G_GNUC_MALLOC; |
119 | GstPad* gst_ghost_pad_new_no_target_from_template (const gchar *name, GstPadTemplate * templ) G_GNUC_MALLOC; |
120 | |
121 | GstPad* gst_ghost_pad_get_target (GstGhostPad *gpad); |
122 | gboolean gst_ghost_pad_set_target (GstGhostPad *gpad, GstPad *newtarget); |
123 | |
124 | gboolean gst_ghost_pad_construct (GstGhostPad *gpad); |
125 | |
126 | gboolean gst_ghost_pad_setcaps_default (GstPad * pad, GstCaps * caps); |
127 | void gst_ghost_pad_unlink_default (GstPad * pad); |
128 | GstPadLinkReturn gst_ghost_pad_link_default (GstPad * pad, GstPad * peer); |
129 | gboolean gst_ghost_pad_activate_pull_default (GstPad * pad, gboolean active); |
130 | gboolean gst_ghost_pad_activate_push_default (GstPad * pad, gboolean active); |
131 | |
132 | gboolean gst_ghost_pad_internal_activate_push_default (GstPad * pad, gboolean active); |
133 | gboolean gst_ghost_pad_internal_activate_pull_default (GstPad * pad, gboolean active); |
134 | |
135 | G_END_DECLS |
136 | |
137 | #endif /* __GST_GHOST_PAD_H__ */ |
138 | |