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"
|
"io"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const adtsFrameSamples = 1024
|
||||||
|
|
||||||
type AdtsPacketizer struct {
|
type AdtsPacketizer struct {
|
||||||
reader io.Reader
|
reader io.Reader
|
||||||
samples int64
|
samples int64
|
||||||
|
@ -21,10 +23,14 @@ func (p *AdtsPacket) KeepMode() KeepMode {
|
||||||
return Discard
|
return Discard
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *AdtsPacket) GetSampleNumber() int64 {
|
func (p *AdtsPacket) GetStartSampleNumber() int64 {
|
||||||
return p.sampleNumber
|
return p.sampleNumber
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *AdtsPacket) GetEndSampleNumber() int64 {
|
||||||
|
return p.sampleNumber + adtsFrameSamples
|
||||||
|
}
|
||||||
|
|
||||||
func (p *AdtsPacket) GetData() []byte {
|
func (p *AdtsPacket) GetData() []byte {
|
||||||
return append(p.header.Encode(), p.data...)
|
return append(p.header.Encode(), p.data...)
|
||||||
}
|
}
|
||||||
|
@ -48,7 +54,7 @@ func (o *AdtsPacketizer) GetPacket() Packet {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
packet.sampleNumber = o.samples
|
packet.sampleNumber = o.samples
|
||||||
o.samples += 1024 //always this fixed size per frame
|
o.samples += adtsFrameSamples //always this fixed size per frame
|
||||||
|
|
||||||
return packet
|
return packet
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,19 +16,24 @@ type FLACPacketizer struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type FLACPacket struct {
|
type FLACPacket struct {
|
||||||
mode KeepMode
|
mode KeepMode
|
||||||
sampleNumber int64
|
sampleNumber int64
|
||||||
data []byte
|
endSampleNumber int64
|
||||||
|
data []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *FLACPacket) KeepMode() KeepMode {
|
func (p *FLACPacket) KeepMode() KeepMode {
|
||||||
return p.mode
|
return p.mode
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *FLACPacket) GetSampleNumber() int64 {
|
func (p *FLACPacket) GetStartSampleNumber() int64 {
|
||||||
return p.sampleNumber
|
return p.sampleNumber
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *FLACPacket) GetEndSampleNumber() int64 {
|
||||||
|
return p.endSampleNumber
|
||||||
|
}
|
||||||
|
|
||||||
func (p *FLACPacket) GetData() []byte {
|
func (p *FLACPacket) GetData() []byte {
|
||||||
return p.data
|
return p.data
|
||||||
}
|
}
|
||||||
|
@ -68,9 +73,10 @@ func (o *FLACPacketizer) GetPacket() (packet Packet) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
packet = &FLACPacket{
|
packet = &FLACPacket{
|
||||||
mode: Keep,
|
mode: Keep,
|
||||||
sampleNumber: 0,
|
sampleNumber: 0,
|
||||||
data: o.getBuffer(),
|
endSampleNumber: 0,
|
||||||
|
data: o.getBuffer(),
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -86,9 +92,10 @@ func (o *FLACPacketizer) GetPacket() (packet Packet) {
|
||||||
sampleNumber *= int64(frame.BlockSize)
|
sampleNumber *= int64(frame.BlockSize)
|
||||||
}
|
}
|
||||||
packet = &FLACPacket{
|
packet = &FLACPacket{
|
||||||
mode: Discard,
|
mode: Discard,
|
||||||
sampleNumber: sampleNumber,
|
sampleNumber: sampleNumber,
|
||||||
data: o.getBuffer(),
|
endSampleNumber: sampleNumber + int64(frame.Subframes[0].NSamples),
|
||||||
|
data: o.getBuffer(),
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
|
@ -20,10 +20,14 @@ func (p *Mp3Packet) KeepMode() KeepMode {
|
||||||
return Discard
|
return Discard
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Mp3Packet) GetSampleNumber() int64 {
|
func (p *Mp3Packet) GetStartSampleNumber() int64 {
|
||||||
return p.sampleNumber
|
return p.sampleNumber
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *Mp3Packet) GetEndSampleNumber() int64 {
|
||||||
|
return p.sampleNumber + int64(p.frame.Samples())
|
||||||
|
}
|
||||||
|
|
||||||
func (p *Mp3Packet) GetData() []byte {
|
func (p *Mp3Packet) GetData() []byte {
|
||||||
return p.frame.Bytes()
|
return p.frame.Bytes()
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,10 +35,14 @@ func (p *OggPacket) KeepMode() KeepMode {
|
||||||
return Discard
|
return Discard
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *OggPacket) GetSampleNumber() int64 {
|
func (p *OggPacket) GetStartSampleNumber() int64 {
|
||||||
return p.sampleNumber
|
return p.sampleNumber
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *OggPacket) GetEndSampleNumber() int64 {
|
||||||
|
return p.header.AbsoluteGranulePosition
|
||||||
|
}
|
||||||
|
|
||||||
func (p *OggPacket) GetData() []byte {
|
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)))
|
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)
|
binary.Write(buf, binary.LittleEndian, p.header)
|
||||||
|
|
|
@ -12,7 +12,8 @@ const (
|
||||||
|
|
||||||
type Packet interface {
|
type Packet interface {
|
||||||
KeepMode() KeepMode
|
KeepMode() KeepMode
|
||||||
GetSampleNumber() int64
|
GetStartSampleNumber() int64
|
||||||
|
GetEndSampleNumber() int64
|
||||||
GetData() []byte
|
GetData() []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue