github.com/pion/webrtc/v4@v4.0.1/rtpreceiver_go.go (about)

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