mirror of
https://github.com/lkmio/lkm.git
synced 2025-09-27 03:26:01 +08:00
65 lines
1.2 KiB
Go
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
|
|
}
|