add stream.go and rewrite track to stream
This commit is contained in:
parent
dfd71d04bf
commit
a4e262dd22
32
demuxer.go
32
demuxer.go
@ -32,8 +32,8 @@ func (self *Demuxer) ReadHeader() (err error) {
|
|||||||
for {
|
for {
|
||||||
if self.pmt != nil {
|
if self.pmt != nil {
|
||||||
n := 0
|
n := 0
|
||||||
for _, track := range self.Tracks {
|
for _, stream := range self.Tracks {
|
||||||
if track.payloadReady {
|
if stream.payloadReady {
|
||||||
n++
|
n++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -50,7 +50,7 @@ func (self *Demuxer) ReadHeader() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Demuxer) ReadSample() (track *Track, err error) {
|
func (self *Demuxer) ReadSample() (stream *Track, err error) {
|
||||||
if len(self.Tracks) == 0 {
|
if len(self.Tracks) == 0 {
|
||||||
err = fmt.Errorf("no track")
|
err = fmt.Errorf("no track")
|
||||||
return
|
return
|
||||||
@ -59,7 +59,7 @@ func (self *Demuxer) ReadSample() (track *Track, err error) {
|
|||||||
for {
|
for {
|
||||||
for _, _track := range self.Tracks {
|
for _, _track := range self.Tracks {
|
||||||
if _track.payloadReady {
|
if _track.payloadReady {
|
||||||
track = _track
|
stream = _track
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -93,28 +93,28 @@ func (self *Demuxer) readPacket() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
for _, info := range self.pmt.ElementaryStreamInfos {
|
for _, info := range self.pmt.ElementaryStreamInfos {
|
||||||
track := &Track{}
|
stream := &Track{}
|
||||||
|
|
||||||
track.demuxer = self
|
stream.demuxer = self
|
||||||
track.pid = info.ElementaryPID
|
stream.pid = info.ElementaryPID
|
||||||
switch info.StreamType {
|
switch info.StreamType {
|
||||||
case ElementaryStreamTypeH264:
|
case ElementaryStreamTypeH264:
|
||||||
track.Type = H264
|
stream.Type = H264
|
||||||
self.TrackH264 = track
|
self.TrackH264 = stream
|
||||||
self.Tracks = append(self.Tracks, track)
|
self.Tracks = append(self.Tracks, stream)
|
||||||
case ElementaryStreamTypeAdtsAAC:
|
case ElementaryStreamTypeAdtsAAC:
|
||||||
track.Type = AAC
|
stream.Type = AAC
|
||||||
self.TrackAAC = track
|
self.TrackAAC = stream
|
||||||
self.Tracks = append(self.Tracks, track)
|
self.Tracks = append(self.Tracks, stream)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
for _, track := range self.Tracks {
|
for _, stream := range self.Tracks {
|
||||||
if header.PID == track.pid {
|
if header.PID == stream.pid {
|
||||||
if err = track.appendPacket(header, payload); err != nil {
|
if err = stream.appendPacket(header, payload); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
32
muxer.go
32
muxer.go
@ -3,8 +3,8 @@ package ts
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/nareix/codec/h264parser"
|
|
||||||
"github.com/nareix/codec/aacparser"
|
"github.com/nareix/codec/aacparser"
|
||||||
|
"github.com/nareix/codec/h264parser"
|
||||||
"io"
|
"io"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -17,8 +17,8 @@ type Muxer struct {
|
|||||||
Tracks []*Track
|
Tracks []*Track
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Muxer) newTrack(pid uint, streamId uint) (track *Track) {
|
func (self *Muxer) newTrack(pid uint, streamId uint) (stream *Track) {
|
||||||
track = &Track{
|
stream = &Track{
|
||||||
mux: self,
|
mux: self,
|
||||||
tsw: &TSWriter{
|
tsw: &TSWriter{
|
||||||
PID: pid,
|
PID: pid,
|
||||||
@ -26,31 +26,31 @@ func (self *Muxer) newTrack(pid uint, streamId uint) (track *Track) {
|
|||||||
},
|
},
|
||||||
streamId: streamId,
|
streamId: streamId,
|
||||||
}
|
}
|
||||||
track.tsw.EnableVecWriter()
|
stream.tsw.EnableVecWriter()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Muxer) AddAACTrack() (track *Track) {
|
func (self *Muxer) AddAACTrack() (stream *Track) {
|
||||||
self.elemStreams = append(
|
self.elemStreams = append(
|
||||||
self.elemStreams,
|
self.elemStreams,
|
||||||
ElementaryStreamInfo{StreamType: ElementaryStreamTypeAdtsAAC, ElementaryPID: 0x101},
|
ElementaryStreamInfo{StreamType: ElementaryStreamTypeAdtsAAC, ElementaryPID: 0x101},
|
||||||
)
|
)
|
||||||
track = self.newTrack(0x101, StreamIdAAC)
|
stream = self.newTrack(0x101, StreamIdAAC)
|
||||||
track.Type = AAC
|
stream.Type = AAC
|
||||||
track.cacheSize = 3000
|
stream.cacheSize = 3000
|
||||||
self.Tracks = append(self.Tracks, track)
|
self.Tracks = append(self.Tracks, stream)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Muxer) AddH264Track() (track *Track) {
|
func (self *Muxer) AddH264Track() (stream *Track) {
|
||||||
self.elemStreams = append(
|
self.elemStreams = append(
|
||||||
self.elemStreams,
|
self.elemStreams,
|
||||||
ElementaryStreamInfo{StreamType: ElementaryStreamTypeH264, ElementaryPID: 0x100},
|
ElementaryStreamInfo{StreamType: ElementaryStreamTypeH264, ElementaryPID: 0x100},
|
||||||
)
|
)
|
||||||
track = self.newTrack(0x100, StreamIdH264)
|
stream = self.newTrack(0x100, StreamIdH264)
|
||||||
track.Type = H264
|
stream.Type = H264
|
||||||
self.TrackH264 = track
|
self.TrackH264 = stream
|
||||||
self.Tracks = append(self.Tracks, track)
|
self.Tracks = append(self.Tracks, stream)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,8 +86,8 @@ func (self *Muxer) WriteHeader() (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// about to remove
|
// about to remove
|
||||||
for _, track := range self.Tracks {
|
for _, stream := range self.Tracks {
|
||||||
track.spsHasWritten = false
|
stream.spsHasWritten = false
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
Loading…
x
Reference in New Issue
Block a user