ts: fix demuxer adts parse bug

This commit is contained in:
nareix 2016-07-04 01:07:26 +08:00
parent 0da1951da5
commit 8c9fc95dfc

View File

@ -2,7 +2,7 @@ package ts
import (
"bytes"
"fmt"
_"fmt"
"time"
"github.com/nareix/pio"
"github.com/nareix/joy4/av"
@ -171,26 +171,21 @@ func (self *Stream) payloadEnd() (err error) {
switch self.streamType {
case ElementaryStreamTypeAdtsAAC:
var config aacparser.MPEG4AudioConfig
if config, _, _, _, err = aacparser.ParseADTSHeader(payload); err != nil {
err = fmt.Errorf("ts: aac invalid: %s", err)
return
}
if self.CodecData == nil {
if self.CodecData, err = aacparser.NewCodecDataFromMPEG4AudioConfig(config); err != nil {
return
}
}
delta := time.Duration(0)
for len(payload) > 0 {
var hdrlen, framelen, samples int
if _, hdrlen, framelen, samples, err = aacparser.ParseADTSHeader(payload); err != nil {
if config, hdrlen, framelen, samples, err = aacparser.ParseADTSHeader(payload); err != nil {
return
}
if self.CodecData == nil {
if self.CodecData, err = aacparser.NewCodecDataFromMPEG4AudioConfig(config); err != nil {
return
}
}
self.addPacket(payload[hdrlen:framelen], delta)
delta += time.Duration(samples) * time.Second / time.Duration(config.SampleRate)
payload = payload[:framelen]
payload = payload[framelen:]
}
case ElementaryStreamTypeH264: