@@ -358,9 +358,10 @@ func (m *MediaEngine) copy() *MediaEngine {
358
358
m .mu .Lock ()
359
359
defer m .mu .Unlock ()
360
360
cloned := & MediaEngine {
361
- videoCodecs : append ([]RTPCodecParameters {}, m .videoCodecs ... ),
362
- audioCodecs : append ([]RTPCodecParameters {}, m .audioCodecs ... ),
363
- headerExtensions : append ([]mediaEngineHeaderExtension {}, m .headerExtensions ... ),
361
+ videoCodecs : append ([]RTPCodecParameters {}, m .videoCodecs ... ),
362
+ audioCodecs : append ([]RTPCodecParameters {}, m .audioCodecs ... ),
363
+ headerExtensions : append ([]mediaEngineHeaderExtension {}, m .headerExtensions ... ),
364
+ negotiateMultiCodecs : m .negotiateMultiCodecs ,
364
365
}
365
366
if len (m .headerExtensions ) > 0 {
366
367
cloned .negotiatedHeaderExtensions = map [int ]mediaEngineHeaderExtension {}
@@ -596,9 +597,9 @@ func (m *MediaEngine) updateFromRemoteDescription(desc sdp.SessionDescription) e
596
597
}
597
598
598
599
switch {
599
- case ( ! m .negotiatedAudio || m . negotiateMultiCodecs ) && typ == RTPCodecTypeAudio :
600
+ case ! m .negotiatedAudio && typ == RTPCodecTypeAudio :
600
601
m .negotiatedAudio = true
601
- case ( ! m .negotiatedVideo || m . negotiateMultiCodecs ) && typ == RTPCodecTypeVideo :
602
+ case ! m .negotiatedVideo && typ == RTPCodecTypeVideo :
602
603
m .negotiatedVideo = true
603
604
default :
604
605
// update header extesions from remote sdp if codec is negotiated, Firefox
@@ -609,7 +610,9 @@ func (m *MediaEngine) updateFromRemoteDescription(desc sdp.SessionDescription) e
609
610
return err
610
611
}
611
612
612
- continue
613
+ if ! m .negotiateMultiCodecs || (typ != RTPCodecTypeAudio && typ != RTPCodecTypeVideo ) {
614
+ continue
615
+ }
613
616
}
614
617
615
618
codecs , err := codecsFromMediaDescription (media )
0 commit comments