rtptransceiver_js.go 1000 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. //go:build js && wasm
  2. // +build js,wasm
  3. package webrtc
  4. import (
  5. "syscall/js"
  6. )
  7. // RTPTransceiver represents a combination of an RTPSender and an RTPReceiver that share a common mid.
  8. type RTPTransceiver struct {
  9. // Pointer to the underlying JavaScript RTCRTPTransceiver object.
  10. underlying js.Value
  11. }
  12. // Direction returns the RTPTransceiver's current direction
  13. func (r *RTPTransceiver) Direction() RTPTransceiverDirection {
  14. return NewRTPTransceiverDirection(r.underlying.Get("direction").String())
  15. }
  16. // Sender returns the RTPTransceiver's RTPSender if it has one
  17. func (r *RTPTransceiver) Sender() *RTPSender {
  18. underlying := r.underlying.Get("sender")
  19. if underlying.IsNull() {
  20. return nil
  21. }
  22. return &RTPSender{underlying: underlying}
  23. }
  24. // Receiver returns the RTPTransceiver's RTPReceiver if it has one
  25. func (r *RTPTransceiver) Receiver() *RTPReceiver {
  26. underlying := r.underlying.Get("receiver")
  27. if underlying.IsNull() {
  28. return nil
  29. }
  30. return &RTPReceiver{underlying: underlying}
  31. }