diff --git a/engine.go b/engine.go index c993d9b1..b603ef37 100644 --- a/engine.go +++ b/engine.go @@ -342,13 +342,14 @@ func (e *RTCEngine) configure( func (e *RTCEngine) createPublisherPCLocked(configuration webrtc.Configuration) error { var err error if e.publisher, err = NewPCTransport(PCTransportParams{ - Configuration: configuration, - Codecs: e.connParams.Codecs, - RetransmitBufferSize: e.connParams.RetransmitBufferSize, - Pacer: e.connParams.Pacer, - Interceptors: e.connParams.Interceptors, - OnRTTUpdate: e.setRTT, - IsSender: true, + Configuration: configuration, + Codecs: e.connParams.Codecs, + RetransmitBufferSize: e.connParams.RetransmitBufferSize, + Pacer: e.connParams.Pacer, + Interceptors: e.connParams.Interceptors, + IncludeDefaultInterceptors: e.connParams.IncludeDefaultInterceptors, + OnRTTUpdate: e.setRTT, + IsSender: true, }); err != nil { return err } @@ -429,9 +430,11 @@ func (e *RTCEngine) createSubscriberPCLocked(configuration webrtc.Configuration) var err error if e.subscriber, err = NewPCTransport(PCTransportParams{ - Configuration: configuration, - Codecs: e.connParams.Codecs, - RetransmitBufferSize: e.connParams.RetransmitBufferSize, + Configuration: configuration, + Codecs: e.connParams.Codecs, + RetransmitBufferSize: e.connParams.RetransmitBufferSize, + Interceptors: e.connParams.Interceptors, + IncludeDefaultInterceptors: e.connParams.IncludeDefaultInterceptors, }); err != nil { return err } diff --git a/room.go b/room.go index 305b8a8f..96006d6e 100644 --- a/room.go +++ b/room.go @@ -131,6 +131,14 @@ func WithInterceptors(interceptors []interceptor.Factory) ConnectOption { } } +// WithIncludeDefaultInterceptors sets whether to register default interceptors +// along with custom interceptors. +func WithIncludeDefaultInterceptors(include bool) ConnectOption { + return func(p *signalling.ConnectParams) { + p.IncludeDefaultInterceptors = include + } +} + // WithICETransportPolicy sets the ICE transport policy (UDP, Relay, etc.). func WithICETransportPolicy(iceTransportPolicy webrtc.ICETransportPolicy) ConnectOption { return func(p *signalling.ConnectParams) { diff --git a/signalling/interfaces.go b/signalling/interfaces.go index 20822084..e644d1e3 100644 --- a/signalling/interfaces.go +++ b/signalling/interfaces.go @@ -82,6 +82,8 @@ type ConnectParams struct { Interceptors []interceptor.Factory + IncludeDefaultInterceptors bool + ICETransportPolicy webrtc.ICETransportPolicy // internal use diff --git a/transport.go b/transport.go index 48266660..7c2afe07 100644 --- a/transport.go +++ b/transport.go @@ -73,11 +73,12 @@ type PCTransportParams struct { Configuration webrtc.Configuration Codecs []webrtc.RTPCodecParameters - RetransmitBufferSize uint16 - Pacer pacer.Factory - Interceptors []interceptor.Factory - OnRTTUpdate func(rtt uint32) - IsSender bool + RetransmitBufferSize uint16 + Pacer pacer.Factory + Interceptors []interceptor.Factory + IncludeDefaultInterceptors bool + OnRTTUpdate func(rtt uint32) + IsSender bool } func (t *PCTransport) registerDefaultInterceptors(params PCTransportParams, i *interceptor.Registry) error { @@ -172,6 +173,12 @@ func NewPCTransport(params PCTransportParams) (*PCTransport, error) { for _, c := range params.Interceptors { i.Add(c) } + if params.IncludeDefaultInterceptors { + err := t.registerDefaultInterceptors(params, i) + if err != nil { + return nil, err + } + } } else { err := t.registerDefaultInterceptors(params, i) if err != nil {