add custom transform example and remove calls to deprecated methods

This commit is contained in:
RSWilli
2024-12-09 10:53:09 +01:00
parent b9dce0b926
commit 96b7315e7a
10 changed files with 690 additions and 319 deletions

View File

@@ -0,0 +1,68 @@
package customtransform
import (
"github.com/go-gst/go-glib/glib"
"github.com/go-gst/go-gst/gst"
"github.com/go-gst/go-gst/gst/base"
)
type customBaseTransform struct{}
// ClassInit is the place where you define pads and properties
func (*customBaseTransform) ClassInit(klass *glib.ObjectClass) {
class := gst.ToElementClass(klass)
class.SetMetadata(
"custom base transform",
"Transform/demo",
"custom base transform",
"Wilhelm Bartel <bartel.wilhelm@gmail.com>",
)
class.AddPadTemplate(gst.NewPadTemplate(
"src",
gst.PadDirectionSource,
gst.PadPresenceAlways,
gst.NewCapsFromString("audio/x-raw,channels=2,rate=48000"),
))
class.AddPadTemplate(gst.NewPadTemplate(
"sink",
gst.PadDirectionSink,
gst.PadPresenceAlways,
gst.NewCapsFromString("audio/x-raw,channels=2,rate=48000"),
))
}
// SetProperty gets called for every property. The id is the index in the slice defined above.
func (s *customBaseTransform) SetProperty(self *glib.Object, id uint, value *glib.Value) {}
// GetProperty is called to retrieve the value of the property at index `id` in the properties
// slice provided at ClassInit.
func (o *customBaseTransform) GetProperty(self *glib.Object, id uint) *glib.Value {
return nil
}
// New is called by the bindings to create a new instance of your go element. Use this to initialize channels, maps, etc.
//
// Think of New like the constructor of your struct
func (*customBaseTransform) New() glib.GoObjectSubclass {
return &customBaseTransform{}
}
// InstanceInit should initialize the element. Keep in mind that the properties are not yet present. When this is called.
func (s *customBaseTransform) InstanceInit(instance *glib.Object) {}
func (s *customBaseTransform) Constructed(o *glib.Object) {}
func (s *customBaseTransform) Finalize(o *glib.Object) {}
// see base.GstBaseTransformImpl interface for the method signatures of the virtual methods
//
// it is not required to implement all methods
var _ base.GstBaseTransformImpl = nil
func (s *customBaseTransform) SinkEvent(self *base.GstBaseTransform, event *gst.Event) bool {
return self.ParentSinkEvent(event)
}
func (s *customBaseTransform) SrcEvent(self *base.GstBaseTransform, event *gst.Event) bool {
return self.ParentSrcEvent(event)
}

View File

@@ -0,0 +1,23 @@
package customtransform
import (
"github.com/go-gst/go-gst/gst"
"github.com/go-gst/go-gst/gst/base"
)
// Register needs to be called after gst.Init() to make the gocustombin available in the standard
// gst element registry. After this call the element can be used like any other gstreamer element
func Register() bool {
return gst.RegisterElement(
// no plugin:
nil,
// The name of the element
"gocustomtransform",
// The rank of the element
gst.RankNone,
// The GoElement implementation for the element
&customBaseTransform{},
// The base subclass this element extends
base.ExtendsBaseTransform,
)
}

View File

@@ -0,0 +1,46 @@
package main
import (
"context"
"fmt"
"os"
"os/signal"
"github.com/go-gst/go-gst/examples/plugins/basetransform/internal/customtransform"
"github.com/go-gst/go-gst/gst"
)
func run(ctx context.Context) error {
ctx, cancel := signal.NotifyContext(ctx, os.Interrupt)
defer cancel()
gst.Init(nil)
customtransform.Register()
pipeline, err := gst.NewPipelineFromString("audiotestsrc ! gocustomtransform ! fakesink")
if err != nil {
return err
}
pipeline.SetState(gst.StatePlaying)
<-ctx.Done()
pipeline.BlockSetState(gst.StateNull)
gst.Deinit()
return ctx.Err()
}
func main() {
ctx := context.Background()
err := run(ctx)
if err != nil {
fmt.Fprintln(os.Stderr, err)
}
}

View File

@@ -64,7 +64,8 @@ func goNeedDataCb(src *C.GstAppSrc, length C.guint, userData C.gpointer) {
return return
} }
gosrc := wrapCSource(src) gosrc := wrapCSource(src)
gosrc.WithTransferOriginal(func() { cbs.NeedDataFunc(gosrc, uint(length)) })
cbs.NeedDataFunc(gosrc, uint(length))
} }
//export goEnoughDataDb //export goEnoughDataDb
@@ -77,7 +78,7 @@ func goEnoughDataDb(src *C.GstAppSrc, userData C.gpointer) {
return return
} }
gosrc := wrapCSource(src) gosrc := wrapCSource(src)
gosrc.WithTransferOriginal(func() { cbs.EnoughDataFunc(gosrc) }) cbs.EnoughDataFunc(gosrc)
} }
//export goSeekDataCb //export goSeekDataCb
@@ -91,7 +92,7 @@ func goSeekDataCb(src *C.GstAppSrc, offset C.guint64, userData C.gpointer) C.gbo
} }
gosrc := wrapCSource(src) gosrc := wrapCSource(src)
var ret C.gboolean var ret C.gboolean
gosrc.WithTransferOriginal(func() { ret = gboolean(cbs.SeekDataFunc(gosrc, uint64(offset))) }) ret = gboolean(cbs.SeekDataFunc(gosrc, uint64(offset)))
return ret return ret
} }

View File

@@ -16,36 +16,42 @@ import (
//export goGstBaseSinkActivatePull //export goGstBaseSinkActivatePull
func goGstBaseSinkActivatePull(sink *C.GstBaseSink, active C.gboolean) C.gboolean { func goGstBaseSinkActivatePull(sink *C.GstBaseSink, active C.gboolean) C.gboolean {
var ret C.gboolean var ret C.gboolean
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
ActivatePull(self *GstBaseSink, active bool) bool
}) iface := subclass.(interface {
ret = gboolean(iface.ActivatePull(ToGstBaseSink(gObject), gobool(active))) ActivatePull(self *GstBaseSink, active bool) bool
}) })
ret = gboolean(iface.ActivatePull(goBaseSink, gobool(active)))
return ret return ret
} }
//export goGstBaseSinkEvent //export goGstBaseSinkEvent
func goGstBaseSinkEvent(sink *C.GstBaseSink, event *C.GstEvent) C.gboolean { func goGstBaseSinkEvent(sink *C.GstBaseSink, event *C.GstEvent) C.gboolean {
var ret C.gboolean var ret C.gboolean
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
Event(self *GstBaseSink, event *gst.Event) bool
}) iface := subclass.(interface {
ret = gboolean(iface.Event(ToGstBaseSink(gObject), gst.ToGstEvent(unsafe.Pointer(event)))) Event(self *GstBaseSink, event *gst.Event) bool
}) })
ret = gboolean(iface.Event(goBaseSink, gst.ToGstEvent(unsafe.Pointer(event))))
return ret return ret
} }
//export goGstBaseSinkFixate //export goGstBaseSinkFixate
func goGstBaseSinkFixate(sink *C.GstBaseSink, caps *C.GstCaps) *C.GstCaps { func goGstBaseSinkFixate(sink *C.GstBaseSink, caps *C.GstCaps) *C.GstCaps {
var fixated *gst.Caps var fixated *gst.Caps
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
Fixate(self *GstBaseSink, caps *gst.Caps) *gst.Caps
}) iface := subclass.(interface {
fixated = iface.Fixate(ToGstBaseSink(gObject), gst.ToGstCaps(unsafe.Pointer(caps))) Fixate(self *GstBaseSink, caps *gst.Caps) *gst.Caps
}) })
fixated = iface.Fixate(goBaseSink, gst.ToGstCaps(unsafe.Pointer(caps)))
if fixated == nil { if fixated == nil {
return nil return nil
} }
@@ -55,12 +61,14 @@ func goGstBaseSinkFixate(sink *C.GstBaseSink, caps *C.GstCaps) *C.GstCaps {
//export goGstBaseSinkGetCaps //export goGstBaseSinkGetCaps
func goGstBaseSinkGetCaps(sink *C.GstBaseSink, filter *C.GstCaps) *C.GstCaps { func goGstBaseSinkGetCaps(sink *C.GstBaseSink, filter *C.GstCaps) *C.GstCaps {
var filtered *gst.Caps var filtered *gst.Caps
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
GetCaps(self *GstBaseSink, filter *gst.Caps) *gst.Caps
}) iface := subclass.(interface {
filtered = iface.GetCaps(ToGstBaseSink(gObject), gst.ToGstCaps(unsafe.Pointer(filter))) GetCaps(self *GstBaseSink, filter *gst.Caps) *gst.Caps
}) })
filtered = iface.GetCaps(goBaseSink, gst.ToGstCaps(unsafe.Pointer(filter)))
if filtered == nil { if filtered == nil {
return nil return nil
} }
@@ -70,12 +78,14 @@ func goGstBaseSinkGetCaps(sink *C.GstBaseSink, filter *C.GstCaps) *C.GstCaps {
//export goGstBaseSinkGetTimes //export goGstBaseSinkGetTimes
func goGstBaseSinkGetTimes(sink *C.GstBaseSink, buf *C.GstBuffer, start, end *C.GstClockTime) { func goGstBaseSinkGetTimes(sink *C.GstBaseSink, buf *C.GstBuffer, start, end *C.GstClockTime) {
var retStart, retEnd time.Duration var retStart, retEnd time.Duration
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
GetTimes(self *GstBaseSink, buffer *gst.Buffer) (start, end time.Duration) // should this be a ClockTime?
}) iface := subclass.(interface {
retStart, retEnd = iface.GetTimes(ToGstBaseSink(gObject), gst.ToGstBuffer(unsafe.Pointer(buf))) GetTimes(self *GstBaseSink, buffer *gst.Buffer) (start, end time.Duration) // should this be a ClockTime?
}) })
retStart, retEnd = iface.GetTimes(goBaseSink, gst.ToGstBuffer(unsafe.Pointer(buf)))
*start = C.GstClockTime(retStart.Nanoseconds()) *start = C.GstClockTime(retStart.Nanoseconds())
*end = C.GstClockTime(retEnd.Nanoseconds()) *end = C.GstClockTime(retEnd.Nanoseconds())
} }
@@ -83,155 +93,181 @@ func goGstBaseSinkGetTimes(sink *C.GstBaseSink, buf *C.GstBuffer, start, end *C.
//export goGstBaseSinkPrepare //export goGstBaseSinkPrepare
func goGstBaseSinkPrepare(sink *C.GstBaseSink, buf *C.GstBuffer) C.GstFlowReturn { func goGstBaseSinkPrepare(sink *C.GstBaseSink, buf *C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
Prepare(self *GstBaseSink, buffer *gst.Buffer) gst.FlowReturn
}) iface := subclass.(interface {
ret = iface.Prepare(ToGstBaseSink(gObject), gst.ToGstBuffer(unsafe.Pointer(buf))) Prepare(self *GstBaseSink, buffer *gst.Buffer) gst.FlowReturn
}) })
ret = iface.Prepare(goBaseSink, gst.ToGstBuffer(unsafe.Pointer(buf)))
return C.GstFlowReturn(ret) return C.GstFlowReturn(ret)
} }
//export goGstBaseSinkPrepareList //export goGstBaseSinkPrepareList
func goGstBaseSinkPrepareList(sink *C.GstBaseSink, list *C.GstBufferList) C.GstFlowReturn { func goGstBaseSinkPrepareList(sink *C.GstBaseSink, list *C.GstBufferList) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
PrepareList(self *GstBaseSink, bufferList *gst.BufferList) gst.FlowReturn
}) iface := subclass.(interface {
ret = iface.PrepareList(ToGstBaseSink(gObject), gst.ToGstBufferList(unsafe.Pointer(list))) PrepareList(self *GstBaseSink, bufferList *gst.BufferList) gst.FlowReturn
}) })
ret = iface.PrepareList(goBaseSink, gst.ToGstBufferList(unsafe.Pointer(list)))
return C.GstFlowReturn(ret) return C.GstFlowReturn(ret)
} }
//export goGstBaseSinkPreroll //export goGstBaseSinkPreroll
func goGstBaseSinkPreroll(sink *C.GstBaseSink, buf *C.GstBuffer) C.GstFlowReturn { func goGstBaseSinkPreroll(sink *C.GstBaseSink, buf *C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
Preroll(self *GstBaseSink, buffer *gst.Buffer) gst.FlowReturn
}) iface := subclass.(interface {
ret = iface.Preroll(ToGstBaseSink(gObject), gst.ToGstBuffer(unsafe.Pointer(buf))) Preroll(self *GstBaseSink, buffer *gst.Buffer) gst.FlowReturn
}) })
ret = iface.Preroll(goBaseSink, gst.ToGstBuffer(unsafe.Pointer(buf)))
return C.GstFlowReturn(ret) return C.GstFlowReturn(ret)
} }
//export goGstBaseSinkProposeAllocation //export goGstBaseSinkProposeAllocation
func goGstBaseSinkProposeAllocation(sink *C.GstBaseSink, query *C.GstQuery) C.gboolean { func goGstBaseSinkProposeAllocation(sink *C.GstBaseSink, query *C.GstQuery) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
ProposeAllocation(self *GstBaseSink, query *gst.Query) bool
}) iface := subclass.(interface {
ret = iface.ProposeAllocation(ToGstBaseSink(gObject), gst.ToGstQuery(unsafe.Pointer(query))) ProposeAllocation(self *GstBaseSink, query *gst.Query) bool
}) })
ret = iface.ProposeAllocation(goBaseSink, gst.ToGstQuery(unsafe.Pointer(query)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseSinkQuery //export goGstBaseSinkQuery
func goGstBaseSinkQuery(sink *C.GstBaseSink, query *C.GstQuery) C.gboolean { func goGstBaseSinkQuery(sink *C.GstBaseSink, query *C.GstQuery) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
Query(self *GstBaseSink, query *gst.Query) bool
}) iface := subclass.(interface {
ret = iface.Query(ToGstBaseSink(gObject), gst.ToGstQuery(unsafe.Pointer(query))) Query(self *GstBaseSink, query *gst.Query) bool
}) })
ret = iface.Query(goBaseSink, gst.ToGstQuery(unsafe.Pointer(query)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseSinkRender //export goGstBaseSinkRender
func goGstBaseSinkRender(sink *C.GstBaseSink, buf *C.GstBuffer) C.GstFlowReturn { func goGstBaseSinkRender(sink *C.GstBaseSink, buf *C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
Render(self *GstBaseSink, buffer *gst.Buffer) gst.FlowReturn
}) iface := subclass.(interface {
ret = iface.Render(ToGstBaseSink(gObject), gst.ToGstBuffer(unsafe.Pointer(buf))) Render(self *GstBaseSink, buffer *gst.Buffer) gst.FlowReturn
}) })
ret = iface.Render(goBaseSink, gst.ToGstBuffer(unsafe.Pointer(buf)))
return C.GstFlowReturn(ret) return C.GstFlowReturn(ret)
} }
//export goGstBaseSinkRenderList //export goGstBaseSinkRenderList
func goGstBaseSinkRenderList(sink *C.GstBaseSink, buf *C.GstBufferList) C.GstFlowReturn { func goGstBaseSinkRenderList(sink *C.GstBaseSink, buf *C.GstBufferList) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
RenderList(self *GstBaseSink, bufferList *gst.BufferList) gst.FlowReturn
}) iface := subclass.(interface {
ret = iface.RenderList(ToGstBaseSink(gObject), gst.ToGstBufferList(unsafe.Pointer(buf))) RenderList(self *GstBaseSink, bufferList *gst.BufferList) gst.FlowReturn
}) })
ret = iface.RenderList(goBaseSink, gst.ToGstBufferList(unsafe.Pointer(buf)))
return C.GstFlowReturn(ret) return C.GstFlowReturn(ret)
} }
//export goGstBaseSinkSetCaps //export goGstBaseSinkSetCaps
func goGstBaseSinkSetCaps(sink *C.GstBaseSink, caps *C.GstCaps) C.gboolean { func goGstBaseSinkSetCaps(sink *C.GstBaseSink, caps *C.GstCaps) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
SetCaps(self *GstBaseSink, caps *gst.Caps) bool
}) iface := subclass.(interface {
ret = iface.SetCaps(ToGstBaseSink(gObject), gst.ToGstCaps(unsafe.Pointer(caps))) SetCaps(self *GstBaseSink, caps *gst.Caps) bool
}) })
ret = iface.SetCaps(goBaseSink, gst.ToGstCaps(unsafe.Pointer(caps)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseSinkStart //export goGstBaseSinkStart
func goGstBaseSinkStart(sink *C.GstBaseSink) C.gboolean { func goGstBaseSinkStart(sink *C.GstBaseSink) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
Start(self *GstBaseSink) bool
}) iface := subclass.(interface {
ret = iface.Start(ToGstBaseSink(gObject)) Start(self *GstBaseSink) bool
}) })
ret = iface.Start(goBaseSink)
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseSinkStop //export goGstBaseSinkStop
func goGstBaseSinkStop(sink *C.GstBaseSink) C.gboolean { func goGstBaseSinkStop(sink *C.GstBaseSink) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
Stop(self *GstBaseSink) bool
}) iface := subclass.(interface {
ret = iface.Stop(ToGstBaseSink(gObject)) Stop(self *GstBaseSink) bool
}) })
ret = iface.Stop(goBaseSink)
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseSinkUnlock //export goGstBaseSinkUnlock
func goGstBaseSinkUnlock(sink *C.GstBaseSink) C.gboolean { func goGstBaseSinkUnlock(sink *C.GstBaseSink) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
Unlock(self *GstBaseSink) bool
}) iface := subclass.(interface {
ret = iface.Unlock(ToGstBaseSink(gObject)) Unlock(self *GstBaseSink) bool
}) })
ret = iface.Unlock(goBaseSink)
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseSinkUnlockStop //export goGstBaseSinkUnlockStop
func goGstBaseSinkUnlockStop(sink *C.GstBaseSink) C.gboolean { func goGstBaseSinkUnlockStop(sink *C.GstBaseSink) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
UnlockStop(self *GstBaseSink) bool
}) iface := subclass.(interface {
ret = iface.UnlockStop(ToGstBaseSink(gObject)) UnlockStop(self *GstBaseSink) bool
}) })
ret = iface.UnlockStop(goBaseSink)
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseSinkWaitEvent //export goGstBaseSinkWaitEvent
func goGstBaseSinkWaitEvent(sink *C.GstBaseSink, event *C.GstEvent) C.GstFlowReturn { func goGstBaseSinkWaitEvent(sink *C.GstBaseSink, event *C.GstEvent) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSink := ToGstBaseSink(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(sink))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(sink))
WaitEvent(self *GstBaseSink, event *gst.Event) gst.FlowReturn
}) iface := subclass.(interface {
ret = iface.WaitEvent(ToGstBaseSink(gObject), gst.ToGstEvent(unsafe.Pointer(event))) WaitEvent(self *GstBaseSink, event *gst.Event) gst.FlowReturn
}) })
ret = iface.WaitEvent(goBaseSink, gst.ToGstEvent(unsafe.Pointer(event)))
return C.GstFlowReturn(ret) return C.GstFlowReturn(ret)
} }

View File

@@ -14,12 +14,15 @@ import (
//export goGstBaseSrcGetCaps //export goGstBaseSrcGetCaps
func goGstBaseSrcGetCaps(src *C.GstBaseSrc, filter *C.GstCaps) *C.GstCaps { func goGstBaseSrcGetCaps(src *C.GstBaseSrc, filter *C.GstCaps) *C.GstCaps {
var caps *gst.Caps var caps *gst.Caps
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
iface := goObject.(interface { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
GetCaps(*GstBaseSrc, *gst.Caps) *gst.Caps subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
})
caps = iface.GetCaps(ToGstBaseSrc(gObject), gst.ToGstCaps(unsafe.Pointer(filter))) iface := subclass.(interface {
GetCaps(*GstBaseSrc, *gst.Caps) *gst.Caps
}) })
caps = iface.GetCaps(goBaseSrc, gst.ToGstCaps(unsafe.Pointer(filter)))
if caps == nil { if caps == nil {
return nil return nil
} }
@@ -29,24 +32,28 @@ func goGstBaseSrcGetCaps(src *C.GstBaseSrc, filter *C.GstCaps) *C.GstCaps {
//export goGstBaseSrcNegotiate //export goGstBaseSrcNegotiate
func goGstBaseSrcNegotiate(src *C.GstBaseSrc) C.gboolean { func goGstBaseSrcNegotiate(src *C.GstBaseSrc) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Negotiate(*GstBaseSrc) bool
}) iface := subclass.(interface {
ret = iface.Negotiate(ToGstBaseSrc(gObject)) Negotiate(*GstBaseSrc) bool
}) })
ret = iface.Negotiate(goBaseSrc)
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseSrcFixate //export goGstBaseSrcFixate
func goGstBaseSrcFixate(src *C.GstBaseSrc, filter *C.GstCaps) *C.GstCaps { func goGstBaseSrcFixate(src *C.GstBaseSrc, filter *C.GstCaps) *C.GstCaps {
var caps *gst.Caps var caps *gst.Caps
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Fixate(*GstBaseSrc, *gst.Caps) *gst.Caps
}) iface := subclass.(interface {
caps = iface.Fixate(ToGstBaseSrc(gObject), gst.ToGstCaps(unsafe.Pointer(filter))) Fixate(*GstBaseSrc, *gst.Caps) *gst.Caps
}) })
caps = iface.Fixate(goBaseSrc, gst.ToGstCaps(unsafe.Pointer(filter)))
if caps == nil { if caps == nil {
return nil return nil
} }
@@ -56,60 +63,70 @@ func goGstBaseSrcFixate(src *C.GstBaseSrc, filter *C.GstCaps) *C.GstCaps {
//export goGstBaseSrcSetCaps //export goGstBaseSrcSetCaps
func goGstBaseSrcSetCaps(src *C.GstBaseSrc, caps *C.GstCaps) C.gboolean { func goGstBaseSrcSetCaps(src *C.GstBaseSrc, caps *C.GstCaps) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
SetCaps(*GstBaseSrc, *gst.Caps) bool
}) iface := subclass.(interface {
ret = iface.SetCaps(ToGstBaseSrc(gObject), gst.ToGstCaps(unsafe.Pointer(caps))) SetCaps(*GstBaseSrc, *gst.Caps) bool
}) })
ret = iface.SetCaps(goBaseSrc, gst.ToGstCaps(unsafe.Pointer(caps)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseSrcDecideAllocation //export goGstBaseSrcDecideAllocation
func goGstBaseSrcDecideAllocation(src *C.GstBaseSrc, query *C.GstQuery) C.gboolean { func goGstBaseSrcDecideAllocation(src *C.GstBaseSrc, query *C.GstQuery) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
DecideAllocation(*GstBaseSrc, *gst.Query) bool
}) iface := subclass.(interface {
ret = iface.DecideAllocation(ToGstBaseSrc(gObject), gst.ToGstQuery(unsafe.Pointer(query))) DecideAllocation(*GstBaseSrc, *gst.Query) bool
}) })
ret = iface.DecideAllocation(goBaseSrc, gst.ToGstQuery(unsafe.Pointer(query)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseSrcStart //export goGstBaseSrcStart
func goGstBaseSrcStart(src *C.GstBaseSrc) C.gboolean { func goGstBaseSrcStart(src *C.GstBaseSrc) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Start(*GstBaseSrc) bool
}) iface := subclass.(interface {
ret = iface.Start(ToGstBaseSrc(gObject)) Start(*GstBaseSrc) bool
}) })
ret = iface.Start(goBaseSrc)
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseSrcStop //export goGstBaseSrcStop
func goGstBaseSrcStop(src *C.GstBaseSrc) C.gboolean { func goGstBaseSrcStop(src *C.GstBaseSrc) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Stop(*GstBaseSrc) bool
}) iface := subclass.(interface {
ret = iface.Stop(ToGstBaseSrc(gObject)) Stop(*GstBaseSrc) bool
}) })
ret = iface.Stop(goBaseSrc)
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseSrcGetTimes //export goGstBaseSrcGetTimes
func goGstBaseSrcGetTimes(src *C.GstBaseSrc, buf *C.GstBuffer, start *C.GstClockTime, end *C.GstClockTime) { func goGstBaseSrcGetTimes(src *C.GstBaseSrc, buf *C.GstBuffer, start *C.GstClockTime, end *C.GstClockTime) {
var gostart, goend time.Duration var gostart, goend time.Duration
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
GetTimes(*GstBaseSrc, *gst.Buffer) (start, end time.Duration) // should this be a ClockTime?
}) iface := subclass.(interface {
gostart, goend = iface.GetTimes(ToGstBaseSrc(gObject), gst.ToGstBuffer(unsafe.Pointer(buf))) GetTimes(*GstBaseSrc, *gst.Buffer) (start, end time.Duration) // should this be a ClockTime?
}) })
gostart, goend = iface.GetTimes(goBaseSrc, gst.ToGstBuffer(unsafe.Pointer(buf)))
*start = C.GstClockTime(gostart.Nanoseconds()) *start = C.GstClockTime(gostart.Nanoseconds())
*end = C.GstClockTime(goend.Nanoseconds()) *end = C.GstClockTime(goend.Nanoseconds())
} }
@@ -118,12 +135,14 @@ func goGstBaseSrcGetTimes(src *C.GstBaseSrc, buf *C.GstBuffer, start *C.GstClock
func goGstBaseSrcGetSize(src *C.GstBaseSrc, size *C.guint64) C.gboolean { func goGstBaseSrcGetSize(src *C.GstBaseSrc, size *C.guint64) C.gboolean {
var gosize int64 var gosize int64
var ok bool var ok bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
GetSize(*GstBaseSrc) (bool, int64)
}) iface := subclass.(interface {
ok, gosize = iface.GetSize(ToGstBaseSrc(gObject)) GetSize(*GstBaseSrc) (bool, int64)
}) })
ok, gosize = iface.GetSize(goBaseSrc)
if ok { if ok {
*size = C.guint64(gosize) *size = C.guint64(gosize)
} }
@@ -133,84 +152,98 @@ func goGstBaseSrcGetSize(src *C.GstBaseSrc, size *C.guint64) C.gboolean {
//export goGstBaseSrcIsSeekable //export goGstBaseSrcIsSeekable
func goGstBaseSrcIsSeekable(src *C.GstBaseSrc) C.gboolean { func goGstBaseSrcIsSeekable(src *C.GstBaseSrc) C.gboolean {
var ok bool var ok bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
IsSeekable(*GstBaseSrc) bool
}) iface := subclass.(interface {
ok = iface.IsSeekable(ToGstBaseSrc(gObject)) IsSeekable(*GstBaseSrc) bool
}) })
ok = iface.IsSeekable(goBaseSrc)
return gboolean(ok) return gboolean(ok)
} }
//export goGstBaseSrcPrepareSeekSegment //export goGstBaseSrcPrepareSeekSegment
func goGstBaseSrcPrepareSeekSegment(src *C.GstBaseSrc, seek *C.GstEvent, segment *C.GstSegment) C.gboolean { func goGstBaseSrcPrepareSeekSegment(src *C.GstBaseSrc, seek *C.GstEvent, segment *C.GstSegment) C.gboolean {
var ok bool var ok bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
PrepareSeekSegment(*GstBaseSrc, *gst.Event, *gst.Segment) bool
}) iface := subclass.(interface {
ok = iface.PrepareSeekSegment(ToGstBaseSrc(gObject), gst.ToGstEvent(unsafe.Pointer(seek)), gst.FromGstSegmentUnsafe(unsafe.Pointer(segment))) PrepareSeekSegment(*GstBaseSrc, *gst.Event, *gst.Segment) bool
}) })
ok = iface.PrepareSeekSegment(goBaseSrc, gst.ToGstEvent(unsafe.Pointer(seek)), gst.FromGstSegmentUnsafe(unsafe.Pointer(segment)))
return gboolean(ok) return gboolean(ok)
} }
//export goGstBaseSrcDoSeek //export goGstBaseSrcDoSeek
func goGstBaseSrcDoSeek(src *C.GstBaseSrc, segment *C.GstSegment) C.gboolean { func goGstBaseSrcDoSeek(src *C.GstBaseSrc, segment *C.GstSegment) C.gboolean {
var ok bool var ok bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
DoSeek(*GstBaseSrc, *gst.Segment) bool
}) iface := subclass.(interface {
ok = iface.DoSeek(ToGstBaseSrc(gObject), gst.ToGstSegment(unsafe.Pointer(segment))) DoSeek(*GstBaseSrc, *gst.Segment) bool
}) })
ok = iface.DoSeek(goBaseSrc, gst.ToGstSegment(unsafe.Pointer(segment)))
return gboolean(ok) return gboolean(ok)
} }
//export goGstBaseSrcUnlock //export goGstBaseSrcUnlock
func goGstBaseSrcUnlock(src *C.GstBaseSrc) C.gboolean { func goGstBaseSrcUnlock(src *C.GstBaseSrc) C.gboolean {
var ok bool var ok bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Unlock(*GstBaseSrc) bool
}) iface := subclass.(interface {
ok = iface.Unlock(ToGstBaseSrc(gObject)) Unlock(*GstBaseSrc) bool
}) })
ok = iface.Unlock(goBaseSrc)
return gboolean(ok) return gboolean(ok)
} }
//export goGstBaseSrcUnlockStop //export goGstBaseSrcUnlockStop
func goGstBaseSrcUnlockStop(src *C.GstBaseSrc) C.gboolean { func goGstBaseSrcUnlockStop(src *C.GstBaseSrc) C.gboolean {
var ok bool var ok bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
UnlockStop(*GstBaseSrc) bool
}) iface := subclass.(interface {
ok = iface.UnlockStop(ToGstBaseSrc(gObject)) UnlockStop(*GstBaseSrc) bool
}) })
ok = iface.UnlockStop(goBaseSrc)
return gboolean(ok) return gboolean(ok)
} }
//export goGstBaseSrcQuery //export goGstBaseSrcQuery
func goGstBaseSrcQuery(src *C.GstBaseSrc, query *C.GstQuery) C.gboolean { func goGstBaseSrcQuery(src *C.GstBaseSrc, query *C.GstQuery) C.gboolean {
var ok bool var ok bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Query(*GstBaseSrc, *gst.Query) bool
}) iface := subclass.(interface {
ok = iface.Query(ToGstBaseSrc(gObject), gst.ToGstQuery(unsafe.Pointer(query))) Query(*GstBaseSrc, *gst.Query) bool
}) })
ok = iface.Query(goBaseSrc, gst.ToGstQuery(unsafe.Pointer(query)))
return gboolean(ok) return gboolean(ok)
} }
//export goGstBaseSrcEvent //export goGstBaseSrcEvent
func goGstBaseSrcEvent(src *C.GstBaseSrc, event *C.GstEvent) C.gboolean { func goGstBaseSrcEvent(src *C.GstBaseSrc, event *C.GstEvent) C.gboolean {
var ok bool var ok bool
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Event(*GstBaseSrc, *gst.Event) bool
}) iface := subclass.(interface {
ok = iface.Event(ToGstBaseSrc(gObject), gst.ToGstEvent(unsafe.Pointer(event))) Event(*GstBaseSrc, *gst.Event) bool
}) })
ok = iface.Event(goBaseSrc, gst.ToGstEvent(unsafe.Pointer(event)))
return gboolean(ok) return gboolean(ok)
} }
@@ -218,12 +251,14 @@ func goGstBaseSrcEvent(src *C.GstBaseSrc, event *C.GstEvent) C.gboolean {
func goGstBaseSrcCreate(src *C.GstBaseSrc, offset C.guint64, size C.guint, buf **C.GstBuffer) C.GstFlowReturn { func goGstBaseSrcCreate(src *C.GstBaseSrc, offset C.guint64, size C.guint, buf **C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
var gobuf *gst.Buffer var gobuf *gst.Buffer
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Create(*GstBaseSrc, uint64, uint) (gst.FlowReturn, *gst.Buffer)
}) iface := subclass.(interface {
ret, gobuf = iface.Create(ToGstBaseSrc(gObject), uint64(offset), uint(size)) Create(*GstBaseSrc, uint64, uint) (gst.FlowReturn, *gst.Buffer)
}) })
ret, gobuf = iface.Create(goBaseSrc, uint64(offset), uint(size))
if ret == gst.FlowOK { if ret == gst.FlowOK {
C.memcpy(unsafe.Pointer(*buf), unsafe.Pointer(gobuf.Instance()), C.sizeof_GstBuffer) C.memcpy(unsafe.Pointer(*buf), unsafe.Pointer(gobuf.Instance()), C.sizeof_GstBuffer)
} }
@@ -234,12 +269,14 @@ func goGstBaseSrcCreate(src *C.GstBaseSrc, offset C.guint64, size C.guint, buf *
func goGstBaseSrcAlloc(src *C.GstBaseSrc, offset C.guint64, size C.guint, buf **C.GstBuffer) C.GstFlowReturn { func goGstBaseSrcAlloc(src *C.GstBaseSrc, offset C.guint64, size C.guint, buf **C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
var gobuf *gst.Buffer var gobuf *gst.Buffer
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Alloc(*GstBaseSrc, uint64, uint) (gst.FlowReturn, *gst.Buffer)
}) iface := subclass.(interface {
ret, gobuf = iface.Alloc(ToGstBaseSrc(gObject), uint64(offset), uint(size)) Alloc(*GstBaseSrc, uint64, uint) (gst.FlowReturn, *gst.Buffer)
}) })
ret, gobuf = iface.Alloc(goBaseSrc, uint64(offset), uint(size))
if ret == gst.FlowOK { if ret == gst.FlowOK {
C.memcpy(unsafe.Pointer(*buf), unsafe.Pointer(gobuf.Instance()), C.sizeof_GstBuffer) C.memcpy(unsafe.Pointer(*buf), unsafe.Pointer(gobuf.Instance()), C.sizeof_GstBuffer)
} }
@@ -249,11 +286,13 @@ func goGstBaseSrcAlloc(src *C.GstBaseSrc, offset C.guint64, size C.guint, buf **
//export goGstBaseSrcFill //export goGstBaseSrcFill
func goGstBaseSrcFill(src *C.GstBaseSrc, offset C.guint64, size C.guint, buf *C.GstBuffer) C.GstFlowReturn { func goGstBaseSrcFill(src *C.GstBaseSrc, offset C.guint64, size C.guint, buf *C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseSrc := ToGstBaseSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Fill(*GstBaseSrc, uint64, uint, *gst.Buffer) gst.FlowReturn
}) iface := subclass.(interface {
ret = iface.Fill(ToGstBaseSrc(gObject), uint64(offset), uint(size), gst.ToGstBuffer(unsafe.Pointer(buf))) Fill(*GstBaseSrc, uint64, uint, *gst.Buffer) gst.FlowReturn
}) })
ret = iface.Fill(goBaseSrc, uint64(offset), uint(size), gst.ToGstBuffer(unsafe.Pointer(buf)))
return C.GstFlowReturn(ret) return C.GstFlowReturn(ret)
} }

View File

@@ -18,6 +18,22 @@ setGstBaseTransformTransformIPOnPassthrough (GstBaseTransform * obj, gboolean en
GstBaseTransformClass * klass = toGstBaseTransformClass(g_type_class_peek_parent(this_class)); GstBaseTransformClass * klass = toGstBaseTransformClass(g_type_class_peek_parent(this_class));
klass->transform_ip_on_passthrough = enabled; klass->transform_ip_on_passthrough = enabled;
} }
gboolean
gstBaseTransformParentSrcEvent (GstBaseTransform * obj, GstEvent * event)
{
GObjectClass * this_class = G_OBJECT_GET_CLASS(G_OBJECT(obj));
GstBaseTransformClass * parent = toGstBaseTransformClass(g_type_class_peek_parent(this_class));
return parent->src_event(obj, event);
}
gboolean
gstBaseTransformParentSinkEvent (GstBaseTransform * obj, GstEvent * event)
{
GObjectClass * this_class = G_OBJECT_GET_CLASS(G_OBJECT(obj));
GstBaseTransformClass * parent = toGstBaseTransformClass(g_type_class_peek_parent(this_class));
return parent->sink_event(obj, event);
}
*/ */
import "C" import "C"
@@ -196,3 +212,93 @@ func (g *GstBaseTransform) UpdateSrcCaps(caps *gst.Caps) {
(*C.GstCaps)(unsafe.Pointer(caps.Instance())), (*C.GstCaps)(unsafe.Pointer(caps.Instance())),
) )
} }
func (g *GstBaseTransform) ParentAcceptCaps(direction gst.PadDirection, caps *gst.Caps) bool {
panic("not implemented")
}
func (g *GstBaseTransform) ParentBeforeTransform(buffer *gst.Buffer) {
panic("not implemented")
}
func (g *GstBaseTransform) ParentCopyMetadata(input, output *gst.Buffer) bool {
panic("not implemented")
}
func (g *GstBaseTransform) ParentDecideAllocation(query *gst.Query) bool {
panic("not implemented")
}
func (g *GstBaseTransform) ParentFilterMeta(query *gst.Query, api glib.Type, params *gst.Structure) bool {
panic("not implemented")
}
func (g *GstBaseTransform) ParentFixateCaps(directon gst.PadDirection, caps *gst.Caps, othercaps *gst.Caps) *gst.Caps {
panic("not implemented")
}
func (g *GstBaseTransform) ParentGenerateOutput(gst.FlowReturn, *gst.Buffer) {
panic("not implemented")
}
func (g *GstBaseTransform) ParentGetUnitSize(caps *gst.Caps) (ok bool, size int64) {
panic("not implemented")
}
func (g *GstBaseTransform) ParentPrepareOutputBuffer(input *gst.Buffer) (gst.FlowReturn, *gst.Buffer) {
panic("not implemented")
}
func (g *GstBaseTransform) ParentProposeAllocation(decideQuery, query *gst.Query) bool {
panic("not implemented")
}
func (g *GstBaseTransform) ParentQuery(direction gst.PadDirection, query *gst.Query) bool {
panic("not implemented")
}
func (g *GstBaseTransform) ParentSetCaps(incaps, outcaps *gst.Caps) bool {
panic("not implemented")
}
// ParentSrcEvent chains the event up to the parent class
func (g *GstBaseTransform) ParentSrcEvent(event *gst.Event) bool {
return gobool(C.gstBaseTransformParentSrcEvent(g.Instance(), (*C.GstEvent)(unsafe.Pointer(event.Instance()))))
}
// ParentSinkEvent chains the event up to the parent class
func (g *GstBaseTransform) ParentSinkEvent(event *gst.Event) bool {
return gobool(C.gstBaseTransformParentSinkEvent(g.Instance(), (*C.GstEvent)(unsafe.Pointer(event.Instance()))))
}
func (g *GstBaseTransform) ParentStart(bool) {
panic("not implemented")
}
func (g *GstBaseTransform) ParentStop(bool) {
panic("not implemented")
}
func (g *GstBaseTransform) ParentSubmitInputBuffer(isDiscont bool, input *gst.Buffer) gst.FlowReturn {
panic("not implemented")
}
func (g *GstBaseTransform) ParentTransform(inbuf, outbuf *gst.Buffer) gst.FlowReturn {
panic("not implemented")
}
func (g *GstBaseTransform) ParentTransformCaps(direction gst.PadDirection, caps, filter *gst.Caps) *gst.Caps {
panic("not implemented")
}
func (g *GstBaseTransform) ParentTransformIP(buf *gst.Buffer) gst.FlowReturn {
panic("not implemented")
}
func (g *GstBaseTransform) ParentTransformMeta(outbuf *gst.Buffer, meta *gst.Meta, inbuf *gst.Buffer) bool {
panic("not implemented")
}
func (g *GstBaseTransform) ParentTransformSize(direction gst.PadDirection, caps *gst.Caps, size int64, othercaps *gst.Caps) (ok bool, othersize int64) {
panic("not implemented")
}

View File

@@ -15,70 +15,80 @@ import (
//export goGstBaseTransformAcceptCaps //export goGstBaseTransformAcceptCaps
func goGstBaseTransformAcceptCaps(self *C.GstBaseTransform, direction C.GstPadDirection, caps *C.GstCaps) C.gboolean { func goGstBaseTransformAcceptCaps(self *C.GstBaseTransform, direction C.GstPadDirection, caps *C.GstCaps) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
AcceptCaps(*GstBaseTransform, gst.PadDirection, *gst.Caps) bool
}) iface := subclass.(interface {
ret = iface.AcceptCaps(ToGstBaseTransform(self), gst.PadDirection(direction), gst.ToGstCaps(unsafe.Pointer(caps))) AcceptCaps(*GstBaseTransform, gst.PadDirection, *gst.Caps) bool
}) })
ret = iface.AcceptCaps(goBaseT, gst.PadDirection(direction), gst.ToGstCaps(unsafe.Pointer(caps)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseTransformBeforeTransform //export goGstBaseTransformBeforeTransform
func goGstBaseTransformBeforeTransform(self *C.GstBaseTransform, buffer *C.GstBuffer) { func goGstBaseTransformBeforeTransform(self *C.GstBaseTransform, buffer *C.GstBuffer) {
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
BeforeTransform(*GstBaseTransform, *gst.Buffer)
}) iface := subclass.(interface {
iface.BeforeTransform(ToGstBaseTransform(self), gst.ToGstBuffer(unsafe.Pointer(buffer))) BeforeTransform(*GstBaseTransform, *gst.Buffer)
}) })
iface.BeforeTransform(goBaseT, gst.ToGstBuffer(unsafe.Pointer(buffer)))
} }
//export goGstBaseTransformCopyMetadata //export goGstBaseTransformCopyMetadata
func goGstBaseTransformCopyMetadata(self *C.GstBaseTransform, input, output *C.GstBuffer) C.gboolean { func goGstBaseTransformCopyMetadata(self *C.GstBaseTransform, input, output *C.GstBuffer) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
CopyMetadata(self *GstBaseTransform, input, output *gst.Buffer) bool
}) iface := subclass.(interface {
ret = iface.CopyMetadata(ToGstBaseTransform(self), gst.ToGstBuffer(unsafe.Pointer(input)), gst.ToGstBuffer(unsafe.Pointer(output))) CopyMetadata(self *GstBaseTransform, input, output *gst.Buffer) bool
}) })
ret = iface.CopyMetadata(goBaseT, gst.ToGstBuffer(unsafe.Pointer(input)), gst.ToGstBuffer(unsafe.Pointer(output)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseTransformDecideAllocation //export goGstBaseTransformDecideAllocation
func goGstBaseTransformDecideAllocation(self *C.GstBaseTransform, query *C.GstQuery) C.gboolean { func goGstBaseTransformDecideAllocation(self *C.GstBaseTransform, query *C.GstQuery) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
DecideAllocation(self *GstBaseTransform, query *gst.Query) bool
}) iface := subclass.(interface {
ret = iface.DecideAllocation(ToGstBaseTransform(self), gst.ToGstQuery(unsafe.Pointer(query))) DecideAllocation(self *GstBaseTransform, query *gst.Query) bool
}) })
ret = iface.DecideAllocation(goBaseT, gst.ToGstQuery(unsafe.Pointer(query)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseTransformFilterMeta //export goGstBaseTransformFilterMeta
func goGstBaseTransformFilterMeta(self *C.GstBaseTransform, query *C.GstQuery, api C.GType, params *C.GstStructure) C.gboolean { func goGstBaseTransformFilterMeta(self *C.GstBaseTransform, query *C.GstQuery, api C.GType, params *C.GstStructure) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
FilterMeta(self *GstBaseTransform, query *gst.Query, api glib.Type, params *gst.Structure) bool
}) iface := subclass.(interface {
ret = iface.FilterMeta(ToGstBaseTransform(self), gst.ToGstQuery(unsafe.Pointer(query)), glib.Type(api), gst.FromGstStructureUnsafe(unsafe.Pointer(params))) FilterMeta(self *GstBaseTransform, query *gst.Query, api glib.Type, params *gst.Structure) bool
}) })
ret = iface.FilterMeta(goBaseT, gst.ToGstQuery(unsafe.Pointer(query)), glib.Type(api), gst.FromGstStructureUnsafe(unsafe.Pointer(params)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseTransformFixateCaps //export goGstBaseTransformFixateCaps
func goGstBaseTransformFixateCaps(self *C.GstBaseTransform, direction C.GstPadDirection, caps, othercaps *C.GstCaps) *C.GstCaps { func goGstBaseTransformFixateCaps(self *C.GstBaseTransform, direction C.GstPadDirection, caps, othercaps *C.GstCaps) *C.GstCaps {
var ret *gst.Caps var ret *gst.Caps
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
FixateCaps(self *GstBaseTransform, directon gst.PadDirection, caps *gst.Caps, othercaps *gst.Caps) *gst.Caps
}) iface := subclass.(interface {
ret = iface.FixateCaps(ToGstBaseTransform(self), gst.PadDirection(direction), gst.ToGstCaps(unsafe.Pointer(caps)), gst.ToGstCaps(unsafe.Pointer(othercaps))) FixateCaps(self *GstBaseTransform, directon gst.PadDirection, caps *gst.Caps, othercaps *gst.Caps) *gst.Caps
}) })
ret = iface.FixateCaps(goBaseT, gst.PadDirection(direction), gst.ToGstCaps(unsafe.Pointer(caps)), gst.ToGstCaps(unsafe.Pointer(othercaps)))
if ret == nil { if ret == nil {
return nil return nil
} }
@@ -89,12 +99,14 @@ func goGstBaseTransformFixateCaps(self *C.GstBaseTransform, direction C.GstPadDi
func goGstBaseTransformGenerateOutput(self *C.GstBaseTransform, buf **C.GstBuffer) C.GstFlowReturn { func goGstBaseTransformGenerateOutput(self *C.GstBaseTransform, buf **C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
var out *gst.Buffer var out *gst.Buffer
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
GenerateOutput(self *GstBaseTransform) (gst.FlowReturn, *gst.Buffer)
}) iface := subclass.(interface {
ret, out = iface.GenerateOutput(ToGstBaseTransform(self)) GenerateOutput(self *GstBaseTransform) (gst.FlowReturn, *gst.Buffer)
}) })
ret, out = iface.GenerateOutput(goBaseT)
if out != nil { if out != nil {
C.memcpy(unsafe.Pointer(*buf), unsafe.Pointer(out.Instance()), C.sizeof_GstBuffer) C.memcpy(unsafe.Pointer(*buf), unsafe.Pointer(out.Instance()), C.sizeof_GstBuffer)
} }
@@ -105,12 +117,14 @@ func goGstBaseTransformGenerateOutput(self *C.GstBaseTransform, buf **C.GstBuffe
func goGstBaseTransformGetUnitSize(self *C.GstBaseTransform, caps *C.GstCaps, size *C.gsize) C.gboolean { func goGstBaseTransformGetUnitSize(self *C.GstBaseTransform, caps *C.GstCaps, size *C.gsize) C.gboolean {
var ret bool var ret bool
var out int64 var out int64
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
GetUnitSize(self *GstBaseTransform, caps *gst.Caps) (ok bool, size int64)
}) iface := subclass.(interface {
ret, out = iface.GetUnitSize(ToGstBaseTransform(self), gst.ToGstCaps(unsafe.Pointer(caps))) GetUnitSize(self *GstBaseTransform, caps *gst.Caps) (ok bool, size int64)
}) })
ret, out = iface.GetUnitSize(goBaseT, gst.ToGstCaps(unsafe.Pointer(caps)))
if ret { if ret {
*size = C.gsize(out) *size = C.gsize(out)
} }
@@ -121,12 +135,14 @@ func goGstBaseTransformGetUnitSize(self *C.GstBaseTransform, caps *C.GstCaps, si
func goGstBaseTransformPrepareOutputBuffer(self *C.GstBaseTransform, input *C.GstBuffer, outbuf **C.GstBuffer) C.GstFlowReturn { func goGstBaseTransformPrepareOutputBuffer(self *C.GstBaseTransform, input *C.GstBuffer, outbuf **C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
var out *gst.Buffer var out *gst.Buffer
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
PrepareOutputBuffer(self *GstBaseTransform, input *gst.Buffer) (gst.FlowReturn, *gst.Buffer)
}) iface := subclass.(interface {
ret, out = iface.PrepareOutputBuffer(ToGstBaseTransform(self), gst.ToGstBuffer(unsafe.Pointer(input))) PrepareOutputBuffer(self *GstBaseTransform, input *gst.Buffer) (gst.FlowReturn, *gst.Buffer)
}) })
ret, out = iface.PrepareOutputBuffer(goBaseT, gst.ToGstBuffer(unsafe.Pointer(input)))
if out != nil { if out != nil {
C.memcpy(unsafe.Pointer(*outbuf), unsafe.Pointer(out.Instance()), C.sizeof_GstBuffer) C.memcpy(unsafe.Pointer(*outbuf), unsafe.Pointer(out.Instance()), C.sizeof_GstBuffer)
} }
@@ -136,120 +152,143 @@ func goGstBaseTransformPrepareOutputBuffer(self *C.GstBaseTransform, input *C.Gs
//export goGstBaseTransformProposeAllocation //export goGstBaseTransformProposeAllocation
func goGstBaseTransformProposeAllocation(self *C.GstBaseTransform, decide, query *C.GstQuery) C.gboolean { func goGstBaseTransformProposeAllocation(self *C.GstBaseTransform, decide, query *C.GstQuery) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
ProposeAllocation(self *GstBaseTransform, decideQuery, query *gst.Query) bool
}) iface := subclass.(interface {
ret = iface.ProposeAllocation(ToGstBaseTransform(self), gst.ToGstQuery(unsafe.Pointer(decide)), gst.ToGstQuery(unsafe.Pointer(query))) ProposeAllocation(self *GstBaseTransform, decideQuery, query *gst.Query) bool
}) })
ret = iface.ProposeAllocation(goBaseT, gst.ToGstQuery(unsafe.Pointer(decide)), gst.ToGstQuery(unsafe.Pointer(query)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseTransformQuery //export goGstBaseTransformQuery
func goGstBaseTransformQuery(self *C.GstBaseTransform, direction C.GstPadDirection, query *C.GstQuery) C.gboolean { func goGstBaseTransformQuery(self *C.GstBaseTransform, direction C.GstPadDirection, query *C.GstQuery) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
Query(self *GstBaseTransform, direction gst.PadDirection, query *gst.Query) bool
}) iface := subclass.(interface {
ret = iface.Query(ToGstBaseTransform(self), gst.PadDirection(direction), gst.ToGstQuery(unsafe.Pointer(query))) Query(self *GstBaseTransform, direction gst.PadDirection, query *gst.Query) bool
}) })
ret = iface.Query(goBaseT, gst.PadDirection(direction), gst.ToGstQuery(unsafe.Pointer(query)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseTransformSetCaps //export goGstBaseTransformSetCaps
func goGstBaseTransformSetCaps(self *C.GstBaseTransform, incaps, outcaps *C.GstCaps) C.gboolean { func goGstBaseTransformSetCaps(self *C.GstBaseTransform, incaps, outcaps *C.GstCaps) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
SetCaps(self *GstBaseTransform, incaps, outcaps *gst.Caps) bool
}) iface := subclass.(interface {
ret = iface.SetCaps(ToGstBaseTransform(self), gst.ToGstCaps(unsafe.Pointer(incaps)), gst.ToGstCaps(unsafe.Pointer(outcaps))) SetCaps(self *GstBaseTransform, incaps, outcaps *gst.Caps) bool
}) })
ret = iface.SetCaps(goBaseT, gst.ToGstCaps(unsafe.Pointer(incaps)), gst.ToGstCaps(unsafe.Pointer(outcaps)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseTransformSinkEvent //export goGstBaseTransformSinkEvent
func goGstBaseTransformSinkEvent(self *C.GstBaseTransform, event *C.GstEvent) C.gboolean { func goGstBaseTransformSinkEvent(self *C.GstBaseTransform, event *C.GstEvent) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
iface := goObject.(interface { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
SinkEvent(self *GstBaseTransform, event *gst.Event) bool subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
})
ret = iface.SinkEvent(ToGstBaseTransform(self), gst.ToGstEvent(unsafe.Pointer(event))) iface := subclass.(interface {
SinkEvent(self *GstBaseTransform, event *gst.Event) bool
}) })
ret = iface.SinkEvent(goBaseT, gst.ToGstEvent(unsafe.Pointer(event)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseTransformSrcEvent //export goGstBaseTransformSrcEvent
func goGstBaseTransformSrcEvent(self *C.GstBaseTransform, event *C.GstEvent) C.gboolean { func goGstBaseTransformSrcEvent(self *C.GstBaseTransform, event *C.GstEvent) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
iface := goObject.(interface { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
SrcEvent(self *GstBaseTransform, event *gst.Event) bool subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
})
ret = iface.SrcEvent(ToGstBaseTransform(self), gst.ToGstEvent(unsafe.Pointer(event))) iface := subclass.(interface {
SrcEvent(self *GstBaseTransform, event *gst.Event) bool
}) })
ret = iface.SrcEvent(goBaseT, gst.ToGstEvent(unsafe.Pointer(event)))
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseTransformStart //export goGstBaseTransformStart
func goGstBaseTransformStart(self *C.GstBaseTransform) C.gboolean { func goGstBaseTransformStart(self *C.GstBaseTransform) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
Start(self *GstBaseTransform) bool
}) iface := subclass.(interface {
ret = iface.Start(ToGstBaseTransform(self)) Start(self *GstBaseTransform) bool
}) })
ret = iface.Start(goBaseT)
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseTransformStop //export goGstBaseTransformStop
func goGstBaseTransformStop(self *C.GstBaseTransform) C.gboolean { func goGstBaseTransformStop(self *C.GstBaseTransform) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
Stop(self *GstBaseTransform) bool
}) iface := subclass.(interface {
ret = iface.Stop(ToGstBaseTransform(self)) Stop(self *GstBaseTransform) bool
}) })
ret = iface.Stop(goBaseT)
return gboolean(ret) return gboolean(ret)
} }
//export goGstBaseTransformSubmitInputBuffer //export goGstBaseTransformSubmitInputBuffer
func goGstBaseTransformSubmitInputBuffer(self *C.GstBaseTransform, isDiscont C.gboolean, input *C.GstBuffer) C.GstFlowReturn { func goGstBaseTransformSubmitInputBuffer(self *C.GstBaseTransform, isDiscont C.gboolean, input *C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
SubmitInputBuffer(self *GstBaseTransform, isDiscont bool, input *gst.Buffer) gst.FlowReturn
}) iface := subclass.(interface {
ret = iface.SubmitInputBuffer(ToGstBaseTransform(self), gobool(isDiscont), gst.ToGstBuffer(unsafe.Pointer(input))) SubmitInputBuffer(self *GstBaseTransform, isDiscont bool, input *gst.Buffer) gst.FlowReturn
}) })
ret = iface.SubmitInputBuffer(goBaseT, gobool(isDiscont), gst.ToGstBuffer(unsafe.Pointer(input)))
return C.GstFlowReturn(ret) return C.GstFlowReturn(ret)
} }
//export goGstBaseTransformTransform //export goGstBaseTransformTransform
func goGstBaseTransformTransform(self *C.GstBaseTransform, inbuf, outbuf *C.GstBuffer) C.GstFlowReturn { func goGstBaseTransformTransform(self *C.GstBaseTransform, inbuf, outbuf *C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
Transform(self *GstBaseTransform, inbuf, outbuf *gst.Buffer) gst.FlowReturn
}) iface := subclass.(interface {
ret = iface.Transform(ToGstBaseTransform(self), gst.ToGstBuffer(unsafe.Pointer(inbuf)), gst.ToGstBuffer(unsafe.Pointer(outbuf))) Transform(self *GstBaseTransform, inbuf, outbuf *gst.Buffer) gst.FlowReturn
}) })
ret = iface.Transform(goBaseT, gst.ToGstBuffer(unsafe.Pointer(inbuf)), gst.ToGstBuffer(unsafe.Pointer(outbuf)))
return C.GstFlowReturn(ret) return C.GstFlowReturn(ret)
} }
//export goGstBaseTransformTransformCaps //export goGstBaseTransformTransformCaps
func goGstBaseTransformTransformCaps(self *C.GstBaseTransform, direction C.GstPadDirection, caps, filter *C.GstCaps) *C.GstCaps { func goGstBaseTransformTransformCaps(self *C.GstBaseTransform, direction C.GstPadDirection, caps, filter *C.GstCaps) *C.GstCaps {
var ret *gst.Caps var ret *gst.Caps
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
TransformCaps(self *GstBaseTransform, direction gst.PadDirection, caps, filter *gst.Caps) *gst.Caps
}) iface := subclass.(interface {
ret = iface.TransformCaps(ToGstBaseTransform(self), gst.PadDirection(direction), gst.ToGstCaps(unsafe.Pointer(caps)), gst.ToGstCaps(unsafe.Pointer(filter))) TransformCaps(self *GstBaseTransform, direction gst.PadDirection, caps, filter *gst.Caps) *gst.Caps
}) })
ret = iface.TransformCaps(goBaseT, gst.PadDirection(direction), gst.ToGstCaps(unsafe.Pointer(caps)), gst.ToGstCaps(unsafe.Pointer(filter)))
if ret == nil { if ret == nil {
return nil return nil
} }
@@ -259,24 +298,28 @@ func goGstBaseTransformTransformCaps(self *C.GstBaseTransform, direction C.GstPa
//export goGstBaseTransformTransformIP //export goGstBaseTransformTransformIP
func goGstBaseTransformTransformIP(self *C.GstBaseTransform, buf *C.GstBuffer) C.GstFlowReturn { func goGstBaseTransformTransformIP(self *C.GstBaseTransform, buf *C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
TransformIP(self *GstBaseTransform, buf *gst.Buffer) gst.FlowReturn
}) iface := subclass.(interface {
ret = iface.TransformIP(ToGstBaseTransform(self), gst.ToGstBuffer(unsafe.Pointer(buf))) TransformIP(self *GstBaseTransform, buf *gst.Buffer) gst.FlowReturn
}) })
ret = iface.TransformIP(goBaseT, gst.ToGstBuffer(unsafe.Pointer(buf)))
return C.GstFlowReturn(ret) return C.GstFlowReturn(ret)
} }
//export goGstBaseTransformTransformMeta //export goGstBaseTransformTransformMeta
func goGstBaseTransformTransformMeta(self *C.GstBaseTransform, outbuf *C.GstBuffer, meta *C.GstMeta, inbuf *C.GstBuffer) C.gboolean { func goGstBaseTransformTransformMeta(self *C.GstBaseTransform, outbuf *C.GstBuffer, meta *C.GstMeta, inbuf *C.GstBuffer) C.gboolean {
var ret bool var ret bool
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
TransformMeta(self *GstBaseTransform, outbuf *gst.Buffer, meta *gst.Meta, inbuf *gst.Buffer) bool
}) iface := subclass.(interface {
ret = iface.TransformMeta(ToGstBaseTransform(self), gst.ToGstBuffer(unsafe.Pointer(outbuf)), gst.FromGstMetaUnsafe(unsafe.Pointer(meta)), gst.ToGstBuffer(unsafe.Pointer(inbuf))) TransformMeta(self *GstBaseTransform, outbuf *gst.Buffer, meta *gst.Meta, inbuf *gst.Buffer) bool
}) })
ret = iface.TransformMeta(goBaseT, gst.ToGstBuffer(unsafe.Pointer(outbuf)), gst.FromGstMetaUnsafe(unsafe.Pointer(meta)), gst.ToGstBuffer(unsafe.Pointer(inbuf)))
return gboolean(ret) return gboolean(ret)
} }
@@ -284,12 +327,14 @@ func goGstBaseTransformTransformMeta(self *C.GstBaseTransform, outbuf *C.GstBuff
func goGstBaseTransformTransformSize(self *C.GstBaseTransform, direction C.GstPadDirection, caps *C.GstCaps, size C.gsize, othercaps *C.GstCaps, outsize *C.gsize) C.gboolean { func goGstBaseTransformTransformSize(self *C.GstBaseTransform, direction C.GstPadDirection, caps *C.GstCaps, size C.gsize, othercaps *C.GstCaps, outsize *C.gsize) C.gboolean {
var ret bool var ret bool
var othersize int64 var othersize int64
glib.WithPointerTransferOriginal(unsafe.Pointer(self), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goBaseT := ToGstBaseTransform(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(self))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(self))
TransformSize(self *GstBaseTransform, direction gst.PadDirection, caps *gst.Caps, size int64, othercaps *gst.Caps) (ok bool, othersize int64)
}) iface := subclass.(interface {
ret, othersize = iface.TransformSize(ToGstBaseTransform(self), gst.PadDirection(direction), gst.ToGstCaps(unsafe.Pointer(caps)), int64(size), gst.ToGstCaps(unsafe.Pointer(othercaps))) TransformSize(self *GstBaseTransform, direction gst.PadDirection, caps *gst.Caps, size int64, othercaps *gst.Caps) (ok bool, othersize int64)
}) })
ret, othersize = iface.TransformSize(goBaseT, gst.PadDirection(direction), gst.ToGstCaps(unsafe.Pointer(caps)), int64(size), gst.ToGstCaps(unsafe.Pointer(othercaps)))
if ret { if ret {
*outsize = C.gsize(othersize) *outsize = C.gsize(othersize)
} }

View File

@@ -16,12 +16,14 @@ import (
func goGstPushSrcAlloc(src *C.GstPushSrc, buf **C.GstBuffer) C.GstFlowReturn { func goGstPushSrcAlloc(src *C.GstPushSrc, buf **C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
var outbuf *gst.Buffer var outbuf *gst.Buffer
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goPushSrc := ToGstPushSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Alloc(*GstPushSrc) (gst.FlowReturn, *gst.Buffer)
}) iface := subclass.(interface {
ret, outbuf = iface.Alloc(ToGstPushSrc(gObject)) Alloc(*GstPushSrc) (gst.FlowReturn, *gst.Buffer)
}) })
ret, outbuf = iface.Alloc(goPushSrc)
if outbuf != nil { if outbuf != nil {
C.memcpy(unsafe.Pointer(*buf), unsafe.Pointer(outbuf.Instance()), C.sizeof_GstBuffer) C.memcpy(unsafe.Pointer(*buf), unsafe.Pointer(outbuf.Instance()), C.sizeof_GstBuffer)
} }
@@ -32,12 +34,14 @@ func goGstPushSrcAlloc(src *C.GstPushSrc, buf **C.GstBuffer) C.GstFlowReturn {
func goGstPushSrcCreate(src *C.GstPushSrc, buf **C.GstBuffer) C.GstFlowReturn { func goGstPushSrcCreate(src *C.GstPushSrc, buf **C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
var outbuf *gst.Buffer var outbuf *gst.Buffer
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goPushSrc := ToGstPushSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Create(*GstPushSrc) (gst.FlowReturn, *gst.Buffer)
}) iface := subclass.(interface {
ret, outbuf = iface.Create(ToGstPushSrc(gObject)) Create(*GstPushSrc) (gst.FlowReturn, *gst.Buffer)
}) })
ret, outbuf = iface.Create(goPushSrc)
if outbuf != nil { if outbuf != nil {
C.memcpy(unsafe.Pointer(*buf), unsafe.Pointer(outbuf.Instance()), C.sizeof_GstBuffer) C.memcpy(unsafe.Pointer(*buf), unsafe.Pointer(outbuf.Instance()), C.sizeof_GstBuffer)
} }
@@ -47,11 +51,13 @@ func goGstPushSrcCreate(src *C.GstPushSrc, buf **C.GstBuffer) C.GstFlowReturn {
//export goGstPushSrcFill //export goGstPushSrcFill
func goGstPushSrcFill(src *C.GstPushSrc, buf *C.GstBuffer) C.GstFlowReturn { func goGstPushSrcFill(src *C.GstPushSrc, buf *C.GstBuffer) C.GstFlowReturn {
var ret gst.FlowReturn var ret gst.FlowReturn
glib.WithPointerTransferOriginal(unsafe.Pointer(src), func(gObject *glib.Object, goObject glib.GoObjectSubclass) { goPushSrc := ToGstPushSrc(&glib.Object{GObject: glib.ToGObject(unsafe.Pointer(src))})
iface := goObject.(interface { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(src))
Fill(*GstPushSrc, *gst.Buffer) gst.FlowReturn
}) iface := subclass.(interface {
ret = iface.Fill(ToGstPushSrc(gObject), gst.ToGstBuffer(unsafe.Pointer(buf))) Fill(*GstPushSrc, *gst.Buffer) gst.FlowReturn
}) })
ret = iface.Fill(goPushSrc, gst.ToGstBuffer(unsafe.Pointer(buf)))
return C.GstFlowReturn(ret) return C.GstFlowReturn(ret)
} }

View File

@@ -33,9 +33,9 @@ func goURIHdlrGetProtocols(gtype C.GType) **C.gchar {
//export goURIHdlrGetURI //export goURIHdlrGetURI
func goURIHdlrGetURI(hdlr *C.GstURIHandler) *C.gchar { func goURIHdlrGetURI(hdlr *C.GstURIHandler) *C.gchar {
var uri string var uri string
glib.WithPointerTransferOriginal(unsafe.Pointer(hdlr), func(gobj *glib.Object, obj glib.GoObjectSubclass) { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(hdlr))
uri = obj.(URIHandler).GetURI() uri = subclass.(URIHandler).GetURI()
})
if uri == "" { if uri == "" {
return nil return nil
} }
@@ -46,9 +46,10 @@ func goURIHdlrGetURI(hdlr *C.GstURIHandler) *C.gchar {
func goURIHdlrSetURI(hdlr *C.GstURIHandler, uri *C.gchar, gerr **C.GError) C.gboolean { func goURIHdlrSetURI(hdlr *C.GstURIHandler, uri *C.gchar, gerr **C.GError) C.gboolean {
var ok bool var ok bool
var err error var err error
glib.WithPointerTransferOriginal(unsafe.Pointer(hdlr), func(gobj *glib.Object, obj glib.GoObjectSubclass) { subclass := glib.FromObjectUnsafePrivate(unsafe.Pointer(hdlr))
ok, err = obj.(URIHandler).SetURI(C.GoString(uri))
}) ok, err = subclass.(URIHandler).SetURI(C.GoString(uri))
if err != nil { if err != nil {
errMsg := C.CString(err.Error()) errMsg := C.CString(err.Error())
defer C.free(unsafe.Pointer(errMsg)) defer C.free(unsafe.Pointer(errMsg))