From 7e598b5a63e3a70a4808ab4f661b7b4865673729 Mon Sep 17 00:00:00 2001 From: Mathis Engelbart Date: Wed, 24 Aug 2022 10:47:36 +0200 Subject: [PATCH] Add helper to configure CCFB (defined in RFC 8888) Adds a helper function to register an interceptor that produces congestion control feedback as defined in RFC 8888 (https://datatracker.ietf.org/doc/rfc8888/). --- interceptor.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/interceptor.go b/interceptor.go index 85232f35..2dfe5735 100644 --- a/interceptor.go +++ b/interceptor.go @@ -12,6 +12,7 @@ import ( "github.com/pion/interceptor" "github.com/pion/interceptor/pkg/nack" "github.com/pion/interceptor/pkg/report" + "github.com/pion/interceptor/pkg/rfc8888" "github.com/pion/interceptor/pkg/twcc" "github.com/pion/rtp" "github.com/pion/sdp/v3" @@ -109,6 +110,19 @@ func ConfigureTWCCSender(mediaEngine *MediaEngine, interceptorRegistry *intercep return nil } +// ConfigureCongestionControlFeedback registers congestion control feedback as +// defined in RFC 8888 (https://datatracker.ietf.org/doc/rfc8888/) +func ConfigureCongestionControlFeedback(mediaEngine *MediaEngine, interceptorRegistry *interceptor.Registry) error { + mediaEngine.RegisterFeedback(RTCPFeedback{Type: TypeRTCPFBACK, Parameter: "ccfb"}, RTPCodecTypeVideo) + mediaEngine.RegisterFeedback(RTCPFeedback{Type: TypeRTCPFBACK, Parameter: "ccfb"}, RTPCodecTypeAudio) + generator, err := rfc8888.NewSenderInterceptor() + if err != nil { + return err + } + interceptorRegistry.Add(generator) + return nil +} + type interceptorToTrackLocalWriter struct{ interceptor atomic.Value } // interceptor.RTPWriter } func (i *interceptorToTrackLocalWriter) WriteRTP(header *rtp.Header, payload []byte) (int, error) {