Added start/end sample numbers
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
d0976eac62
commit
f7530d7109
|
@ -6,6 +6,8 @@ import (
|
|||
"io"
|
||||
)
|
||||
|
||||
const adtsFrameSamples = 1024
|
||||
|
||||
type AdtsPacketizer struct {
|
||||
reader io.Reader
|
||||
samples int64
|
||||
|
@ -21,10 +23,14 @@ func (p *AdtsPacket) KeepMode() KeepMode {
|
|||
return Discard
|
||||
}
|
||||
|
||||
func (p *AdtsPacket) GetSampleNumber() int64 {
|
||||
func (p *AdtsPacket) GetStartSampleNumber() int64 {
|
||||
return p.sampleNumber
|
||||
}
|
||||
|
||||
func (p *AdtsPacket) GetEndSampleNumber() int64 {
|
||||
return p.sampleNumber + adtsFrameSamples
|
||||
}
|
||||
|
||||
func (p *AdtsPacket) GetData() []byte {
|
||||
return append(p.header.Encode(), p.data...)
|
||||
}
|
||||
|
@ -48,7 +54,7 @@ func (o *AdtsPacketizer) GetPacket() Packet {
|
|||
return nil
|
||||
}
|
||||
packet.sampleNumber = o.samples
|
||||
o.samples += 1024 //always this fixed size per frame
|
||||
o.samples += adtsFrameSamples //always this fixed size per frame
|
||||
|
||||
return packet
|
||||
}
|
||||
|
|
|
@ -16,19 +16,24 @@ type FLACPacketizer struct {
|
|||
}
|
||||
|
||||
type FLACPacket struct {
|
||||
mode KeepMode
|
||||
sampleNumber int64
|
||||
data []byte
|
||||
mode KeepMode
|
||||
sampleNumber int64
|
||||
endSampleNumber int64
|
||||
data []byte
|
||||
}
|
||||
|
||||
func (p *FLACPacket) KeepMode() KeepMode {
|
||||
return p.mode
|
||||
}
|
||||
|
||||
func (p *FLACPacket) GetSampleNumber() int64 {
|
||||
func (p *FLACPacket) GetStartSampleNumber() int64 {
|
||||
return p.sampleNumber
|
||||
}
|
||||
|
||||
func (p *FLACPacket) GetEndSampleNumber() int64 {
|
||||
return p.endSampleNumber
|
||||
}
|
||||
|
||||
func (p *FLACPacket) GetData() []byte {
|
||||
return p.data
|
||||
}
|
||||
|
@ -68,9 +73,10 @@ func (o *FLACPacketizer) GetPacket() (packet Packet) {
|
|||
return nil
|
||||
}
|
||||
packet = &FLACPacket{
|
||||
mode: Keep,
|
||||
sampleNumber: 0,
|
||||
data: o.getBuffer(),
|
||||
mode: Keep,
|
||||
sampleNumber: 0,
|
||||
endSampleNumber: 0,
|
||||
data: o.getBuffer(),
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -86,9 +92,10 @@ func (o *FLACPacketizer) GetPacket() (packet Packet) {
|
|||
sampleNumber *= int64(frame.BlockSize)
|
||||
}
|
||||
packet = &FLACPacket{
|
||||
mode: Discard,
|
||||
sampleNumber: sampleNumber,
|
||||
data: o.getBuffer(),
|
||||
mode: Discard,
|
||||
sampleNumber: sampleNumber,
|
||||
endSampleNumber: sampleNumber + int64(frame.Subframes[0].NSamples),
|
||||
data: o.getBuffer(),
|
||||
}
|
||||
|
||||
return
|
||||
|
|
|
@ -20,10 +20,14 @@ func (p *Mp3Packet) KeepMode() KeepMode {
|
|||
return Discard
|
||||
}
|
||||
|
||||
func (p *Mp3Packet) GetSampleNumber() int64 {
|
||||
func (p *Mp3Packet) GetStartSampleNumber() int64 {
|
||||
return p.sampleNumber
|
||||
}
|
||||
|
||||
func (p *Mp3Packet) GetEndSampleNumber() int64 {
|
||||
return p.sampleNumber + int64(p.frame.Samples())
|
||||
}
|
||||
|
||||
func (p *Mp3Packet) GetData() []byte {
|
||||
return p.frame.Bytes()
|
||||
}
|
||||
|
|
|
@ -35,10 +35,14 @@ func (p *OggPacket) KeepMode() KeepMode {
|
|||
return Discard
|
||||
}
|
||||
|
||||
func (p *OggPacket) GetSampleNumber() int64 {
|
||||
func (p *OggPacket) GetStartSampleNumber() int64 {
|
||||
return p.sampleNumber
|
||||
}
|
||||
|
||||
func (p *OggPacket) GetEndSampleNumber() int64 {
|
||||
return p.header.AbsoluteGranulePosition
|
||||
}
|
||||
|
||||
func (p *OggPacket) GetData() []byte {
|
||||
buf := bytes.NewBuffer(make([]byte, 0, 4+1+1+8+4+4+4+1+int(p.header.PageSegments)*(255+1)))
|
||||
binary.Write(buf, binary.LittleEndian, p.header)
|
||||
|
|
|
@ -12,7 +12,8 @@ const (
|
|||
|
||||
type Packet interface {
|
||||
KeepMode() KeepMode
|
||||
GetSampleNumber() int64
|
||||
GetStartSampleNumber() int64
|
||||
GetEndSampleNumber() int64
|
||||
GetData() []byte
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue