ts: fix demuxer adts parse bug
This commit is contained in:
parent
0da1951da5
commit
8c9fc95dfc
@ -2,7 +2,7 @@ package ts
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
_"fmt"
|
||||||
"time"
|
"time"
|
||||||
"github.com/nareix/pio"
|
"github.com/nareix/pio"
|
||||||
"github.com/nareix/joy4/av"
|
"github.com/nareix/joy4/av"
|
||||||
@ -171,26 +171,21 @@ func (self *Stream) payloadEnd() (err error) {
|
|||||||
switch self.streamType {
|
switch self.streamType {
|
||||||
case ElementaryStreamTypeAdtsAAC:
|
case ElementaryStreamTypeAdtsAAC:
|
||||||
var config aacparser.MPEG4AudioConfig
|
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)
|
delta := time.Duration(0)
|
||||||
for len(payload) > 0 {
|
for len(payload) > 0 {
|
||||||
var hdrlen, framelen, samples int
|
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
|
return
|
||||||
}
|
}
|
||||||
|
if self.CodecData == nil {
|
||||||
|
if self.CodecData, err = aacparser.NewCodecDataFromMPEG4AudioConfig(config); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
self.addPacket(payload[hdrlen:framelen], delta)
|
self.addPacket(payload[hdrlen:framelen], delta)
|
||||||
delta += time.Duration(samples) * time.Second / time.Duration(config.SampleRate)
|
delta += time.Duration(samples) * time.Second / time.Duration(config.SampleRate)
|
||||||
payload = payload[:framelen]
|
payload = payload[framelen:]
|
||||||
}
|
}
|
||||||
|
|
||||||
case ElementaryStreamTypeH264:
|
case ElementaryStreamTypeH264:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user