Files
lkm/stream/track_manager.go
2025-04-08 09:23:18 +08:00

65 lines
1.2 KiB
Go

package stream
import (
"github.com/lkmio/avformat/utils"
)
type TrackManager struct {
tracks []*Track
}
func (s *TrackManager) Add(track *Track) {
for _, t := range s.tracks {
utils.Assert(t.Stream.MediaType != track.Stream.MediaType)
utils.Assert(t.Stream.CodecID != track.Stream.CodecID)
}
s.tracks = append(s.tracks, track)
}
func (s *TrackManager) Find(id utils.AVCodecID) *Track {
for _, track := range s.tracks {
if track.Stream.CodecID == id {
return track
}
}
return nil
}
func (s *TrackManager) FindWithType(mediaType utils.AVMediaType) *Track {
for _, track := range s.tracks {
if track.Stream.MediaType == mediaType {
return track
}
}
return nil
}
func (s *TrackManager) FindTracks(id utils.AVCodecID) []*Track {
var tracks []*Track
for _, track := range s.tracks {
if track.Stream.CodecID == id {
tracks = append(tracks, track)
}
}
return tracks
}
func (s *TrackManager) FindTracksWithType(mediaType utils.AVMediaType) []*Track {
var tracks []*Track
for _, track := range s.tracks {
if track.Stream.MediaType == mediaType {
tracks = append(tracks, track)
}
}
return tracks
}
func (s *TrackManager) All() []*Track {
return s.tracks
}