00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef QGST_CAPS_H
00018 #define QGST_CAPS_H
00019
00020 #include "global.h"
00021 #include "../QGlib/value.h"
00022 #include "../QGlib/refpointer.h"
00023 #include "../QGlib/type.h"
00024
00025 namespace QGst {
00026
00030 class QTGSTREAMER_EXPORT Caps : public QGlib::RefCountedObject
00031 {
00032 QGST_WRAPPER(Caps)
00033 public:
00034 static CapsPtr createSimple(const char *mediaType);
00035 static CapsPtr createAny();
00036 static CapsPtr createEmpty();
00037
00038 static CapsPtr fromString(const char *string);
00039 static inline CapsPtr fromString(const QString & string);
00040 QString toString() const;
00041
00042 void append(const CapsPtr & caps2);
00043 void merge(const CapsPtr & caps2);
00044 template <typename T>
00045 inline void setValue(const char *field, const T & value);
00046 void setValue(const char *field, const QGlib::Value & value);
00047 bool simplify();
00048 void truncate();
00049
00050 StructurePtr internalStructure(uint index);
00051
00052 void appendStructure(const Structure & structure);
00053 void mergeStructure(const Structure & structure);
00054 void removeStructure(uint index);
00055
00056 uint size() const;
00057 bool isSimple() const;
00058 bool isAny() const;
00059 bool isEmpty() const;
00060 bool isFixed() const;
00061 bool equals(const CapsPtr & caps2) const;
00062 bool isAlwaysCompatibleWith(const CapsPtr & caps2) const;
00063 bool isSubsetOf(const CapsPtr & superset) const;
00064 bool canIntersect(const CapsPtr & caps2) const;
00065 CapsPtr getIntersection(const CapsPtr & caps2) const;
00066 CapsPtr getUnion(const CapsPtr & caps2) const;
00067 CapsPtr getNormal() const;
00068 CapsPtr subtract(const CapsPtr & subtrahend) const;
00069
00070 CapsPtr copy() const;
00071 CapsPtr copyNth(uint index) const;
00072
00073 bool isWritable() const;
00074 CapsPtr makeWritable() const;
00075
00076 protected:
00077 virtual void ref(bool increaseRef);
00078 virtual void unref();
00079 };
00080
00081 template <typename T>
00082 inline void Caps::setValue(const char *field, const T & value)
00083 {
00084 setValue(field, QGlib::Value::create(value));
00085 }
00086
00087
00088 inline CapsPtr Caps::fromString(const QString & string)
00089 {
00090 return fromString(string.toUtf8().constData());
00091 }
00092
00094 QTGSTREAMER_EXPORT QDebug operator<<(QDebug debug, const CapsPtr & caps);
00095
00096
00097 namespace Private {
00098
00099 QTGSTREAMER_EXPORT QGlib::RefCountedObject *wrapCaps(void *caps);
00100
00101 }
00102 }
00103
00104 QGST_REGISTER_TYPE(QGst::Caps)
00105 QGLIB_REGISTER_WRAPIMPL_FOR_SUBCLASSES_OF(QGst::Caps, QGst::Private::wrapCaps)
00106
00107 #endif