rename isom to aacparser

This commit is contained in:
nareix 2016-04-19 21:33:07 +08:00
parent a5ec0acea0
commit dfd71d04bf
12 changed files with 230 additions and 255 deletions

View File

@ -1,10 +1,9 @@
package ts package ts
import ( import (
"io"
"fmt"
"encoding/hex" "encoding/hex"
"fmt"
"io"
) )
var ieeeCrc32Tbl = []uint32{ var ieeeCrc32Tbl = []uint32{
@ -101,4 +100,3 @@ func (self *Crc32Writer) Write(b []byte) (n int, err error) {
self.Crc32 = updateIeeeCrc32(self.Crc32, b) self.Crc32 = updateIeeeCrc32(self.Crc32, b)
return return
} }

View File

@ -1,4 +1,3 @@
package ts package ts
import ( import (
@ -11,4 +10,3 @@ func TestChecksum(t *testing.T) {
crc := updateIeeeCrc32(0xffffffff, b) crc := updateIeeeCrc32(0xffffffff, b)
t.Logf("%x", crc) t.Logf("%x", crc)
} }

View File

@ -1,11 +1,10 @@
package ts package ts
import ( import (
"io"
"bytes" "bytes"
"fmt" "fmt"
"github.com/nareix/mp4/isom" "github.com/nareix/codec/aacparser"
"io"
) )
type Demuxer struct { type Demuxer struct {
@ -33,7 +32,7 @@ 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 _, track := range self.Tracks {
if track.payloadReady { if track.payloadReady {
n++ n++
} }
@ -58,7 +57,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 track = _track
return return
@ -87,13 +86,13 @@ func (self *Demuxer) readPacket() (err error) {
} }
} else { } else {
if self.pmt == nil { if self.pmt == nil {
for _, entry := range(self.pat.Entries) { for _, entry := range self.pat.Entries {
if entry.ProgramMapPID == header.PID { if entry.ProgramMapPID == header.PID {
self.pmt = new(PMT) self.pmt = new(PMT)
if *self.pmt, err = ReadPMT(bytes.NewReader(payload)); err != nil { if *self.pmt, err = ReadPMT(bytes.NewReader(payload)); err != nil {
return return
} }
for _, info := range(self.pmt.ElementaryStreamInfos) { for _, info := range self.pmt.ElementaryStreamInfos {
track := &Track{} track := &Track{}
track.demuxer = self track.demuxer = self
@ -113,7 +112,7 @@ func (self *Demuxer) readPacket() (err error) {
} }
} else { } else {
for _, track := range(self.Tracks) { for _, track := range self.Tracks {
if header.PID == track.pid { if header.PID == track.pid {
if err = track.appendPacket(header, payload); err != nil { if err = track.appendPacket(header, payload); err != nil {
return return
@ -126,7 +125,7 @@ func (self *Demuxer) readPacket() (err error) {
return return
} }
func (self *Track) GetMPEG4AudioConfig() isom.MPEG4AudioConfig { func (self *Track) GetMPEG4AudioConfig() aacparser.MPEG4AudioConfig {
return self.mpeg4AudioConfig return self.mpeg4AudioConfig
} }
@ -154,7 +153,7 @@ func (self *Track) appendPayload() (err error) {
if self.Type == AAC { if self.Type == AAC {
if !self.mpeg4AudioConfig.IsValid() { if !self.mpeg4AudioConfig.IsValid() {
if self.mpeg4AudioConfig, _, _, _, err = isom.ReadADTSFrame(self.payload); err != nil { if self.mpeg4AudioConfig, _, _, _, err = aacparser.ReadADTSFrame(self.payload); err != nil {
return return
} }
self.mpeg4AudioConfig = self.mpeg4AudioConfig.Complete() self.mpeg4AudioConfig = self.mpeg4AudioConfig.Complete()
@ -200,4 +199,3 @@ func (self *Track) appendPacket(header TSHeader, payload []byte) (err error) {
return return
} }

View File

@ -1,16 +1,15 @@
package main package main
import ( import (
"bytes"
"os"
"io"
ts "../" ts "../"
"fmt" "bytes"
"encoding/hex"
"encoding/gob" "encoding/gob"
"runtime/pprof" "encoding/hex"
"flag" "flag"
"fmt"
"io"
"os"
"runtime/pprof"
) )
type GobAllSamples struct { type GobAllSamples struct {
@ -157,7 +156,7 @@ func readSamples(filename string, ch chan Sample) {
} }
} }
for _, entry := range(pat.Entries) { for _, entry := range pat.Entries {
if entry.ProgramMapPID == header.PID { if entry.ProgramMapPID == header.PID {
//fmt.Println("matchs", entry) //fmt.Println("matchs", entry)
if pmt, err = ts.ReadPMT(pr); err != nil { if pmt, err = ts.ReadPMT(pr); err != nil {
@ -167,7 +166,7 @@ func readSamples(filename string, ch chan Sample) {
} }
} }
for _, info = range(pmt.ElementaryStreamInfos) { for _, info = range pmt.ElementaryStreamInfos {
if info.ElementaryPID == header.PID { if info.ElementaryPID == header.PID {
onStreamPayload() onStreamPayload()
} }
@ -395,4 +394,3 @@ func main() {
} }
} }

View File

@ -1,12 +1,11 @@
package ts package ts
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"io"
"github.com/nareix/mp4/isom"
"github.com/nareix/codec/h264parser" "github.com/nareix/codec/h264parser"
"github.com/nareix/codec/aacparser"
"io"
) )
type Muxer struct { type Muxer struct {
@ -87,7 +86,7 @@ func (self *Muxer) WriteHeader() (err error) {
} }
// about to remove // about to remove
for _, track := range(self.Tracks) { for _, track := range self.Tracks {
track.spsHasWritten = false track.spsHasWritten = false
} }
@ -106,7 +105,7 @@ func (self *Track) TimeScale() int64 {
return self.timeScale return self.timeScale
} }
func (self *Track) SetMPEG4AudioConfig(config isom.MPEG4AudioConfig) { func (self *Track) SetMPEG4AudioConfig(config aacparser.MPEG4AudioConfig) {
self.mpeg4AudioConfig = config self.mpeg4AudioConfig = config
} }
@ -129,8 +128,8 @@ func (self *Track) WriteSample(pts int64, dts int64, isKeyFrame bool, data []byt
if self.Type == AAC { if self.Type == AAC {
if !isom.IsADTSFrame(data) { if !aacparser.IsADTSFrame(data) {
data = append(isom.MakeADTSHeader(self.mpeg4AudioConfig, 1024, len(data)), data...) data = append(aacparser.MakeADTSHeader(self.mpeg4AudioConfig, 1024, len(data)), data...)
} }
if false { if false {
fmt.Printf("WriteSample=%x\n", data[:5]) fmt.Printf("WriteSample=%x\n", data[:5])
@ -252,4 +251,3 @@ func (self *Track) WriteADTSAACFrame(duration int, frame []byte) (err error) {
self.incPTS(duration) self.incPTS(duration)
return return
} }

View File

@ -1,4 +1,3 @@
package ts package ts
import ( import (
@ -212,7 +211,6 @@ func ReadPSI(r io.Reader) (self PSI, lr *io.LimitedReader, cr *Crc32Reader, err
fmt.Printf("psi: pointer=%d\n", pointer) fmt.Printf("psi: pointer=%d\n", pointer)
} }
if pointer != 0 { if pointer != 0 {
if err = ReadDummy(r, int(pointer)); err != nil { if err = ReadDummy(r, int(pointer)); err != nil {
return return
@ -684,4 +682,3 @@ func ReadPESHeader(r io.Reader) (res *PESHeader, err error) {
res = self res = self
return return
} }

View File

@ -1,9 +1,8 @@
package ts package ts
import ( import (
"bytes" "bytes"
"github.com/nareix/mp4/isom" "github.com/nareix/codec/aacparser"
) )
type Track struct { type Track struct {
@ -16,7 +15,7 @@ type Track struct {
PTS int64 PTS int64
timeScale int64 timeScale int64
mpeg4AudioConfig isom.MPEG4AudioConfig mpeg4AudioConfig aacparser.MPEG4AudioConfig
buf bytes.Buffer buf bytes.Buffer
payload []byte payload []byte
peshdr *PESHeader peshdr *PESHeader
@ -36,4 +35,3 @@ const (
H264 = 1 H264 = 1
AAC = 2 AAC = 2
) )

2
ts.go
View File

@ -1,4 +1,3 @@
package ts package ts
import ( import (
@ -116,4 +115,3 @@ func (self FieldsDumper) String() (res string) {
} }
return return
} }

View File

@ -1,4 +1,3 @@
package ts package ts
import ( import (
@ -8,4 +7,3 @@ import (
func TestPESTsConv(t *testing.T) { func TestPESTsConv(t *testing.T) {
t.Logf("%x", PESTsToUInt(0x123)) t.Logf("%x", PESTsToUInt(0x123))
} }

View File

@ -1,13 +1,12 @@
package ts package ts
import ( import (
"io"
"os"
"net"
"fmt" "fmt"
"unsafe" "io"
"net"
"os"
"syscall" "syscall"
"unsafe"
) )
type iovec struct { type iovec struct {
@ -134,4 +133,3 @@ func newVecWriter(w io.Writer) (vecw *vecWriter) {
} }
return return
} }

View File

@ -1,10 +1,9 @@
package ts package ts
import ( import (
"bytes"
"fmt" "fmt"
"io" "io"
"bytes"
) )
var DebugWriter = false var DebugWriter = false
@ -701,4 +700,3 @@ func (self *SimpleH264Writer) WriteNALU(sync bool, duration int, nalu []byte) (e
return return
} }

View File

@ -1,10 +1,9 @@
package ts package ts
import ( import (
"testing"
"encoding/hex"
"bytes" "bytes"
"encoding/hex"
"testing"
) )
func TestWriteTSHeader(t *testing.T) { func TestWriteTSHeader(t *testing.T) {
@ -16,4 +15,3 @@ func TestWriteTSHeader(t *testing.T) {
w.Write([]byte{'h', 'e', 'l', 'o'}[:], false) w.Write([]byte{'h', 'e', 'l', 'o'}[:], false)
t.Logf("\n%s", hex.Dump(bw.Bytes())) t.Logf("\n%s", hex.Dump(bw.Bytes()))
} }