mirror of
https://github.com/pion/webrtc.git
synced 2025-12-24 11:51:03 +08:00
PeerConnection: more thread-safe
now proctected by lock: - CreateOffer - CreateAnswer - AddTransceiverFromKind - AddTransceiverFromTrack newRTPTransceiver is no longer a PeerConnection method; pc.addRTPTransceiver would fire onNegotiationNeeded; pc.AddTrack, pc.RemoveTrack now hold lock for the entire function; Fixes TestNegotiationNeededStressOneSided() by waiting til all tracks added to pcA and the negotiation completed
This commit is contained in:
@@ -20,6 +20,19 @@ type RTPTransceiver struct {
|
||||
kind RTPCodecType
|
||||
}
|
||||
|
||||
func newRTPTransceiver(
|
||||
receiver *RTPReceiver,
|
||||
sender *RTPSender,
|
||||
direction RTPTransceiverDirection,
|
||||
kind RTPCodecType,
|
||||
) *RTPTransceiver {
|
||||
t := &RTPTransceiver{kind: kind}
|
||||
t.setReceiver(receiver)
|
||||
t.setSender(sender)
|
||||
t.setDirection(direction)
|
||||
return t
|
||||
}
|
||||
|
||||
// Sender returns the RTPTransceiver's RTPSender if it has one
|
||||
func (t *RTPTransceiver) Sender() *RTPSender {
|
||||
if v := t.sender.Load(); v != nil {
|
||||
|
||||
Reference in New Issue
Block a user