40 lines
1000 B
Go
40 lines
1000 B
Go
|
//go:build js && wasm
|
||
|
// +build js,wasm
|
||
|
|
||
|
package webrtc
|
||
|
|
||
|
import (
|
||
|
"syscall/js"
|
||
|
)
|
||
|
|
||
|
// RTPTransceiver represents a combination of an RTPSender and an RTPReceiver that share a common mid.
|
||
|
type RTPTransceiver struct {
|
||
|
// Pointer to the underlying JavaScript RTCRTPTransceiver object.
|
||
|
underlying js.Value
|
||
|
}
|
||
|
|
||
|
// Direction returns the RTPTransceiver's current direction
|
||
|
func (r *RTPTransceiver) Direction() RTPTransceiverDirection {
|
||
|
return NewRTPTransceiverDirection(r.underlying.Get("direction").String())
|
||
|
}
|
||
|
|
||
|
// Sender returns the RTPTransceiver's RTPSender if it has one
|
||
|
func (r *RTPTransceiver) Sender() *RTPSender {
|
||
|
underlying := r.underlying.Get("sender")
|
||
|
if underlying.IsNull() {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
return &RTPSender{underlying: underlying}
|
||
|
}
|
||
|
|
||
|
// Receiver returns the RTPTransceiver's RTPReceiver if it has one
|
||
|
func (r *RTPTransceiver) Receiver() *RTPReceiver {
|
||
|
underlying := r.underlying.Get("receiver")
|
||
|
if underlying.IsNull() {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
return &RTPReceiver{underlying: underlying}
|
||
|
}
|