mediamtx/internal/formatprocessor/processor.go

43 lines
1.1 KiB
Go
Raw Normal View History

// Package formatprocessor contains code to cleanup and normalize streams.
package formatprocessor
import (
2023-04-01 16:39:12 +00:00
"github.com/bluenviron/gortsplib/v3/pkg/formats"
)
// Processor allows to cleanup and normalize streams.
type Processor interface {
// clears and normalizes a data unit.
2023-03-10 11:44:59 +00:00
Process(Unit, bool) error
}
// New allocates a Processor.
func New(
udpMaxPayloadSize int,
2023-04-01 16:39:12 +00:00
forma formats.Format,
generateRTPPackets bool,
) (Processor, error) {
switch forma := forma.(type) {
2023-04-01 16:39:12 +00:00
case *formats.H264:
return newH264(udpMaxPayloadSize, forma, generateRTPPackets)
2023-04-01 16:39:12 +00:00
case *formats.H265:
return newH265(udpMaxPayloadSize, forma, generateRTPPackets)
2023-04-01 16:39:12 +00:00
case *formats.VP8:
return newVP8(udpMaxPayloadSize, forma, generateRTPPackets)
2023-04-01 16:39:12 +00:00
case *formats.VP9:
return newVP9(udpMaxPayloadSize, forma, generateRTPPackets)
2023-04-01 16:39:12 +00:00
case *formats.MPEG4Audio:
return newMPEG4Audio(udpMaxPayloadSize, forma, generateRTPPackets)
2023-04-01 16:39:12 +00:00
case *formats.Opus:
return newOpus(udpMaxPayloadSize, forma, generateRTPPackets)
default:
return newGeneric(udpMaxPayloadSize, forma, generateRTPPackets)
}
}