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 { 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
} }
} }

View File

@ -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

View File