00001
00002
00003 #ifndef _GSTREAMERMM_PADTEMPLATE_H
00004 #define _GSTREAMERMM_PADTEMPLATE_H
00005
00006
00007 #include <glibmm.h>
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <gst/gstpad.h>
00029 #include <gst/gstpadtemplate.h>
00030 #include <gstreamermm/object.h>
00031 #include <gstreamermm/pad.h>
00032
00033
00034 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00035 typedef struct _GstPadTemplate GstPadTemplate;
00036 typedef struct _GstPadTemplateClass GstPadTemplateClass;
00037 #endif
00038
00039
00040 namespace Gst
00041 { class PadTemplate_Class; }
00042 namespace Gst
00043 {
00044
00050 enum PadTemplateFlags
00051 {
00052 PAD_TEMPLATE_FIXED = GST_OBJECT_FLAG_LAST << 0,
00053 PAD_TEMPLATE_LAST = GST_OBJECT_FLAG_LAST << 4
00054 };
00055
00056 }
00057
00058
00059 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00060 namespace Glib
00061 {
00062
00063 template <>
00064 class Value<Gst::PadTemplateFlags> : public Glib::Value_Enum<Gst::PadTemplateFlags>
00065 {
00066 public:
00067 static GType value_type() G_GNUC_CONST;
00068 };
00069
00070 }
00071 #endif
00072
00073
00074 namespace Gst
00075 {
00076
00080 enum PadPresence
00081 {
00082 PAD_ALWAYS,
00083 PAD_SOMETIMES,
00084 PAD_REQUEST
00085 };
00086
00087 }
00088
00089
00090 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00091 namespace Glib
00092 {
00093
00094 template <>
00095 class Value<Gst::PadPresence> : public Glib::Value_Enum<Gst::PadPresence>
00096 {
00097 public:
00098 static GType value_type() G_GNUC_CONST;
00099 };
00100
00101 }
00102 #endif
00103
00104
00105 namespace Gst
00106 {
00107
00108
00109 class Caps;
00110 class Pad;
00111
00137 class PadTemplate : public Object
00138 {
00139
00140 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00141
00142 public:
00143 typedef PadTemplate CppObjectType;
00144 typedef PadTemplate_Class CppClassType;
00145 typedef GstPadTemplate BaseObjectType;
00146 typedef GstPadTemplateClass BaseClassType;
00147
00148 private: friend class PadTemplate_Class;
00149 static CppClassType padtemplate_class_;
00150
00151 private:
00152
00153 PadTemplate(const PadTemplate&);
00154 PadTemplate& operator=(const PadTemplate&);
00155
00156 protected:
00157 explicit PadTemplate(const Glib::ConstructParams& construct_params);
00158 explicit PadTemplate(GstPadTemplate* castitem);
00159
00160 #endif
00161
00162 public:
00163 virtual ~PadTemplate();
00164
00165 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00166 static GType get_type() G_GNUC_CONST;
00167 static GType get_base_type() G_GNUC_CONST;
00168 #endif
00169
00171 GstPadTemplate* gobj() { return reinterpret_cast<GstPadTemplate*>(gobject_); }
00172
00174 const GstPadTemplate* gobj() const { return reinterpret_cast<GstPadTemplate*>(gobject_); }
00175
00177 GstPadTemplate* gobj_copy();
00178
00179 private:
00180
00181
00182 protected:
00183 explicit PadTemplate(const Glib::ustring& name_template, PadDirection direction, PadPresence presence, const Glib::RefPtr<Gst::Caps>& caps);
00184
00185 public:
00198 static Glib::RefPtr<PadTemplate> create(const Glib::ustring& name_template, PadDirection direction, PadPresence presence, const Glib::RefPtr<Gst::Caps>& caps);
00199
00200
00205 Glib::RefPtr<Gst::Caps> get_caps();
00206
00211 Glib::RefPtr<const Gst::Caps> get_caps() const;
00212
00215 Glib::ustring get_name_template() const;
00216
00219 PadDirection get_direction() const;
00220
00223 PadPresence get_presence() const;
00224
00225
00232 Glib::SignalProxy1< void,const Glib::RefPtr<Gst::Pad>& > signal_pad_created();
00233
00234
00235
00236
00237
00238
00239 public:
00240
00241 public:
00242
00243 #ifdef GLIBMM_VFUNCS_ENABLED
00244 #endif //GLIBMM_VFUNCS_ENABLED
00245
00246 protected:
00247
00248 #ifdef GLIBMM_VFUNCS_ENABLED
00249 #endif //GLIBMM_VFUNCS_ENABLED
00250
00251
00252 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00253 virtual void on_pad_created(const Glib::RefPtr<Gst::Pad>& pad);
00254 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00255
00256
00257 };
00258
00259 }
00260
00261
00262 namespace Glib
00263 {
00272 Glib::RefPtr<Gst::PadTemplate> wrap(GstPadTemplate* object, bool take_copy = false);
00273 }
00274
00275
00276 #endif
00277