forked from External/mediamtx
* split data into specialized structs * move MPEG4-audio decoding into streamTrack * restore video/audio synchronization in HLS muxer and RTMP server * log decode errors * move H264 decoding and re-encoding here from gortsplib * add tests * update gortsplib
33 lines
616 B
Go
33 lines
616 B
Go
package core
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
const (
|
|
// 1500 (UDP MTU) - 20 (IP header) - 8 (UDP header)
|
|
maxPacketSize = 1472
|
|
)
|
|
|
|
type streamTrackGeneric struct{}
|
|
|
|
func newStreamTrackGeneric() *streamTrackGeneric {
|
|
return &streamTrackGeneric{}
|
|
}
|
|
|
|
func (t *streamTrackGeneric) onData(dat data, hasNonRTSPReaders bool) error {
|
|
tdata := dat.(*dataGeneric)
|
|
|
|
pkt := tdata.rtpPackets[0]
|
|
|
|
// remove padding
|
|
pkt.Header.Padding = false
|
|
pkt.PaddingSize = 0
|
|
|
|
if pkt.MarshalSize() > maxPacketSize {
|
|
return fmt.Errorf("payload size (%d) is greater than maximum allowed (%d)",
|
|
pkt.MarshalSize(), maxPacketSize)
|
|
}
|
|
|
|
return nil
|
|
}
|