rtpreceiver_go.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
  2. // SPDX-License-Identifier: MIT
  3. //go:build !js
  4. // +build !js
  5. package webrtc
  6. import "github.com/pion/interceptor"
  7. // SetRTPParameters applies provided RTPParameters the RTPReceiver's tracks.
  8. //
  9. // This method is part of the ORTC API. It is not
  10. // meant to be used together with the basic WebRTC API.
  11. //
  12. // The amount of provided codecs must match the number of tracks on the receiver.
  13. func (r *RTPReceiver) SetRTPParameters(params RTPParameters) {
  14. headerExtensions := make([]interceptor.RTPHeaderExtension, 0, len(params.HeaderExtensions))
  15. for _, h := range params.HeaderExtensions {
  16. headerExtensions = append(headerExtensions, interceptor.RTPHeaderExtension{ID: h.ID, URI: h.URI})
  17. }
  18. r.mu.Lock()
  19. defer r.mu.Unlock()
  20. for ndx, codec := range params.Codecs {
  21. currentTrack := r.tracks[ndx].track
  22. r.tracks[ndx].streamInfo.RTPHeaderExtensions = headerExtensions
  23. currentTrack.mu.Lock()
  24. currentTrack.codec = codec
  25. currentTrack.params = params
  26. currentTrack.mu.Unlock()
  27. }
  28. }