add stream.go and rewrite track to stream

This commit is contained in:
nareix 2016-04-21 19:21:28 +08:00
parent dfd71d04bf
commit a4e262dd22
3 changed files with 32 additions and 32 deletions

View File

@ -32,8 +32,8 @@ func (self *Demuxer) ReadHeader() (err error) {
for {
if self.pmt != nil {
n := 0
for _, track := range self.Tracks {
if track.payloadReady {
for _, stream := range self.Tracks {
if stream.payloadReady {
n++
}
}
@ -50,7 +50,7 @@ func (self *Demuxer) ReadHeader() (err error) {
return
}
func (self *Demuxer) ReadSample() (track *Track, err error) {
func (self *Demuxer) ReadSample() (stream *Track, err error) {
if len(self.Tracks) == 0 {
err = fmt.Errorf("no track")
return
@ -59,7 +59,7 @@ func (self *Demuxer) ReadSample() (track *Track, err error) {
for {
for _, _track := range self.Tracks {
if _track.payloadReady {
track = _track
stream = _track
return
}
}
@ -93,28 +93,28 @@ func (self *Demuxer) readPacket() (err error) {
return
}
for _, info := range self.pmt.ElementaryStreamInfos {
track := &Track{}
stream := &Track{}
track.demuxer = self
track.pid = info.ElementaryPID
stream.demuxer = self
stream.pid = info.ElementaryPID
switch info.StreamType {
case ElementaryStreamTypeH264:
track.Type = H264
self.TrackH264 = track
self.Tracks = append(self.Tracks, track)
stream.Type = H264
self.TrackH264 = stream
self.Tracks = append(self.Tracks, stream)
case ElementaryStreamTypeAdtsAAC:
track.Type = AAC
self.TrackAAC = track
self.Tracks = append(self.Tracks, track)
stream.Type = AAC
self.TrackAAC = stream
self.Tracks = append(self.Tracks, stream)
}
}
}
}
} else {
for _, track := range self.Tracks {
if header.PID == track.pid {
if err = track.appendPacket(header, payload); err != nil {
for _, stream := range self.Tracks {
if header.PID == stream.pid {
if err = stream.appendPacket(header, payload); err != nil {
return
}
}

View File

@ -3,8 +3,8 @@ package ts
import (
"bytes"
"fmt"
"github.com/nareix/codec/h264parser"
"github.com/nareix/codec/aacparser"
"github.com/nareix/codec/h264parser"
"io"
)
@ -17,8 +17,8 @@ type Muxer struct {
Tracks []*Track
}
func (self *Muxer) newTrack(pid uint, streamId uint) (track *Track) {
track = &Track{
func (self *Muxer) newTrack(pid uint, streamId uint) (stream *Track) {
stream = &Track{
mux: self,
tsw: &TSWriter{
PID: pid,
@ -26,31 +26,31 @@ func (self *Muxer) newTrack(pid uint, streamId uint) (track *Track) {
},
streamId: streamId,
}
track.tsw.EnableVecWriter()
stream.tsw.EnableVecWriter()
return
}
func (self *Muxer) AddAACTrack() (track *Track) {
func (self *Muxer) AddAACTrack() (stream *Track) {
self.elemStreams = append(
self.elemStreams,
ElementaryStreamInfo{StreamType: ElementaryStreamTypeAdtsAAC, ElementaryPID: 0x101},
)
track = self.newTrack(0x101, StreamIdAAC)
track.Type = AAC
track.cacheSize = 3000
self.Tracks = append(self.Tracks, track)
stream = self.newTrack(0x101, StreamIdAAC)
stream.Type = AAC
stream.cacheSize = 3000
self.Tracks = append(self.Tracks, stream)
return
}
func (self *Muxer) AddH264Track() (track *Track) {
func (self *Muxer) AddH264Track() (stream *Track) {
self.elemStreams = append(
self.elemStreams,
ElementaryStreamInfo{StreamType: ElementaryStreamTypeH264, ElementaryPID: 0x100},
)
track = self.newTrack(0x100, StreamIdH264)
track.Type = H264
self.TrackH264 = track
self.Tracks = append(self.Tracks, track)
stream = self.newTrack(0x100, StreamIdH264)
stream.Type = H264
self.TrackH264 = stream
self.Tracks = append(self.Tracks, stream)
return
}
@ -86,8 +86,8 @@ func (self *Muxer) WriteHeader() (err error) {
}
// about to remove
for _, track := range self.Tracks {
track.spsHasWritten = false
for _, stream := range self.Tracks {
stream.spsHasWritten = false
}
return

View File