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., 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_DEPRECATED 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 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstGhostPad, gst_object_unref) 146 147 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstProxyPad, gst_object_unref) 148 149 G_END_DECLS 150 151 #endif /* __GST_GHOST_PAD_H__ */ 152