MCPcopy
hub / github.com/livekit/livekit / TestConfigureAudioTransceiver

Function TestConfigureAudioTransceiver

pkg/rtc/transport_test.go:601–637  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

599}
600
601func TestConfigureAudioTransceiver(t *testing.T) {
602 for _, testcase := range []struct {
603 nack bool
604 stereo bool
605 }{
606 {false, false},
607 {true, false},
608 {false, true},
609 {true, true},
610 } {
611 t.Run(fmt.Sprintf("nack=%v,stereo=%v", testcase.nack, testcase.stereo), func(t *testing.T) {
612 var me webrtc.MediaEngine
613 registerCodecs(&me, []*livekit.Codec{{Mime: mime.MimeTypeOpus.String()}}, RTCPFeedbackConfig{Audio: []webrtc.RTCPFeedback{{Type: webrtc.TypeRTCPFBNACK}}}, false)
614 pc, err := webrtc.NewAPI(webrtc.WithMediaEngine(&me)).NewPeerConnection(webrtc.Configuration{})
615 require.NoError(t, err)
616 defer pc.Close()
617 tr, err := pc.AddTransceiverFromKind(webrtc.RTPCodecTypeAudio, webrtc.RTPTransceiverInit{Direction: webrtc.RTPTransceiverDirectionSendonly})
618 require.NoError(t, err)
619
620 configureSenderAudio(tr, testcase.stereo, testcase.nack, nil)
621 codecs := tr.Sender().GetParameters().Codecs
622 for _, codec := range codecs {
623 if mime.IsMimeTypeStringOpus(codec.MimeType) {
624 require.Equal(t, testcase.stereo, strings.Contains(codec.SDPFmtpLine, "sprop-stereo=1"))
625 var nackEnabled bool
626 for _, fb := range codec.RTCPFeedback {
627 if fb.Type == webrtc.TypeRTCPFBNACK {
628 nackEnabled = true
629 break
630 }
631 }
632 require.Equal(t, testcase.nack, nackEnabled)
633 }
634 }
635 })
636 }
637}
638
639// When answering a subscriber offer, the sender's audio payload type must echo
640// the payload type the offer assigned (RFC 3264), otherwise Firefox decodes no

Callers

nothing calls this directly

Calls 6

registerCodecsFunction · 0.85
configureSenderAudioFunction · 0.85
CloseMethod · 0.65
RunMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected