mirror of
https://github.com/pion/webrtc.git
synced 2025-12-24 11:51:03 +08:00
ConfigureFlexFEC03 helper and fec example
This commit is contained in:
committed by
Aleksandr Alekseev
parent
ca48a0d709
commit
08d015e056
@@ -10,6 +10,7 @@ import (
|
||||
"sync/atomic"
|
||||
|
||||
"github.com/pion/interceptor"
|
||||
"github.com/pion/interceptor/pkg/flexfec"
|
||||
"github.com/pion/interceptor/pkg/nack"
|
||||
"github.com/pion/interceptor/pkg/report"
|
||||
"github.com/pion/interceptor/pkg/rfc8888"
|
||||
@@ -160,6 +161,41 @@ func ConfigureSimulcastExtensionHeaders(mediaEngine *MediaEngine) error {
|
||||
)
|
||||
}
|
||||
|
||||
// ConfigureFlexFEC03 registers flexfec-03 codec with provided payloadType in mediaEngine
|
||||
// and adds corresponding interceptor to the registry.
|
||||
// Note that this function should be called before any other interceptor that modifies RTP packets
|
||||
// (i.e. TWCCHeaderExtensionSender) is added to the registry, so that packets generated by flexfec
|
||||
// interceptor are not modified.
|
||||
func ConfigureFlexFEC03(
|
||||
payloadType PayloadType,
|
||||
mediaEngine *MediaEngine,
|
||||
interceptorRegistry *interceptor.Registry,
|
||||
options ...flexfec.FecOption,
|
||||
) error {
|
||||
codecFEC := RTPCodecParameters{
|
||||
RTPCodecCapability: RTPCodecCapability{
|
||||
MimeType: MimeTypeFlexFEC03,
|
||||
ClockRate: 90000,
|
||||
SDPFmtpLine: "repair-window=10000000",
|
||||
RTCPFeedback: nil,
|
||||
},
|
||||
PayloadType: payloadType,
|
||||
}
|
||||
|
||||
if err := mediaEngine.RegisterCodec(codecFEC, RTPCodecTypeVideo); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
generator, err := flexfec.NewFecInterceptor(options...)
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user