mirror of
https://github.com/go-gst/go-gst.git
synced 2025-10-08 17:30:56 +08:00
238 lines
8.3 KiB
Go
238 lines
8.3 KiB
Go
package base
|
|
|
|
/*
|
|
#include "gst.go.h"
|
|
*/
|
|
import "C"
|
|
|
|
import (
|
|
"time"
|
|
"unsafe"
|
|
|
|
"github.com/tinyzimmer/go-glib/glib"
|
|
"github.com/tinyzimmer/go-gst/gst"
|
|
)
|
|
|
|
//export goGstBaseSinkActivatePull
|
|
func goGstBaseSinkActivatePull(sink *C.GstBaseSink, active C.gboolean) C.gboolean {
|
|
var ret C.gboolean
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
ActivatePull(self *GstBaseSink, active bool) bool
|
|
})
|
|
ret = gboolean(iface.ActivatePull(ToGstBaseSink(gObject), gobool(active)))
|
|
})
|
|
return ret
|
|
}
|
|
|
|
//export goGstBaseSinkEvent
|
|
func goGstBaseSinkEvent(sink *C.GstBaseSink, event *C.GstEvent) C.gboolean {
|
|
var ret C.gboolean
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
Event(self *GstBaseSink, event *gst.Event) bool
|
|
})
|
|
ret = gboolean(iface.Event(ToGstBaseSink(gObject), gst.ToGstEvent(unsafe.Pointer(event))))
|
|
})
|
|
return ret
|
|
}
|
|
|
|
//export goGstBaseSinkFixate
|
|
func goGstBaseSinkFixate(sink *C.GstBaseSink, caps *C.GstCaps) *C.GstCaps {
|
|
var fixated *gst.Caps
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
Fixate(self *GstBaseSink, caps *gst.Caps) *gst.Caps
|
|
})
|
|
fixated = iface.Fixate(ToGstBaseSink(gObject), gst.ToGstCaps(unsafe.Pointer(caps)))
|
|
})
|
|
if fixated == nil {
|
|
return nil
|
|
}
|
|
return (*C.GstCaps)(unsafe.Pointer(fixated.Instance()))
|
|
}
|
|
|
|
//export goGstBaseSinkGetCaps
|
|
func goGstBaseSinkGetCaps(sink *C.GstBaseSink, filter *C.GstCaps) *C.GstCaps {
|
|
var filtered *gst.Caps
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
GetCaps(self *GstBaseSink, filter *gst.Caps) *gst.Caps
|
|
})
|
|
filtered = iface.GetCaps(ToGstBaseSink(gObject), gst.ToGstCaps(unsafe.Pointer(filter)))
|
|
})
|
|
if filtered == nil {
|
|
return nil
|
|
}
|
|
return (*C.GstCaps)(unsafe.Pointer(filtered.Instance()))
|
|
}
|
|
|
|
//export goGstBaseSinkGetTimes
|
|
func goGstBaseSinkGetTimes(sink *C.GstBaseSink, buf *C.GstBuffer, start, end *C.GstClockTime) {
|
|
var retStart, retEnd time.Duration
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
GetTimes(self *GstBaseSink, buffer *gst.Buffer) (start, end time.Duration)
|
|
})
|
|
retStart, retEnd = iface.GetTimes(ToGstBaseSink(gObject), gst.ToGstBuffer(unsafe.Pointer(buf)))
|
|
})
|
|
*start = C.GstClockTime(retStart.Nanoseconds())
|
|
*end = C.GstClockTime(retEnd.Nanoseconds())
|
|
}
|
|
|
|
//export goGstBaseSinkPrepare
|
|
func goGstBaseSinkPrepare(sink *C.GstBaseSink, buf *C.GstBuffer) C.GstFlowReturn {
|
|
var ret gst.FlowReturn
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
Prepare(self *GstBaseSink, buffer *gst.Buffer) gst.FlowReturn
|
|
})
|
|
ret = iface.Prepare(ToGstBaseSink(gObject), gst.ToGstBuffer(unsafe.Pointer(buf)))
|
|
})
|
|
return C.GstFlowReturn(ret)
|
|
}
|
|
|
|
//export goGstBaseSinkPrepareList
|
|
func goGstBaseSinkPrepareList(sink *C.GstBaseSink, list *C.GstBufferList) C.GstFlowReturn {
|
|
var ret gst.FlowReturn
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
PrepareList(self *GstBaseSink, bufferList *gst.BufferList) gst.FlowReturn
|
|
})
|
|
ret = iface.PrepareList(ToGstBaseSink(gObject), gst.ToGstBufferList(unsafe.Pointer(list)))
|
|
})
|
|
return C.GstFlowReturn(ret)
|
|
}
|
|
|
|
//export goGstBaseSinkPreroll
|
|
func goGstBaseSinkPreroll(sink *C.GstBaseSink, buf *C.GstBuffer) C.GstFlowReturn {
|
|
var ret gst.FlowReturn
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
Preroll(self *GstBaseSink, buffer *gst.Buffer) gst.FlowReturn
|
|
})
|
|
ret = iface.Preroll(ToGstBaseSink(gObject), gst.ToGstBuffer(unsafe.Pointer(buf)))
|
|
})
|
|
return C.GstFlowReturn(ret)
|
|
}
|
|
|
|
//export goGstBaseSinkProposeAllocation
|
|
func goGstBaseSinkProposeAllocation(sink *C.GstBaseSink, query *C.GstQuery) C.gboolean {
|
|
var ret bool
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
ProposeAllocation(self *GstBaseSink, query *gst.Query) bool
|
|
})
|
|
ret = iface.ProposeAllocation(ToGstBaseSink(gObject), gst.ToGstQuery(unsafe.Pointer(query)))
|
|
})
|
|
return gboolean(ret)
|
|
}
|
|
|
|
//export goGstBaseSinkQuery
|
|
func goGstBaseSinkQuery(sink *C.GstBaseSink, query *C.GstQuery) C.gboolean {
|
|
var ret bool
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
Query(self *GstBaseSink, query *gst.Query) bool
|
|
})
|
|
ret = iface.Query(ToGstBaseSink(gObject), gst.ToGstQuery(unsafe.Pointer(query)))
|
|
})
|
|
return gboolean(ret)
|
|
}
|
|
|
|
//export goGstBaseSinkRender
|
|
func goGstBaseSinkRender(sink *C.GstBaseSink, buf *C.GstBuffer) C.GstFlowReturn {
|
|
var ret gst.FlowReturn
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
Render(self *GstBaseSink, buffer *gst.Buffer) gst.FlowReturn
|
|
})
|
|
ret = iface.Render(ToGstBaseSink(gObject), gst.ToGstBuffer(unsafe.Pointer(buf)))
|
|
})
|
|
return C.GstFlowReturn(ret)
|
|
}
|
|
|
|
//export goGstBaseSinkRenderList
|
|
func goGstBaseSinkRenderList(sink *C.GstBaseSink, buf *C.GstBufferList) C.GstFlowReturn {
|
|
var ret gst.FlowReturn
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
RenderList(self *GstBaseSink, bufferList *gst.BufferList) gst.FlowReturn
|
|
})
|
|
ret = iface.RenderList(ToGstBaseSink(gObject), gst.ToGstBufferList(unsafe.Pointer(buf)))
|
|
})
|
|
return C.GstFlowReturn(ret)
|
|
}
|
|
|
|
//export goGstBaseSinkSetCaps
|
|
func goGstBaseSinkSetCaps(sink *C.GstBaseSink, caps *C.GstCaps) C.gboolean {
|
|
var ret bool
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
SetCaps(self *GstBaseSink, caps *gst.Caps) bool
|
|
})
|
|
ret = iface.SetCaps(ToGstBaseSink(gObject), gst.ToGstCaps(unsafe.Pointer(caps)))
|
|
})
|
|
return gboolean(ret)
|
|
}
|
|
|
|
//export goGstBaseSinkStart
|
|
func goGstBaseSinkStart(sink *C.GstBaseSink) C.gboolean {
|
|
var ret bool
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
Start(self *GstBaseSink) bool
|
|
})
|
|
ret = iface.Start(ToGstBaseSink(gObject))
|
|
})
|
|
return gboolean(ret)
|
|
}
|
|
|
|
//export goGstBaseSinkStop
|
|
func goGstBaseSinkStop(sink *C.GstBaseSink) C.gboolean {
|
|
var ret bool
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
Stop(self *GstBaseSink) bool
|
|
})
|
|
ret = iface.Stop(ToGstBaseSink(gObject))
|
|
})
|
|
return gboolean(ret)
|
|
}
|
|
|
|
//export goGstBaseSinkUnlock
|
|
func goGstBaseSinkUnlock(sink *C.GstBaseSink) C.gboolean {
|
|
var ret bool
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
Unlock(self *GstBaseSink) bool
|
|
})
|
|
ret = iface.Unlock(ToGstBaseSink(gObject))
|
|
})
|
|
return gboolean(ret)
|
|
}
|
|
|
|
//export goGstBaseSinkUnlockStop
|
|
func goGstBaseSinkUnlockStop(sink *C.GstBaseSink) C.gboolean {
|
|
var ret bool
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
UnlockStop(self *GstBaseSink) bool
|
|
})
|
|
ret = iface.UnlockStop(ToGstBaseSink(gObject))
|
|
})
|
|
return gboolean(ret)
|
|
}
|
|
|
|
//export goGstBaseSinkWaitEvent
|
|
func goGstBaseSinkWaitEvent(sink *C.GstBaseSink, event *C.GstEvent) C.GstFlowReturn {
|
|
var ret gst.FlowReturn
|
|
glib.WithPointerTransferOriginal(unsafe.Pointer(sink), func(gObject *glib.Object, goObject glib.GoObjectSubclass) {
|
|
iface := goObject.(interface {
|
|
WaitEvent(self *GstBaseSink, event *gst.Event) gst.FlowReturn
|
|
})
|
|
ret = iface.WaitEvent(ToGstBaseSink(gObject), gst.ToGstEvent(unsafe.Pointer(event)))
|
|
})
|
|
return C.GstFlowReturn(ret)
|
|
}
|