gstreamermm: pad.h Source File

- Main Page
- Modules
- Namespaces
- Classes
- Files

# pad.h

Go to the documentation of this file.

    00001 // -*- c++ -*-
    00002 // Generated by gtkmmproc -- DO NOT MODIFY!
    00003 #ifndef _GSTREAMERMM_PAD_H
    00004 #define _GSTREAMERMM_PAD_H
    00005
    00006
    00007 #include <glibmm.h>
    00008
    00009 /* gstreamermm - a C++ wrapper for gstreamer
    00010  *
    00011  * Copyright 2008 The gstreamermm Development Team
    00012  *
    00013  * This library is free software; you can redistribute it and/or
    00014  * modify it under the terms of the GNU Lesser General Public
    00015  * License as published by the Free Software Foundation; either
    00016  * version 2.1 of the License, or (at your option) any later version.
    00017  *
    00018  * This library is distributed in the hope that it will be useful,
    00019  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    00020  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00021  * Lesser General Public License for more details.
    00022  *
    00023  * You should have received a copy of the GNU Lesser General Public
    00024  * License along with this library; if not, write to the Free
    00025  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    00026  */
    00027
    00028 #include <gst/gstpad.h>
    00029 #include <gstreamermm/object.h>
    00030 #include <gstreamermm/miniobject.h>
    00031 #include <gstreamermm/format.h>
    00032 #include <gstreamermm/query.h>
    00033
    00034
    00035 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00036 typedef struct _GstPad GstPad;
    00037 typedef struct _GstPadClass GstPadClass;
    00038 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00039
    00040
    00041 namespace Gst
    00042 { class Pad_Class; } // namespace Gst
    00043 namespace Gst
    00044 {
    00045
    00046 class Buffer;
    00047 class Caps;
    00048 class Element;
    00049 class Event;
    00050 class PadTemplate;
    00051 class Query;
    00052
    00053 //Gst::Iterator<> forward declaration.
    00054 template <class CppType>
    00055 class Iterator;
    00056
    00062 enum PadDirection
    00063 {
    00064   PAD_UNKNOWN,
    00065   PAD_SRC,
    00066   PAD_SINK
    00067 };
    00068
    00069 } // namespace Gst
    00070
    00071
    00072 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00073 namespace Glib
    00074 {
    00075
    00076 template <>
    00077 class Value<Gst::PadDirection> : public Glib::Value_Enum<Gst::PadDirection>
    00078 {
    00079 public:
    00080   static GType value_type() G_GNUC_CONST;
    00081 };
    00082
    00083 } // namespace Glib
    00084 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00085
    00086
    00087 namespace Gst
    00088 {
    00089
    00093 enum PadFlags
    00094 {
    00095   PAD_BLOCKED = GST_OBJECT_FLAG_LAST << 0,
    00096   PAD_FLUSHING = GST_OBJECT_FLAG_LAST << 1,
    00097   PAD_IN_GETCAPS = GST_OBJECT_FLAG_LAST << 2,
    00098   PAD_IN_SETCAPS = GST_OBJECT_FLAG_LAST << 3,
    00099   PAD_BLOCKING = GST_OBJECT_FLAG_LAST << 4,
    00100   PAD_FLAG_LAST = GST_OBJECT_FLAG_LAST << 8
    00101 };
    00102
    00103 } // namespace Gst
    00104
    00105
    00106 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00107 namespace Glib
    00108 {
    00109
    00110 template <>
    00111 class Value<Gst::PadFlags> : public Glib::Value_Enum<Gst::PadFlags>
    00112 {
    00113 public:
    00114   static GType value_type() G_GNUC_CONST;
    00115 };
    00116
    00117 } // namespace Glib
    00118 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00119
    00120
    00121 namespace Gst
    00122 {
    00123
    00127 enum PadLinkReturn
    00128 {
    00129   PAD_LINK_OK = 0,
    00130   PAD_LINK_WRONG_HIERARCHY = -1,
    00131   PAD_LINK_WAS_LINKED = -2,
    00132   PAD_LINK_WRONG_DIRECTION = -3,
    00133   PAD_LINK_NOFORMAT = -4,
    00134   PAD_LINK_NOSCHED = -5,
    00135   PAD_LINK_REFUSED = -6
    00136 };
    00137
    00138 } // namespace Gst
    00139
    00140
    00141 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00142 namespace Glib
    00143 {
    00144
    00145 template <>
    00146 class Value<Gst::PadLinkReturn> : public Glib::Value_Enum<Gst::PadLinkReturn>
    00147 {
    00148 public:
    00149   static GType value_type() G_GNUC_CONST;
    00150 };
    00151
    00152 } // namespace Glib
    00153 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00154
    00155
    00156 namespace Gst
    00157 {
    00158
    00162 enum FlowReturn
    00163 {
    00164   FLOW_CUSTOM_SUCCESS = 100,
    00165   FLOW_RESEND = 1,
    00166   FLOW_OK = 0,
    00167   FLOW_NOT_LINKED = -1,
    00168   FLOW_WRONG_STATE = -2,
    00169   FLOW_UNEXPECTED = -3,
    00170   FLOW_NOT_NEGOTIATED = -4,
    00171   FLOW_ERROR = -5,
    00172   FLOW_NOT_SUPPORTED = -6,
    00173   FLOW_CUSTOM_ERROR = -100
    00174 };
    00175
    00176 } // namespace Gst
    00177
    00178
    00179 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00180 namespace Glib
    00181 {
    00182
    00183 template <>
    00184 class Value<Gst::FlowReturn> : public Glib::Value_Enum<Gst::FlowReturn>
    00185 {
    00186 public:
    00187   static GType value_type() G_GNUC_CONST;
    00188 };
    00189
    00190 } // namespace Glib
    00191 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00192
    00193
    00194 namespace Gst
    00195 {
    00196
    00200 enum ActivateMode
    00201 {
    00202   ACTIVATE_NONE,
    00203   ACTIVATE_PUSH,
    00204   ACTIVATE_PULL
    00205 };
    00206
    00207 } // namespace Gst
    00208
    00209
    00210 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00211 namespace Glib
    00212 {
    00213
    00214 template <>
    00215 class Value<Gst::ActivateMode> : public Glib::Value_Enum<Gst::ActivateMode>
    00216 {
    00217 public:
    00218   static GType value_type() G_GNUC_CONST;
    00219 };
    00220
    00221 } // namespace Glib
    00222 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00223
    00224
    00225 namespace Gst
    00226 {
    00227
    00228
    00260 class Pad : public Object
    00261 {
    00262
    00263 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00264
    00265 public:
    00266   typedef Pad CppObjectType;
    00267   typedef Pad_Class CppClassType;
    00268   typedef GstPad BaseObjectType;
    00269   typedef GstPadClass BaseClassType;
    00270
    00271 private:  friend class Pad_Class;
    00272   static CppClassType pad_class_;
    00273
    00274 private:
    00275   // noncopyable
    00276   Pad(const Pad&);
    00277   Pad& operator=(const Pad&);
    00278
    00279 protected:
    00280   explicit Pad(const Glib::ConstructParams& construct_params);
    00281   explicit Pad(GstPad* castitem);
    00282
    00283 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00284
    00285 public:
    00286   virtual ~Pad();
    00287
    00288 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00289   static GType get_type()      G_GNUC_CONST;
    00290   static GType get_base_type() G_GNUC_CONST;
    00291 #endif
    00292
    00294   GstPad*       gobj()       { return reinterpret_cast<GstPad*>(gobject_); }
    00295
    00297   const GstPad* gobj() const { return reinterpret_cast<GstPad*>(gobject_); }
    00298
    00300   GstPad* gobj_copy();
    00301
    00302 private:
    00303
    00304
    00305 protected:
    00306   explicit Pad(const Glib::ustring& name, PadDirection direction);
    00307   Pad(PadDirection dir);
    00308   Pad(const Glib::RefPtr<const Gst::PadTemplate>& templ, const Glib::ustring& name);
    00309   Pad(const Glib::RefPtr<const Gst::PadTemplate>& templ);
    00310
    00311 public:
    00315   typedef sigc::slot<void, const Glib::RefPtr<Gst::Pad>&, bool> SlotBlock;
    00316
    00323   typedef sigc::slot< bool, const Glib::RefPtr<Gst::Pad>&, const Glib::RefPtr<Gst::MiniObject>& > SlotData;
    00324
    00332   static Glib::RefPtr<Pad> create(const Glib::ustring& name, PadDirection dir);
    00333
    00334
    00342   static Glib::RefPtr<Pad> create(PadDirection dir);
    00343
    00344
    00352   static Glib::RefPtr<Pad> create(const Glib::RefPtr<const Gst::PadTemplate>& pad_template);
    00353
    00354
    00362   static Glib::RefPtr<Pad> create(const Glib::RefPtr<const Gst::PadTemplate>& pad_template, const Glib::ustring& name);
    00363
    00364
    00372   PadDirection get_direction() const;
    00373
    00381   Glib::RefPtr<Gst::Element> get_parent_element();
    00382
    00390   Glib::RefPtr<const Gst::Element> get_parent_element() const;
    00391
    00398   Glib::RefPtr<Gst::PadTemplate> get_pad_template();
    00399
    00406   Glib::RefPtr<const Gst::PadTemplate> get_pad_template() const;
    00407
    00415   PadLinkReturn link(const Glib::RefPtr<Gst::Pad>& sink_pad);
    00416
    00425   bool unlink(const Glib::RefPtr<Gst::Pad>& sink_pad);
    00426
    00432   bool is_linked() const;
    00433
    00439   bool can_link(const Glib::RefPtr<const Gst::Pad>& other_pad) const;
    00440
    00451   Glib::RefPtr<Gst::Caps> get_caps();
    00452
    00463   Glib::RefPtr<const Gst::Caps> get_caps() const;
    00464
    00476   Glib::RefPtr<Gst::Caps> get_allowed_caps();
    00477
    00489   Glib::RefPtr<const Gst::Caps> get_allowed_caps() const;
    00490
    00503   Glib::RefPtr<Gst::Caps> get_negotiated_caps();
    00504
    00517   Glib::RefPtr<const Gst::Caps> get_negotiated_caps() const;
    00518
    00519   //The documentation gst_pad_get_pad_template_caps() suggests that there shouldn't be a non-const return:
    00524   Glib::RefPtr<const Gst::Caps> get_pad_template_caps() const;
    00525
    00526
    00538   bool set_caps(const Glib::RefPtr<Gst::Caps>& caps);
    00539
    00546   Glib::RefPtr<Gst::Pad> get_peer();
    00547
    00554   Glib::RefPtr<const Gst::Pad> get_peer() const;
    00555
    00561   Glib::RefPtr<Gst::Caps> peer_get_caps();
    00562
    00568   Glib::RefPtr<const Gst::Caps> peer_get_caps() const;
    00569
    00578   void use_fixed_caps();
    00579
    00585   bool is_active() const;
    00586
    00596   bool set_blocked(bool blocked = true);
    00597
    00613   bool set_blocked_async(const SlotBlock& slot, bool blocked = true);
    00614
    00615
    00623   bool is_blocked() const;
    00624
    00633   bool is_blocking() const;
    00634
    00657   gulong add_data_probe(const SlotData& slot);
    00658
    00659
    00666   gulong add_buffer_probe(const SlotData& slot);
    00667
    00668
    00675   gulong add_event_probe(const SlotData& slot);
    00676
    00677
    00681   void remove_data_probe(guint handler_id);
    00682
    00686   void remove_buffer_probe(guint handler_id);
    00687
    00691   void remove_event_probe(guint handler_id);
    00692
    00693   //This is handwritten because conversion from Glib::RefPtr<Gst::Buffer>& to
    00694   //GstBuffer** is difficult.
    00712   FlowReturn alloc_buffer(guint64 offset, int size, const Glib::RefPtr<Gst::Caps>& caps, Glib::RefPtr<Gst::Buffer>& buf);
    00713
    00714
    00715   //This is handwritten because conversion from Glib::RefPtr<Gst::Buffer>& to
    00716   //GstBuffer** is difficult.
    00731   FlowReturn alloc_buffer_and_set_caps(guint64 offset, int size, const Glib::RefPtr<Gst::Caps>& caps, Glib::RefPtr<Gst::Buffer>& buf);
    00732
    00733
    00734   //This is handwritten because conversion from Glib::RefPtr<Gst::Buffer>& to
    00735   //GstBuffer** is difficult.
    00750   FlowReturn get_range(guint64 offset, guint size, Glib::RefPtr<Gst::Buffer>& buffer);
    00751
    00752
    00757   bool accept_caps(const Glib::RefPtr<const Gst::Caps>& caps) const;
    00758
    00767   Glib::RefPtr<Gst::Caps> proxy_getcaps();
    00768
    00777   Glib::RefPtr<const Gst::Caps> proxy_getcaps() const;
    00778
    00785   bool proxy_setcaps(const Glib::RefPtr<Gst::Caps>& caps);
    00786
    00791   void fixate_caps(const Glib::RefPtr<Gst::Caps>& caps);
    00792
    00798   bool peer_accept_caps(const Glib::RefPtr<const Gst::Caps>& caps) const;
    00799
    00800   // This method is written manually because an extra ref is necessary
    00820   FlowReturn push(const Glib::RefPtr<Gst::Buffer>& buffer);
    00821
    00822
    00823   // This method is written manually because an extra ref is necessary
    00830   bool push_event(const Glib::RefPtr<Gst::Event>& event);
    00831
    00832
    00844   bool check_pull_range() const;
    00845
    00866   FlowReturn pull_range(guint64 offset, guint size, Glib::RefPtr<Gst::Buffer>& buffer);
    00867
    00868
    00881   bool activate_pull(bool active = true);
    00882
    00892   bool activate_push(bool active = true);
    00893
    00894   // This method is written manually because an extra ref is necessary
    00917   bool send_event(const Glib::RefPtr<Gst::Event>& event);
    00918
    00919
    00928   bool event_default(const Glib::RefPtr<Gst::Event>& event);
    00929
    00940   bool query(const Glib::RefPtr<Gst::Query>& query) const;
    00941
    00952   bool peer_query(const Glib::RefPtr<Gst::Query>& query) const;
    00953
    00962   bool query_default(const Glib::RefPtr<Gst::Query>& query) const;
    00963
    00970   bool query_position(Format& format, gint64& position) const;
    00971
    00977   bool query_position(Format& format) const;
    00978
    00979
    00986   bool query_duration(Format& format, gint64& duration) const;
    00987
    00993   bool query_duration(Format& format) const;
    00994
    00995
    01003   bool query_convert(Format src_format, gint64 src_value, Format& dst_format, gint64& dst_value) const;
    01004
    01011   bool query_peer_position(Format& format, gint64& position) const;
    01012
    01019   bool query_peer_position(Format& format) const;
    01020
    01021
    01028   bool query_peer_duration(Format& format, gint64& duration) const;
    01029
    01035   bool query_peer_duration(Format& format) const;
    01036
    01037
    01046   bool query_peer_convert(Format src_format, gint64 src_value, Format& dst_format, gint64& dst_value) const;
    01047
    01048
    01053   Glib::ArrayHandle<QueryType> get_query_types() const;
    01054
    01060   Glib::ArrayHandle<QueryType> get_query_types_default() const;
    01061
    01062
    01073   Gst::Iterator<Gst::Pad> iterate_internal_links();
    01074
    01085   Gst::Iterator<const Gst::Pad> iterate_internal_links() const;
    01086
    01098   Gst::Iterator<Gst::Pad> iterate_internal_links_default();
    01099
    01111   Gst::Iterator<const Gst::Pad> iterate_internal_links_default() const;
    01112
    01113
    01127   Glib::ListHandle< Glib::RefPtr<Gst::Pad> > get_internal_links();
    01128
    01129
    01143   Glib::ListHandle< Glib::RefPtr<const Gst::Pad> > get_internal_links() const;
    01144
    01145
    01162   Glib::ListHandle< Glib::RefPtr<Gst::Pad> > get_internal_links_default();
    01163
    01180   Glib::ListHandle< Glib::RefPtr<const Gst::Pad> > get_internal_links_default() const;
    01181
    01182   // This method is written manually because an extra ref is necessary
    01183   FlowReturn chain(const Glib::RefPtr<Gst::Buffer>& buffer);
    01184
    01185
    01192   bool pause_task() ;
    01193
    01205   bool stop_task() ;
    01206
    01222   bool set_active(bool active = true);
    01223
    01224     //C API specific pad callback setting functions are ignored.
    01225
    01226
    01227   //C API helper function gst_pad_get_fixed_caps_func ignored.
    01228
    01229
    01230   //The "have-data" signal never really emits so ignore it.  Adding data, event
    01231   //and buffer probes do emit.
    01232
    01233
    01240   Glib::SignalProxy1< void,const Glib::RefPtr<Gst::Pad>& > signal_linked();
    01241
    01242
    01249   Glib::SignalProxy0< void > signal_request_link();
    01250
    01251
    01258   Glib::SignalProxy1< void,const Glib::RefPtr<Gst::Pad>& > signal_unlinked();
    01259
    01260
    01261   #ifdef GLIBMM_PROPERTIES_ENABLED
    01262
    01268   Glib::PropertyProxy_ReadOnly< Glib::RefPtr<Gst::Caps> > property_caps() const;
    01269 #endif //#GLIBMM_PROPERTIES_ENABLED
    01270
    01271
    01272   #ifdef GLIBMM_PROPERTIES_ENABLED
    01273
    01279   Glib::PropertyProxy_ReadOnly<PadDirection> property_direction() const;
    01280 #endif //#GLIBMM_PROPERTIES_ENABLED
    01281
    01282
    01283   #ifdef GLIBMM_PROPERTIES_ENABLED
    01284
    01290   Glib::PropertyProxy<PadTemplate> property_template() ;
    01291 #endif //#GLIBMM_PROPERTIES_ENABLED
    01292
    01293 #ifdef GLIBMM_PROPERTIES_ENABLED
    01294
    01300   Glib::PropertyProxy_ReadOnly<PadTemplate> property_template() const;
    01301 #endif //#GLIBMM_PROPERTIES_ENABLED
    01302
    01303
    01304 public:
    01305
    01306 public:
    01307   //C++ methods used to invoke GTK+ virtual functions:
    01308 #ifdef GLIBMM_VFUNCS_ENABLED
    01309 #endif //GLIBMM_VFUNCS_ENABLED
    01310
    01311 protected:
    01312   //GTK+ Virtual Functions (override these to change behaviour):
    01313 #ifdef GLIBMM_VFUNCS_ENABLED
    01314 #endif //GLIBMM_VFUNCS_ENABLED
    01315
    01316   //Default Signal Handlers::
    01317 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
    01318   virtual void on_linked(const Glib::RefPtr<Gst::Pad>& peer_pad);
    01319   virtual void on_request_link();
    01320   virtual void on_unlinked(const Glib::RefPtr<Gst::Pad>& peer_pad);
    01321 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
    01322
    01323
    01324 };
    01325
    01326 } // namespace Gst
    01327
    01328
    01329 namespace Glib
    01330 {
    01339   Glib::RefPtr<Gst::Pad> wrap(GstPad* object, bool take_copy = false);
    01340 }
    01341
    01342
    01343 #endif /* _GSTREAMERMM_PAD_H */
    01344