diff --git a/example/test.go b/example/test.go index 556baf7..37ecf58 100644 --- a/example/test.go +++ b/example/test.go @@ -74,6 +74,7 @@ func readSamples(filename string, ch chan Sample) { stream := findOrCreateStream(header.PID) r := bytes.NewReader(payload) lr := &io.LimitedReader{R: r, N: int64(len(payload))} + if header.PayloadUnitStart { stream.Data = bytes.Buffer{} if stream.Header, err = ts.ReadPESHeader(lr); err != nil { @@ -81,6 +82,7 @@ func readSamples(filename string, ch chan Sample) { } stream.PCR = header.PCR } + if _, err = io.CopyN(&stream.Data, lr, lr.N); err != nil { return } diff --git a/reader.go b/reader.go index a28940a..64e3340 100644 --- a/reader.go +++ b/reader.go @@ -533,8 +533,7 @@ func ReadPESHeader(r io.Reader) (res *PESHeader, err error) { self.PTS = PESUIntToTs(v) if DebugReader { - fmt.Printf("pes: pts %x=>%x %f\n", - v, self.PTS, float64(self.PTS)/90000) + fmt.Printf("pes: pts %d %f\n", self.PTS, float64(self.PTS)/90000) } } @@ -545,7 +544,7 @@ func ReadPESHeader(r io.Reader) (res *PESHeader, err error) { } self.DTS = PESUIntToTs(v) if DebugReader { - fmt.Printf("pes: dts %d\n", self.PTS) + fmt.Printf("pes: dts %d %f\n", self.DTS, float64(self.DTS)/90000) } } diff --git a/ts.go b/ts.go index 5babab6..56a909f 100644 --- a/ts.go +++ b/ts.go @@ -74,7 +74,7 @@ func PESUIntToTs(v uint64) (ts uint64) { func PESTsToUInt(ts uint64) (v uint64) { // 0010 PTS 32..30 1 PTS 29..15 1 PTS 14..00 1 - return ((ts>>30)&0x7)<<33 | ((ts>>15)&0x7fff)<<17 | (v&0x7fff)<<1 | 0x100010001 + return ((ts>>30)&0x7)<<33 | ((ts>>15)&0x7fff)<<17 | (ts&0x7fff)<<1 | 0x100010001 } func UIntToPCR(v uint64) uint64 {