uintptr -> unsafe.Pointer

This commit is contained in:
RSWilli
2023-11-29 15:41:08 +01:00
parent 46f74cb97a
commit 1cb6d9f064
13 changed files with 83 additions and 80 deletions

2
go.mod
View File

@@ -4,4 +4,4 @@ go 1.21
require github.com/mattn/go-pointer v0.0.1 require github.com/mattn/go-pointer v0.0.1
require github.com/go-gst/go-glib v0.0.0-20230811085623-0abfebfabe3e require github.com/go-gst/go-glib v0.0.0-20231129143528-6abb4f7af939

4
go.sum
View File

@@ -1,4 +1,4 @@
github.com/go-gst/go-glib v0.0.0-20230811085623-0abfebfabe3e h1:ZDMaEJsq1RFfqNQcFcdLbwHYc+quw9YihlwRPkVYeUA= github.com/go-gst/go-glib v0.0.0-20231129143528-6abb4f7af939 h1:Z2FvB66fEGvIqzVSOCboWFsoyQgacUR8duoyb43RXAc=
github.com/go-gst/go-glib v0.0.0-20230811085623-0abfebfabe3e/go.mod h1:rXuKU+tCN7pN+b/7oIyWv6MpnlGy+QWd7jRhWUNstjU= github.com/go-gst/go-glib v0.0.0-20231129143528-6abb4f7af939/go.mod h1:rXuKU+tCN7pN+b/7oIyWv6MpnlGy+QWd7jRhWUNstjU=
github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0= github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0=
github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc= github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc=

View File

@@ -13,6 +13,8 @@ GValue * audioUtilToGValue (guintptr p) { return (GValue*)(p); }
*/ */
import "C" import "C"
import ( import (
"unsafe"
"github.com/go-gst/go-gst/gst" "github.com/go-gst/go-gst/gst"
) )
@@ -41,4 +43,6 @@ func gobool(b C.gboolean) bool {
return int(b) > 0 return int(b) > 0
} }
func uintptrToGVal(p uintptr) *C.GValue { return (*C.GValue)(C.audioUtilToGValue(C.guintptr(p))) } func ptrToGVal(p unsafe.Pointer) *C.GValue {
return (*C.GValue)(C.audioUtilToGValue(C.guintptr(p)))
}

View File

@@ -17,8 +17,8 @@ func init() {
glib.RegisterGValueMarshalers([]glib.TypeMarshaler{ glib.RegisterGValueMarshalers([]glib.TypeMarshaler{
{ {
T: glib.Type(C.gst_audio_format_get_type()), T: glib.Type(C.gst_audio_format_get_type()),
F: func(p uintptr) (interface{}, error) { F: func(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_enum(uintptrToGVal(p)) c := C.g_value_get_enum(ptrToGVal(p))
return Format(c), nil return Format(c), nil
}, },
}, },

View File

@@ -95,15 +95,15 @@ func quarkToString(q C.GQuark) string {
func streamSliceToGlist(streams []*Stream) *C.GList { func streamSliceToGlist(streams []*Stream) *C.GList {
var glist C.GList var glist C.GList
wrapped := glib.WrapList(uintptr(unsafe.Pointer(&glist))) wrapped := glib.WrapList(unsafe.Pointer(&glist))
for _, stream := range streams { for _, stream := range streams {
wrapped = wrapped.Append(uintptr(stream.Unsafe())) wrapped = wrapped.Append(stream.Unsafe())
} }
return &glist return &glist
} }
func glistToStreamSlice(glist *C.GList) []*Stream { func glistToStreamSlice(glist *C.GList) []*Stream {
l := glib.WrapList(uintptr(unsafe.Pointer(&glist))) l := glib.WrapList(unsafe.Pointer(&glist))
out := make([]*Stream, 0) out := make([]*Stream, 0)
l.FreeFull(func(item interface{}) { l.FreeFull(func(item interface{}) {
st := item.(*C.GstStream) st := item.(*C.GstStream)
@@ -113,7 +113,7 @@ func glistToStreamSlice(glist *C.GList) []*Stream {
} }
func glistToPadTemplateSlice(glist *C.GList) []*PadTemplate { func glistToPadTemplateSlice(glist *C.GList) []*PadTemplate {
l := glib.WrapList(uintptr(unsafe.Pointer(&glist))) l := glib.WrapList(unsafe.Pointer(&glist))
out := make([]*PadTemplate, 0) out := make([]*PadTemplate, 0)
l.FreeFull(func(item interface{}) { l.FreeFull(func(item interface{}) {
tmpl := item.(*C.GstPadTemplate) tmpl := item.(*C.GstPadTemplate)

View File

@@ -62,7 +62,7 @@ func (d *DeviceMonitor) GetDevices() []*Device {
if glist == nil { if glist == nil {
return nil return nil
} }
goList := glib.WrapList(uintptr(unsafe.Pointer(glist))) goList := glib.WrapList(unsafe.Pointer(glist))
out := make([]*Device, 0) out := make([]*Device, 0)
goList.Foreach(func(item interface{}) { goList.Foreach(func(item interface{}) {
pt := item.(unsafe.Pointer) pt := item.(unsafe.Pointer)

View File

@@ -30,7 +30,7 @@ func (d *DeviceProvider) GetDevices() []*Device {
if glist == nil { if glist == nil {
return nil return nil
} }
goList := glib.WrapList(uintptr(unsafe.Pointer(glist))) goList := glib.WrapList(unsafe.Pointer(glist))
out := make([]*Device, 0) out := make([]*Device, 0)
goList.Foreach(func(item interface{}) { goList.Foreach(func(item interface{}) {
pt := item.(unsafe.Pointer) pt := item.(unsafe.Pointer)

View File

@@ -333,7 +333,7 @@ func (e *Element) GetPadTemplates() []*PadTemplate {
if glist == nil { if glist == nil {
return nil return nil
} }
goList := glib.WrapList(uintptr(unsafe.Pointer(glist))) goList := glib.WrapList(unsafe.Pointer(glist))
out := make([]*PadTemplate, 0) out := make([]*PadTemplate, 0)
goList.Foreach(func(item interface{}) { goList.Foreach(func(item interface{}) {
pt := item.(unsafe.Pointer) pt := item.(unsafe.Pointer)

View File

@@ -130,7 +130,7 @@ func goGstPadIterIntLinkFunction(pad *C.GstPad, parent *C.GstObject) *C.GstItera
if err != nil { if err != nil {
return nil return nil
} }
val.SetInstance(uintptr(unsafe.Pointer(pads[0].Instance()))) val.SetInstance(unsafe.Pointer(pads[0].Instance()))
return C.gst_iterator_new_single(C.gst_pad_get_type(), (*C.GValue)(unsafe.Pointer(val.GValue))) return C.gst_iterator_new_single(C.gst_pad_get_type(), (*C.GValue)(unsafe.Pointer(val.GValue)))
} }
return nil return nil

View File

@@ -243,23 +243,23 @@ func registerMarshalers() {
glib.RegisterGValueMarshalers(tm) glib.RegisterGValueMarshalers(tm)
} }
func toGValue(p uintptr) *C.GValue { func toGValue(p unsafe.Pointer) *C.GValue {
return (*C.GValue)((unsafe.Pointer)(p)) return (*C.GValue)(p)
} }
func marshalValueArray(p uintptr) (interface{}, error) { func marshalValueArray(p unsafe.Pointer) (interface{}, error) {
val := toGValue(p) val := toGValue(p)
out := ValueArrayValue(*glib.ValueFromNative(unsafe.Pointer(val))) out := ValueArrayValue(*glib.ValueFromNative(unsafe.Pointer(val)))
return &out, nil return &out, nil
} }
func marshalValueList(p uintptr) (interface{}, error) { func marshalValueList(p unsafe.Pointer) (interface{}, error) {
val := glib.ValueFromNative(unsafe.Pointer(toGValue(p))) val := glib.ValueFromNative(p)
out := ValueListValue(*glib.ValueFromNative(unsafe.Pointer(val))) out := ValueListValue(*glib.ValueFromNative(unsafe.Pointer(val)))
return &out, nil return &out, nil
} }
func marshalInt64Range(p uintptr) (interface{}, error) { func marshalInt64Range(p unsafe.Pointer) (interface{}, error) {
v := toGValue(p) v := toGValue(p)
return &Int64RangeValue{ return &Int64RangeValue{
start: int64(C.gst_value_get_int64_range_min(v)), start: int64(C.gst_value_get_int64_range_min(v)),
@@ -268,7 +268,7 @@ func marshalInt64Range(p uintptr) (interface{}, error) {
}, nil }, nil
} }
func marshalIntRange(p uintptr) (interface{}, error) { func marshalIntRange(p unsafe.Pointer) (interface{}, error) {
v := toGValue(p) v := toGValue(p)
return &IntRangeValue{ return &IntRangeValue{
start: int(C.gst_value_get_int_range_min(v)), start: int(C.gst_value_get_int_range_min(v)),
@@ -277,12 +277,12 @@ func marshalIntRange(p uintptr) (interface{}, error) {
}, nil }, nil
} }
func marshalBitmask(p uintptr) (interface{}, error) { func marshalBitmask(p unsafe.Pointer) (interface{}, error) {
v := toGValue(p) v := toGValue(p)
return Bitmask(C.gst_value_get_bitmask(v)), nil return Bitmask(C.gst_value_get_bitmask(v)), nil
} }
func marshalFlagset(p uintptr) (interface{}, error) { func marshalFlagset(p unsafe.Pointer) (interface{}, error) {
v := toGValue(p) v := toGValue(p)
return &FlagsetValue{ return &FlagsetValue{
flags: uint(C.gst_value_get_flagset_flags(v)), flags: uint(C.gst_value_get_flagset_flags(v)),
@@ -290,7 +290,7 @@ func marshalFlagset(p uintptr) (interface{}, error) {
}, nil }, nil
} }
func marshalDoubleRange(p uintptr) (interface{}, error) { func marshalDoubleRange(p unsafe.Pointer) (interface{}, error) {
v := toGValue(p) v := toGValue(p)
return &Float64RangeValue{ return &Float64RangeValue{
start: float64(C.gst_value_get_double_range_min(v)), start: float64(C.gst_value_get_double_range_min(v)),
@@ -298,7 +298,7 @@ func marshalDoubleRange(p uintptr) (interface{}, error) {
}, nil }, nil
} }
func marshalFraction(p uintptr) (interface{}, error) { func marshalFraction(p unsafe.Pointer) (interface{}, error) {
v := toGValue(p) v := toGValue(p)
out := &FractionValue{ out := &FractionValue{
num: int(C.gst_value_get_fraction_numerator(v)), num: int(C.gst_value_get_fraction_numerator(v)),
@@ -307,7 +307,7 @@ func marshalFraction(p uintptr) (interface{}, error) {
return out, nil return out, nil
} }
func marshalFractionRange(p uintptr) (interface{}, error) { func marshalFractionRange(p unsafe.Pointer) (interface{}, error) {
v := toGValue(p) v := toGValue(p)
start := C.gst_value_get_fraction_range_min(v) start := C.gst_value_get_fraction_range_min(v)
end := C.gst_value_get_fraction_range_max(v) end := C.gst_value_get_fraction_range_max(v)
@@ -317,195 +317,195 @@ func marshalFractionRange(p uintptr) (interface{}, error) {
}, nil }, nil
} }
func marshalBufferingMode(p uintptr) (interface{}, error) { func marshalBufferingMode(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_enum(toGValue(p)) c := C.g_value_get_enum(toGValue(p))
return BufferingMode(c), nil return BufferingMode(c), nil
} }
func marshalFormat(p uintptr) (interface{}, error) { func marshalFormat(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_enum(toGValue(p)) c := C.g_value_get_enum(toGValue(p))
return Format(c), nil return Format(c), nil
} }
func marshalMessageType(p uintptr) (interface{}, error) { func marshalMessageType(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_enum(toGValue(p)) c := C.g_value_get_enum(toGValue(p))
return MessageType(c), nil return MessageType(c), nil
} }
func marshalPadLinkReturn(p uintptr) (interface{}, error) { func marshalPadLinkReturn(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_enum(toGValue(p)) c := C.g_value_get_enum(toGValue(p))
return PadLinkReturn(c), nil return PadLinkReturn(c), nil
} }
func marshalState(p uintptr) (interface{}, error) { func marshalState(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_enum(toGValue(p)) c := C.g_value_get_enum(toGValue(p))
return State(c), nil return State(c), nil
} }
func marshalSeekFlags(p uintptr) (interface{}, error) { func marshalSeekFlags(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_enum(toGValue(p)) c := C.g_value_get_enum(toGValue(p))
return SeekFlags(c), nil return SeekFlags(c), nil
} }
func marshalSeekType(p uintptr) (interface{}, error) { func marshalSeekType(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_enum(toGValue(p)) c := C.g_value_get_enum(toGValue(p))
return SeekType(c), nil return SeekType(c), nil
} }
func marshalStateChangeReturn(p uintptr) (interface{}, error) { func marshalStateChangeReturn(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_enum(toGValue(p)) c := C.g_value_get_enum(toGValue(p))
return StateChangeReturn(c), nil return StateChangeReturn(c), nil
} }
func marshalGhostPad(p uintptr) (interface{}, error) { func marshalGhostPad(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))} obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))}
return wrapGhostPad(obj), nil return wrapGhostPad(obj), nil
} }
func marshalProxyPad(p uintptr) (interface{}, error) { func marshalProxyPad(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))} obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))}
return wrapProxyPad(obj), nil return wrapProxyPad(obj), nil
} }
func marshalPad(p uintptr) (interface{}, error) { func marshalPad(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))} obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))}
return wrapPad(obj), nil return wrapPad(obj), nil
} }
func marshalMessage(p uintptr) (interface{}, error) { func marshalMessage(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_boxed(toGValue(p)) c := C.g_value_get_boxed(toGValue(p))
return &Message{(*C.GstMessage)(unsafe.Pointer(c))}, nil return &Message{(*C.GstMessage)(unsafe.Pointer(c))}, nil
} }
func marshalObject(p uintptr) (interface{}, error) { func marshalObject(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))} obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))}
return wrapObject(obj), nil return wrapObject(obj), nil
} }
func marshalBus(p uintptr) (interface{}, error) { func marshalBus(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))} obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))}
return wrapBus(obj), nil return wrapBus(obj), nil
} }
func marshalElementFactory(p uintptr) (interface{}, error) { func marshalElementFactory(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))} obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))}
return wrapElementFactory(obj), nil return wrapElementFactory(obj), nil
} }
func marshalPipeline(p uintptr) (interface{}, error) { func marshalPipeline(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))} obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))}
return wrapPipeline(obj), nil return wrapPipeline(obj), nil
} }
func marshalPluginFeature(p uintptr) (interface{}, error) { func marshalPluginFeature(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))} obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))}
return wrapPluginFeature(obj), nil return wrapPluginFeature(obj), nil
} }
func marshalElement(p uintptr) (interface{}, error) { func marshalElement(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))} obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))}
return wrapElement(obj), nil return wrapElement(obj), nil
} }
func marshalBin(p uintptr) (interface{}, error) { func marshalBin(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))} obj := &glib.Object{GObject: glib.ToGObject(unsafe.Pointer(c))}
return wrapBin(obj), nil return wrapBin(obj), nil
} }
func marshalAllocationParams(p uintptr) (interface{}, error) { func marshalAllocationParams(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := (*C.GstAllocationParams)(unsafe.Pointer(c)) obj := (*C.GstAllocationParams)(unsafe.Pointer(c))
return wrapAllocationParams(obj), nil return wrapAllocationParams(obj), nil
} }
func marshalMemory(p uintptr) (interface{}, error) { func marshalMemory(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := (*C.GstMemory)(unsafe.Pointer(c)) obj := (*C.GstMemory)(unsafe.Pointer(c))
return wrapMemory(obj), nil return wrapMemory(obj), nil
} }
func marshalBuffer(p uintptr) (interface{}, error) { func marshalBuffer(p unsafe.Pointer) (interface{}, error) {
c := C.getBufferValue(toGValue(p)) c := C.getBufferValue(toGValue(p))
return wrapBuffer(c), nil return wrapBuffer(c), nil
} }
func marshalBufferList(p uintptr) (interface{}, error) { func marshalBufferList(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := (*C.GstBufferList)(unsafe.Pointer(c)) obj := (*C.GstBufferList)(unsafe.Pointer(c))
return wrapBufferList(obj), nil return wrapBufferList(obj), nil
} }
func marshalCaps(p uintptr) (interface{}, error) { func marshalCaps(p unsafe.Pointer) (interface{}, error) {
c := C.gst_value_get_caps(toGValue(p)) c := C.gst_value_get_caps(toGValue(p))
obj := (*C.GstCaps)(unsafe.Pointer(c)) obj := (*C.GstCaps)(unsafe.Pointer(c))
return wrapCaps(obj), nil return wrapCaps(obj), nil
} }
func marshalCapsFeatures(p uintptr) (interface{}, error) { func marshalCapsFeatures(p unsafe.Pointer) (interface{}, error) {
c := C.gst_value_get_caps_features(toGValue(p)) c := C.gst_value_get_caps_features(toGValue(p))
obj := (*C.GstCapsFeatures)(unsafe.Pointer(c)) obj := (*C.GstCapsFeatures)(unsafe.Pointer(c))
return wrapCapsFeatures(obj), nil return wrapCapsFeatures(obj), nil
} }
func marshalStructure(p uintptr) (interface{}, error) { func marshalStructure(p unsafe.Pointer) (interface{}, error) {
c := C.gst_value_get_structure(toGValue(p)) c := C.gst_value_get_structure(toGValue(p))
obj := (*C.GstStructure)(unsafe.Pointer(c)) obj := (*C.GstStructure)(unsafe.Pointer(c))
return wrapStructure(obj), nil return wrapStructure(obj), nil
} }
func marshalContext(p uintptr) (interface{}, error) { func marshalContext(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := (*C.GstContext)(unsafe.Pointer(c)) obj := (*C.GstContext)(unsafe.Pointer(c))
return wrapContext(obj), nil return wrapContext(obj), nil
} }
func marshalTOC(p uintptr) (interface{}, error) { func marshalTOC(p unsafe.Pointer) (interface{}, error) {
c := C.gst_value_get_structure(toGValue(p)) c := C.gst_value_get_structure(toGValue(p))
obj := (*C.GstToc)(unsafe.Pointer(c)) obj := (*C.GstToc)(unsafe.Pointer(c))
return wrapTOC(obj), nil return wrapTOC(obj), nil
} }
func marshalTOCEntry(p uintptr) (interface{}, error) { func marshalTOCEntry(p unsafe.Pointer) (interface{}, error) {
c := C.gst_value_get_structure(toGValue(p)) c := C.gst_value_get_structure(toGValue(p))
obj := (*C.GstTocEntry)(unsafe.Pointer(c)) obj := (*C.GstTocEntry)(unsafe.Pointer(c))
return wrapTOCEntry(obj), nil return wrapTOCEntry(obj), nil
} }
func marsalTagList(p uintptr) (interface{}, error) { func marsalTagList(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := (*C.GstTagList)(unsafe.Pointer(c)) obj := (*C.GstTagList)(unsafe.Pointer(c))
return wrapTagList(obj), nil return wrapTagList(obj), nil
} }
func marshalEvent(p uintptr) (interface{}, error) { func marshalEvent(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := (*C.GstEvent)(unsafe.Pointer(c)) obj := (*C.GstEvent)(unsafe.Pointer(c))
return wrapEvent(obj), nil return wrapEvent(obj), nil
} }
func marshalSegment(p uintptr) (interface{}, error) { func marshalSegment(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := (*C.GstSegment)(unsafe.Pointer(c)) obj := (*C.GstSegment)(unsafe.Pointer(c))
return wrapSegment(obj), nil return wrapSegment(obj), nil
} }
func marshalQuery(p uintptr) (interface{}, error) { func marshalQuery(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(toGValue(p)) c := C.g_value_get_object(toGValue(p))
obj := (*C.GstQuery)(unsafe.Pointer(c)) obj := (*C.GstQuery)(unsafe.Pointer(c))
return wrapQuery(obj), nil return wrapQuery(obj), nil
} }
func marshalSample(p uintptr) (interface{}, error) { func marshalSample(p unsafe.Pointer) (interface{}, error) {
c := C.getSampleValue(toGValue(p)) c := C.getSampleValue(toGValue(p))
return FromGstSampleUnsafeNone(unsafe.Pointer(c)), nil return FromGstSampleUnsafeNone(unsafe.Pointer(c)), nil
} }

View File

@@ -16,50 +16,50 @@ func init() {
tm := []glib.TypeMarshaler{ tm := []glib.TypeMarshaler{
{ {
T: glib.Type(C.gst_discoverer_get_type()), T: glib.Type(C.gst_discoverer_get_type()),
F: func(p uintptr) (interface{}, error) { F: func(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(uintptrToGVal(p)) c := C.g_value_get_object(ptrToGVal(p))
return &Discoverer{toGObject(unsafe.Pointer(c))}, nil return &Discoverer{toGObject(unsafe.Pointer(c))}, nil
}, },
}, },
{ {
T: glib.Type(C.gst_discoverer_info_get_type()), T: glib.Type(C.gst_discoverer_info_get_type()),
F: func(p uintptr) (interface{}, error) { F: func(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(uintptrToGVal(p)) c := C.g_value_get_object(ptrToGVal(p))
return &DiscovererInfo{toGObject(unsafe.Pointer(c))}, nil return &DiscovererInfo{toGObject(unsafe.Pointer(c))}, nil
}, },
}, },
{ {
T: glib.Type(C.gst_discoverer_stream_info_get_type()), T: glib.Type(C.gst_discoverer_stream_info_get_type()),
F: func(p uintptr) (interface{}, error) { F: func(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(uintptrToGVal(p)) c := C.g_value_get_object(ptrToGVal(p))
return &DiscovererStreamInfo{toGObject(unsafe.Pointer(c))}, nil return &DiscovererStreamInfo{toGObject(unsafe.Pointer(c))}, nil
}, },
}, },
{ {
T: glib.Type(C.gst_discoverer_audio_info_get_type()), T: glib.Type(C.gst_discoverer_audio_info_get_type()),
F: func(p uintptr) (interface{}, error) { F: func(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(uintptrToGVal(p)) c := C.g_value_get_object(ptrToGVal(p))
return &DiscovererAudioInfo{&DiscovererStreamInfo{toGObject(unsafe.Pointer(c))}}, nil return &DiscovererAudioInfo{&DiscovererStreamInfo{toGObject(unsafe.Pointer(c))}}, nil
}, },
}, },
{ {
T: glib.Type(C.gst_discoverer_video_info_get_type()), T: glib.Type(C.gst_discoverer_video_info_get_type()),
F: func(p uintptr) (interface{}, error) { F: func(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(uintptrToGVal(p)) c := C.g_value_get_object(ptrToGVal(p))
return &DiscovererVideoInfo{&DiscovererStreamInfo{toGObject(unsafe.Pointer(c))}}, nil return &DiscovererVideoInfo{&DiscovererStreamInfo{toGObject(unsafe.Pointer(c))}}, nil
}, },
}, },
{ {
T: glib.Type(C.gst_discoverer_subtitle_info_get_type()), T: glib.Type(C.gst_discoverer_subtitle_info_get_type()),
F: func(p uintptr) (interface{}, error) { F: func(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(uintptrToGVal(p)) c := C.g_value_get_object(ptrToGVal(p))
return &DiscovererSubtitleInfo{&DiscovererStreamInfo{toGObject(unsafe.Pointer(c))}}, nil return &DiscovererSubtitleInfo{&DiscovererStreamInfo{toGObject(unsafe.Pointer(c))}}, nil
}, },
}, },
{ {
T: glib.Type(C.gst_discoverer_container_info_get_type()), T: glib.Type(C.gst_discoverer_container_info_get_type()),
F: func(p uintptr) (interface{}, error) { F: func(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_object(uintptrToGVal(p)) c := C.g_value_get_object(ptrToGVal(p))
return &DiscovererContainerInfo{&DiscovererStreamInfo{toGObject(unsafe.Pointer(c))}}, nil return &DiscovererContainerInfo{&DiscovererStreamInfo{toGObject(unsafe.Pointer(c))}}, nil
}, },
}, },
@@ -67,9 +67,8 @@ func init() {
glib.RegisterGValueMarshalers(tm) glib.RegisterGValueMarshalers(tm)
} }
func uintptrToGVal(p uintptr) *C.GValue { func ptrToGVal(p unsafe.Pointer) *C.GValue {
return (*C.GValue)(unsafe.Pointer(p)) // vet thinks this is unsafe and there is no way around it for now. return (*C.GValue)(p)
// but the given ptr is an address to a C object so go's concerns are misplaced.
} }
func toGObject(o unsafe.Pointer) *glib.Object { return &glib.Object{GObject: glib.ToGObject(o)} } func toGObject(o unsafe.Pointer) *glib.Object { return &glib.Object{GObject: glib.ToGObject(o)} }

View File

@@ -100,7 +100,7 @@ func (c *gstColorBalance) ListChannels() []*ColorBalanceChannel {
if gList == nil { if gList == nil {
return nil return nil
} }
wrapped := glib.WrapList(uintptr(unsafe.Pointer(gList))) wrapped := glib.WrapList(unsafe.Pointer(gList))
defer wrapped.Free() defer wrapped.Free()
out := make([]*ColorBalanceChannel, 0) out := make([]*ColorBalanceChannel, 0)
wrapped.Foreach(func(item interface{}) { wrapped.Foreach(func(item interface{}) {

View File

@@ -44,8 +44,8 @@ func init() {
glib.RegisterGValueMarshalers([]glib.TypeMarshaler{ glib.RegisterGValueMarshalers([]glib.TypeMarshaler{
{ {
T: glib.Type(C.gst_video_format_get_type()), T: glib.Type(C.gst_video_format_get_type()),
F: func(p uintptr) (interface{}, error) { F: func(p unsafe.Pointer) (interface{}, error) {
c := C.g_value_get_enum(uintptrToGVal(p)) c := C.g_value_get_enum(ptrToGVal(p))
return Format(c), nil return Format(c), nil
}, },
}, },