change float64->float32

This commit is contained in:
nareix 2016-06-18 08:12:43 +08:00
parent bfcfd605e6
commit 97f2cceb2c
4 changed files with 28 additions and 29 deletions

View File

@ -2,8 +2,8 @@ package ts
import ( import (
"bytes" "bytes"
"fmt"
"encoding/hex" "encoding/hex"
"fmt"
"github.com/nareix/av" "github.com/nareix/av"
"github.com/nareix/av/pktqueue" "github.com/nareix/av/pktqueue"
"github.com/nareix/codec/aacparser" "github.com/nareix/codec/aacparser"
@ -23,7 +23,7 @@ func Open(R io.Reader) (demuxer *Demuxer, err error) {
type Demuxer struct { type Demuxer struct {
R io.Reader R io.Reader
gotpkt bool gotpkt bool
pktque *pktqueue.Queue pktque *pktqueue.Queue
pat PAT pat PAT
pmt *PMT pmt *PMT
@ -41,7 +41,7 @@ func (self *Demuxer) Streams() (streams []av.CodecData, err error) {
return return
} }
func (self *Demuxer) CurrentTime() (time float64) { func (self *Demuxer) CurrentTime() (time float32) {
if self.pktque != nil { if self.pktque != nil {
time = self.pktque.CurrentTime() time = self.pktque.CurrentTime()
} }
@ -156,11 +156,11 @@ func (self *Stream) payloadEnd() (err error) {
pkt := av.Packet{ pkt := av.Packet{
IsKeyFrame: self.tshdr.RandomAccessIndicator, IsKeyFrame: self.tshdr.RandomAccessIndicator,
Data: payload, Data: payload,
} }
time := float64(dts)/float64(PTS_HZ) time := float32(dts) / float32(PTS_HZ)
if pts != dts { if pts != dts {
pkt.CompositionTime = float64(pts-dts)/float64(PTS_HZ) pkt.CompositionTime = float32(pts-dts) / float32(PTS_HZ)
} }
self.demuxer.pktque.WriteTimePacket(self.idx, time, pkt) self.demuxer.pktque.WriteTimePacket(self.idx, time, pkt)
self.demuxer.gotpkt = true self.demuxer.gotpkt = true
@ -188,7 +188,7 @@ func (self *Stream) payloadEnd() (err error) {
var sps, pps []byte var sps, pps []byte
for _, nalu := range nalus { for _, nalu := range nalus {
if len(nalu) > 0 { if len(nalu) > 0 {
naltype := nalu[0]&0x1f naltype := nalu[0] & 0x1f
if naltype == 7 { if naltype == 7 {
sps = nalu sps = nalu
} else if naltype == 8 { } else if naltype == 8 {
@ -237,4 +237,3 @@ func (self *Stream) handleTSPacket(header TSHeader, tspacket []byte) (err error)
return return
} }

View File

@ -19,12 +19,12 @@ func Create(W io.Writer, streams []av.CodecData) (muxer *Muxer, err error) {
} }
type Muxer struct { type Muxer struct {
W io.Writer W io.Writer
streams []*Stream streams []*Stream
PaddingToMakeCounterCont bool PaddingToMakeCounterCont bool
tswPAT *TSWriter tswPAT *TSWriter
tswPMT *TSWriter tswPMT *TSWriter
} }
func (self *Muxer) isCodecSupported(codec av.CodecData) bool { func (self *Muxer) isCodecSupported(codec av.CodecData) bool {
@ -43,7 +43,7 @@ func (self *Muxer) newStream(codec av.CodecData) (err error) {
} }
stream := &Stream{ stream := &Stream{
muxer: self, muxer: self,
CodecData: codec, CodecData: codec,
tsw: &TSWriter{ tsw: &TSWriter{
DiscontinuityIndicator: true, DiscontinuityIndicator: true,
@ -57,7 +57,7 @@ func (self *Muxer) newStream(codec av.CodecData) (err error) {
func (self *Muxer) writePaddingTSPackets(tsw *TSWriter) (err error) { func (self *Muxer) writePaddingTSPackets(tsw *TSWriter) (err error) {
for tsw.ContinuityCounter&0xf != 0x0 { for tsw.ContinuityCounter&0xf != 0x0 {
header := TSHeader{ header := TSHeader{
PID: tsw.PID, PID: tsw.PID,
ContinuityCounter: tsw.ContinuityCounter, ContinuityCounter: tsw.ContinuityCounter,
} }
if _, err = WriteTSHeader(self.W, header, 0); err != nil { if _, err = WriteTSHeader(self.W, header, 0); err != nil {

View File

@ -133,7 +133,7 @@ func ReadTSHeader(r io.Reader) (self TSHeader, err error) {
// clock is 27MHz // clock is 27MHz
self.PCR = UIntToPCR(v) self.PCR = UIntToPCR(v)
if DebugReader { if DebugReader {
fmt.Fprintf(DebugOutput, "ts: PCR %d %f\n", self.PCR, float64(self.PCR)/PCR_HZ) fmt.Fprintf(DebugOutput, "ts: PCR %d %f\n", self.PCR, float32(self.PCR)/PCR_HZ)
} }
} }
@ -572,7 +572,7 @@ func ReadPESHeader(r io.Reader) (res *PESHeader, err error) {
self.PTS = PESUIntToTs(v) self.PTS = PESUIntToTs(v)
if DebugReader { if DebugReader {
fmt.Fprintf(DebugOutput, "pes: pts %d %f\n", self.PTS, float64(self.PTS)/float64(PTS_HZ)) fmt.Fprintf(DebugOutput, "pes: pts %d %f\n", self.PTS, float32(self.PTS)/float32(PTS_HZ))
} }
} }
@ -583,7 +583,7 @@ func ReadPESHeader(r io.Reader) (res *PESHeader, err error) {
} }
self.DTS = PESUIntToTs(v) self.DTS = PESUIntToTs(v)
if DebugReader { if DebugReader {
fmt.Fprintf(DebugOutput, "pes: dts %d %f\n", self.DTS, float64(self.DTS)/float64(PTS_HZ)) fmt.Fprintf(DebugOutput, "pes: dts %d %f\n", self.DTS, float32(self.DTS)/float32(PTS_HZ))
} }
} }

View File

@ -8,30 +8,30 @@ import (
type Stream struct { type Stream struct {
av.CodecData av.CodecData
pid uint pid uint
buf bytes.Buffer buf bytes.Buffer
peshdr *PESHeader peshdr *PESHeader
tshdr TSHeader tshdr TSHeader
demuxer *Demuxer demuxer *Demuxer
muxer *Muxer muxer *Muxer
streamId uint streamId uint
streamType uint streamType uint
tsw *TSWriter tsw *TSWriter
dataBuf *iovec dataBuf *iovec
cacheSize int cacheSize int
idx int idx int
pkt av.Packet pkt av.Packet
time float64 time float32
} }
func timeToPesTs(time float64) uint64 { func timeToPesTs(time float32) uint64 {
return uint64(time*PTS_HZ) + PTS_HZ return uint64(time*PTS_HZ) + PTS_HZ
} }
func timeToPCR(time float64) uint64 { func timeToPCR(time float32) uint64 {
return uint64(time*PCR_HZ) + PCR_HZ return uint64(time*PCR_HZ) + PCR_HZ
} }