18 #include "structure.h"
19 #include "../QGlib/string_p.h"
20 #include "objectstore_p.h"
21 #include <QtCore/QDebug>
22 #include <gst/gstcaps.h>
23 #include <gst/gstvalue.h>
28 CapsPtr Caps::createSimple(
const char *mediaType)
30 return CapsPtr::wrap(gst_caps_new_simple(mediaType, NULL),
false);
34 CapsPtr Caps::createAny()
40 CapsPtr Caps::createEmpty()
46 CapsPtr Caps::fromString(
const char *
string)
51 QString Caps::toString()
const
53 return QGlib::Private::stringFromGCharPtr(gst_caps_to_string(object<GstCaps>()));
56 void Caps::append(
const CapsPtr & caps2)
58 gst_caps_append(object<GstCaps>(), gst_caps_copy(caps2));
61 void Caps::merge(
const CapsPtr & caps2)
63 gst_caps_merge(object<GstCaps>(), gst_caps_copy(caps2));
66 void Caps::setValue(
const char *field,
const QGlib::Value & value)
68 gst_caps_set_value(object<GstCaps>(), field, value);
73 return gst_caps_do_simplify(object<GstCaps>());
78 gst_caps_truncate(object<GstCaps>());
81 StructurePtr Caps::internalStructure(uint index)
83 GstStructure *structure = gst_caps_get_structure(object<GstCaps>(), index);
84 return SharedStructure::fromCaps(structure, CapsPtr(
this));
87 void Caps::appendStructure(
const Structure & structure)
89 gst_caps_append_structure(object<GstCaps>(), gst_structure_copy(structure));
92 void Caps::mergeStructure(
const Structure & structure)
94 gst_caps_merge_structure(object<GstCaps>(), gst_structure_copy(structure));
97 void Caps::removeStructure(uint index)
99 gst_caps_remove_structure(object<GstCaps>(), index);
102 uint Caps::size()
const
104 return gst_caps_get_size(object<GstCaps>());
107 bool Caps::isSimple()
const
109 return GST_CAPS_IS_SIMPLE(object<GstCaps>());
112 bool Caps::isAny()
const
114 return gst_caps_is_any(object<GstCaps>());
117 bool Caps::isEmpty()
const
119 return gst_caps_is_empty(object<GstCaps>());
122 bool Caps::isFixed()
const
124 return gst_caps_is_fixed(object<GstCaps>());
127 bool Caps::isWritable()
const
129 GstCaps *caps = object<GstCaps>();
130 return (GST_CAPS_REFCOUNT_VALUE(caps) == 1);
133 bool Caps::equals(
const CapsPtr & caps2)
const
135 return gst_caps_is_equal(object<GstCaps>(), caps2);
138 bool Caps::isAlwaysCompatibleWith(
const CapsPtr & caps2)
const
140 return gst_caps_is_always_compatible(object<GstCaps>(), caps2);
143 bool Caps::isSubsetOf(
const CapsPtr & superset)
const
145 return gst_caps_is_subset(object<GstCaps>(), superset);
148 bool Caps::canIntersect(
const CapsPtr & caps2)
const
150 return gst_caps_can_intersect(object<GstCaps>(), caps2);
153 CapsPtr Caps::getIntersection(
const CapsPtr & caps2)
const
155 return CapsPtr::wrap(gst_caps_intersect(object<GstCaps>(), caps2),
false);
158 CapsPtr Caps::getUnion(
const CapsPtr & caps2)
const
160 return CapsPtr::wrap(gst_caps_union(object<GstCaps>(), caps2),
false);
163 CapsPtr Caps::getNormal()
const
165 return CapsPtr::wrap(gst_caps_normalize(object<GstCaps>()),
false);
168 CapsPtr Caps::subtract(
const CapsPtr & subtrahend)
const
170 return CapsPtr::wrap(gst_caps_subtract(object<GstCaps>(), subtrahend),
false);
173 CapsPtr Caps::copy()
const
175 return CapsPtr::wrap(gst_caps_copy(object<GstCaps>()),
false);
178 CapsPtr Caps::copyNth(uint index)
const
180 return CapsPtr::wrap(gst_caps_copy_nth(object<GstCaps>(), index),
false);
183 void Caps::ref(
bool increaseRef)
185 if (Private::ObjectStore::put(
this)) {
187 gst_caps_ref(GST_CAPS(m_object));
194 if (Private::ObjectStore::take(
this)) {
195 gst_caps_unref(GST_CAPS(m_object));
200 CapsPtr Caps::makeWritable()
const
211 return CapsPtr(const_cast<Caps*>(
this));
215 QDebug operator<<(QDebug debug,
const CapsPtr & caps)
217 debug.nospace() <<
"QGst::Caps(" << caps->toString() <<
")";
218 return debug.space();