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..bf33d8f2 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 { @@ -160,7 +161,11 @@ func NewPCTransport(params PCTransportParams) (*PCTransport, error) { if err := m.RegisterHeaderExtension(sdesRtpStreamIdExtension, webrtc.RTPCodecTypeVideo); err != nil { return nil, err } - + absCaptureTimeURI := "http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time" + absCaptureTimeExtension := webrtc.RTPHeaderExtensionCapability{URI: absCaptureTimeURI} + if err := m.RegisterHeaderExtension(absCaptureTimeExtension, webrtc.RTPCodecTypeAudio); err != nil { + return nil, err + } i := &interceptor.Registry{} t := &PCTransport{ @@ -172,6 +177,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 {