mirror of
https://github.com/go-gst/go-gst.git
synced 2025-10-30 19:16:34 +08:00
46 lines
935 B
Go
46 lines
935 B
Go
package gstwebrtc
|
|
|
|
// #include "gst.go.h"
|
|
import "C"
|
|
import (
|
|
"unsafe"
|
|
|
|
"github.com/go-gst/go-glib/glib"
|
|
"github.com/go-gst/go-gst/gst"
|
|
)
|
|
|
|
func init() {
|
|
|
|
tm := []glib.TypeMarshaler{
|
|
{T: glib.Type(C.GST_TYPE_WEBRTC_RTP_TRANSCEIVER), F: marshalRTPTransceiver},
|
|
}
|
|
|
|
glib.RegisterGValueMarshalers(tm)
|
|
}
|
|
|
|
type RTPTransceiver struct {
|
|
*gst.Object
|
|
}
|
|
|
|
// ToGValue implements glib.ValueTransformer
|
|
func (tc *RTPTransceiver) ToGValue() (*glib.Value, error) {
|
|
val, err := glib.ValueInit(glib.Type(C.GST_TYPE_WEBRTC_RTP_TRANSCEIVER))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
val.SetInstance(unsafe.Pointer(tc.Instance()))
|
|
return val, nil
|
|
}
|
|
|
|
func wrapRTPTransceiver(p unsafe.Pointer) *RTPTransceiver {
|
|
return &RTPTransceiver{
|
|
Object: gst.FromGstObjectUnsafeNone(p),
|
|
}
|
|
}
|
|
|
|
func marshalRTPTransceiver(p unsafe.Pointer) (interface{}, error) {
|
|
c := C.g_value_get_object((*C.GValue)(p))
|
|
|
|
return wrapRTPTransceiver(unsafe.Pointer(c)), nil
|
|
}
|