mirror of
https://github.com/go-gst/go-gst.git
synced 2025-10-17 05:20:46 +08:00
improve pad & element and add wrappers for GstObject flags handling
This commit is contained in:
10
gst/gst.go.c
10
gst/gst.go.c
@@ -149,13 +149,15 @@ GstTagList * makeTagListWritable (GstTagList * tagList) { return gst_tag
|
||||
|
||||
/* Object Utilities */
|
||||
|
||||
gboolean gstElementIsURIHandler (GstElement * elem) { return (GST_IS_URI_HANDLER(elem)); }
|
||||
gboolean gstObjectFlagIsSet (GstObject * obj, GstElementFlags flags) { return (GST_OBJECT_FLAG_IS_SET(obj, flags)); }
|
||||
gboolean gstObjectFlagIsSet (GstObject * obj, guint32 flags) { return (GST_OBJECT_FLAG_IS_SET(obj, flags)); }
|
||||
void gstObjectFlagSet (GstObject * obj, guint32 flags) { (GST_OBJECT_FLAG_SET(obj, flags)); }
|
||||
void gstObjectFlagUnset (GstObject * obj, guint32 flags) { (GST_OBJECT_FLAG_UNSET(obj, flags)); }
|
||||
|
||||
/* Element utilities */
|
||||
|
||||
GstTocSetter * toTocSetter (GstElement * elem) { return GST_TOC_SETTER(elem); }
|
||||
GstTagSetter * toTagSetter (GstElement *elem) { return GST_TAG_SETTER(elem); }
|
||||
gboolean gstElementIsURIHandler (GstElement * elem) { return (GST_IS_URI_HANDLER(elem)); }
|
||||
GstTocSetter * toTocSetter (GstElement * elem) { return GST_TOC_SETTER(elem); }
|
||||
GstTagSetter * toTagSetter (GstElement *elem) { return GST_TAG_SETTER(elem); }
|
||||
|
||||
/* Sample Utilities */
|
||||
|
||||
|
10
gst/gst.go.h
10
gst/gst.go.h
@@ -123,13 +123,15 @@ extern GstTagList * makeTagListWritable (GstTagList * tagList);
|
||||
|
||||
/* Object Utilities */
|
||||
|
||||
extern gboolean gstElementIsURIHandler (GstElement * elem);
|
||||
extern gboolean gstObjectFlagIsSet (GstObject * obj, GstElementFlags flags);
|
||||
extern gboolean gstObjectFlagIsSet (GstObject * obj, guint32 flags);
|
||||
extern void gstObjectFlagSet (GstObject * obj, guint32 flags);
|
||||
extern void gstObjectFlagUnset (GstObject * obj, guint32 flags);
|
||||
|
||||
/* Element utilities */
|
||||
|
||||
extern GstTocSetter * toTocSetter (GstElement * elem);
|
||||
extern GstTagSetter * toTagSetter (GstElement *elem);
|
||||
extern gboolean gstElementIsURIHandler (GstElement * elem);
|
||||
extern GstTocSetter * toTocSetter (GstElement * elem);
|
||||
extern GstTagSetter * toTagSetter (GstElement *elem);
|
||||
|
||||
|
||||
/* Misc */
|
||||
|
@@ -405,8 +405,21 @@ func (e *Element) GetStaticPad(name string) *Pad {
|
||||
}
|
||||
|
||||
// Has returns true if this element has the given flags.
|
||||
// Non MT safe
|
||||
func (e *Element) Has(flags ElementFlags) bool {
|
||||
return gobool(C.gstObjectFlagIsSet(C.toGstObject(e.Unsafe()), C.GstElementFlags(flags)))
|
||||
return e.hasFlags(uint32(flags))
|
||||
}
|
||||
|
||||
// Set element flags
|
||||
// Non MT safe
|
||||
func (e *Element) SetFlags(flags ElementFlags) {
|
||||
e.setFlags(uint32(flags))
|
||||
}
|
||||
|
||||
// Unset element flags
|
||||
// Non MT safe
|
||||
func (e *Element) UnsetFlags(flags ElementFlags) {
|
||||
e.unsetFlags(uint32(flags))
|
||||
}
|
||||
|
||||
// IsURIHandler returns true if this element can handle URIs.
|
||||
|
@@ -97,3 +97,22 @@ func (o *Object) Unref() {
|
||||
func (o *Object) AddControlBinding(binding *ControlBinding) {
|
||||
C.gst_object_add_control_binding(o.Instance(), binding.Instance())
|
||||
}
|
||||
|
||||
// TODO: Consider wrapping GstObject GST_OBJECT_LOCK/GST_OBJECT_UNLOCK functionality
|
||||
// due to following flags related functionality is based on a regular uint32 field
|
||||
// and is not considered thread safe
|
||||
|
||||
// Has returns true if this GstObject has the given flags.
|
||||
func (o *Object) hasFlags(flags uint32) bool {
|
||||
return gobool(C.gstObjectFlagIsSet(o.Instance(), C.guint32(flags)))
|
||||
}
|
||||
|
||||
// SetFlags sets the flags
|
||||
func (o *Object) setFlags(flags uint32) {
|
||||
C.gstObjectFlagSet(o.Instance(), C.guint32(flags))
|
||||
}
|
||||
|
||||
// SetFlags unsets the flags
|
||||
func (o *Object) unsetFlags(flags uint32) {
|
||||
C.gstObjectFlagUnset(o.Instance(), C.guint32(flags))
|
||||
}
|
||||
|
@@ -1075,6 +1075,24 @@ func (p *Pad) ToGValue() (*glib.Value, error) {
|
||||
return val, nil
|
||||
}
|
||||
|
||||
// Has returns true if this pad has the given flags.
|
||||
// Non MT safe
|
||||
func (p *Pad) Has(flags PadFlags) bool {
|
||||
return p.hasFlags(uint32(flags))
|
||||
}
|
||||
|
||||
// Sets pad flags
|
||||
// Non MT safe
|
||||
func (p *Pad) SetFlags(flags PadFlags) {
|
||||
p.setFlags(uint32(flags))
|
||||
}
|
||||
|
||||
// Unsets pad flags
|
||||
// Non MT safe
|
||||
func (p *Pad) UnsetFlags(flags PadFlags) {
|
||||
p.unsetFlags(uint32(flags))
|
||||
}
|
||||
|
||||
// PadProbeInfo represents the info passed to a PadProbeCallback.
|
||||
type PadProbeInfo struct {
|
||||
ptr *C.GstPadProbeInfo
|
||||
|
Reference in New Issue
Block a user