- Main Page
- Modules
- Namespaces
- Classes
- Files

# caps.h

Go to the documentation of this file.

    00001 // -*- c++ -*-
    00002 // Generated by gtkmmproc -- DO NOT MODIFY!
    00003 #ifndef _GSTREAMERMM_CAPS_H
    00004 #define _GSTREAMERMM_CAPS_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/gstcaps.h>
    00029 #include <gstreamermm/structure.h>
    00030 #include <libxml++/nodes/node.h>
    00031
    00032
    00033 namespace Gst
    00034 {
    00035
    00036 struct Structure;
    00037
    00064 class Caps
    00065 {
    00066   public:
    00067 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00068   typedef Caps CppObjectType;
    00069   typedef GstCaps BaseObjectType;
    00070 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00071
    00072   static Glib::RefPtr<Caps> create();
    00073
    00074   // For use with Glib::RefPtr<> only.
    00075   void reference()   const;
    00076   void unreference() const;
    00077
    00079   GstCaps*       gobj();
    00080
    00082   const GstCaps* gobj() const;
    00083
    00085   GstCaps* gobj_copy() const;
    00086
    00087 protected:
    00088   // Do not derive this.  Gst::Caps can neither be constructed nor deleted.
    00089   Caps();
    00090   void operator delete(void*, size_t);
    00091
    00092 private:
    00093   // noncopyable
    00094   Caps(const Caps&);
    00095   Caps& operator=(const Caps&);
    00096
    00097
    00098 public:
    00099 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00100   static GType get_type() G_GNUC_CONST;
    00101 #endif
    00102
    00103 public:
    00109   static Glib::RefPtr<Gst::Caps> create_any();
    00110
    00116   static Glib::RefPtr<Gst::Caps> create_simple(const Glib::ustring& media_type);
    00117
    00124   static Glib::RefPtr<Gst::Caps> create(const Structure& first_struct);
    00125
    00126
    00131   static Glib::RefPtr<Gst::Caps> create_from_string(const Glib::ustring& string);
    00132
    00133
    00144   Glib::RefPtr<Gst::Caps> copy() const;
    00145
    00151   Glib::RefPtr<Gst::Caps> copy_nth(guint nth) const;
    00152
    00158   void append(const Glib::RefPtr<Gst::Caps>& caps);
    00159
    00168   void merge(const Glib::RefPtr<Gst::Caps>& caps);
    00169
    00174   void append_structure(const Structure& structure);
    00175
    00176
    00181   void merge_structure(Structure& structure);
    00182
    00183
    00189   const Structure get_structure(guint idx) const;
    00190
    00191
    00196   void remove_structure(guint idx);
    00197
    00201   guint size() const;
    00202
    00211   void set_simple(const Glib::ustring& name, const Glib::ValueBase& value);
    00212
    00213
    00223   template <class DataType>
    00224   void set_simple(const Glib::ustring& name, const DataType& data);
    00225
    00232   void set_simple(const Glib::ustring& name, const char* data);
    00233
    00234
    00238   bool is_any() const;
    00239
    00243   bool empty() const;
    00244
    00250   bool is_fixed() const;
    00251
    00260   bool equals(const Glib::RefPtr<const Gst::Caps>& other_caps) const;
    00261
    00267   bool equals_fixed(const Glib::RefPtr<const Gst::Caps>& other_caps) const;
    00268
    00275   bool is_always_compatible(const Glib::RefPtr<const Gst::Caps>& other_caps) const;
    00276
    00283   bool is_subset(const Glib::RefPtr<const Gst::Caps>& superset_caps) const;
    00284
    00285   //This is const (returns a non const) because it always creates a new instance:
    00286
    00292   Glib::RefPtr<Gst::Caps> get_intersect(const Glib::RefPtr<const Gst::Caps>& other_caps) const;
    00293
    00294   //This is const (returns a non const) because it always creates a new instance:
    00295
    00301   Glib::RefPtr<Gst::Caps> get_union(const Glib::RefPtr<const Gst::Caps>& other_caps) const;
    00302
    00303   //This is const (returns a non const) because it always creates a new instance:
    00304
    00310   Glib::RefPtr<Gst::Caps> get_normal() const;
    00311
    00312
    00319   bool simplify();
    00320
    00325   xmlpp::Node* save(xmlpp::Node* parent) const;
    00326
    00327
    00332   static Glib::RefPtr<Gst::Caps> load(xmlpp::Node* parent);
    00333
    00334
    00345   Glib::ustring to_string() const;
    00346
    00347   //This is const (returns a non const) because it always creates a new instance:
    00348
    00355   Glib::RefPtr<Gst::Caps> get_difference(const Glib::RefPtr<const Gst::Caps>& subtrahend_caps) const;
    00356
    00357
    00361   Glib::RefPtr<Gst::Caps> create_writable();
    00362
    00366   void truncate();
    00367
    00368
    00369 };
    00370
    00371 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00372
    00373 /******************************* Gst::Caps *******************************/
    00374
    00375 template <class DataType>
    00376 void Caps::set_simple(const Glib::ustring& name, const DataType& data)
    00377 {
    00378   typedef Glib::Value<DataType> ValueType;
    00379
    00380   ValueType value;
    00381   value.init(ValueType::value_type());
    00382   value.set(data);
    00383   this->set_simple(name, (Glib::ValueBase)(value));
    00384 }
    00385
    00386 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00387
    00388 } //namespace Gst
    00389
    00390 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00391 namespace Glib
    00392 {
    00393
    00394 template <>
    00395 class Value< Glib::RefPtr<Gst::Caps> > : public ValueBase_Boxed
    00396 {
    00397 public:
    00398   static GType value_type() { return Gst::Caps::get_type(); }
    00399   void set(const Glib::RefPtr<Gst::Caps>& caps) { set_boxed(caps->gobj()); }
    00400   Glib::RefPtr<Gst::Caps> get()                 { return Glib::RefPtr<Gst::Caps>(reinterpret_cast<Gst::Caps*>(get_boxed())); }
    00401 };
    00402
    00403 }
    00404 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00405
    00406
    00407 namespace Glib
    00408 {
    00409
    00418   Glib::RefPtr<Gst::Caps> wrap(GstCaps* object, bool take_copy = false);
    00419
    00420 } // namespace Glib
    00421
    00422
    00423 #endif /* _GSTREAMERMM_CAPS_H */
    00424