diff --git a/audio/packetizer/adts.go b/audio/packetizer/adts.go index 10a14e4..5c79918 100644 --- a/audio/packetizer/adts.go +++ b/audio/packetizer/adts.go @@ -15,9 +15,10 @@ type AdtsPacketizer struct { } type AdtsPacket struct { - sampleNumber int64 - header *aacAdts.ADTSHeader - data []byte + SampleNumber int64 + Header *aacAdts.ADTSHeader + // Data raw AAC frame + Data []byte } func (p *AdtsPacket) KeepMode() KeepMode { @@ -25,11 +26,11 @@ func (p *AdtsPacket) KeepMode() KeepMode { } func (p *AdtsPacket) GetStartSampleNumber() int64 { - return p.sampleNumber + return p.SampleNumber } func (p *AdtsPacket) GetEndSampleNumber() int64 { - return p.sampleNumber + adtsAACFrameSamples + return p.SampleNumber + adtsAACFrameSamples } func (p *AdtsPacket) Category() int64 { @@ -37,8 +38,8 @@ func (p *AdtsPacket) Category() int64 { } func (p *AdtsPacket) GetData() (result []byte) { - result = append(result, p.header.Encode()...) - result = append(result, p.data...) + result = append(result, p.Header.Encode()...) + result = append(result, p.Data...) return } @@ -59,19 +60,19 @@ func (o *AdtsPacketizer) GetPacket() Packet { return nil } - packet.header = header - packet.data = make([]byte, packet.header.PayloadLength) + packet.Header = header + packet.Data = make([]byte, packet.Header.PayloadLength) var n int - if n, err = io.ReadFull(o.reader, packet.data); err != nil { + if n, err = io.ReadFull(o.reader, packet.Data); err != nil { return nil } - if n != len(packet.data) { + if n != len(packet.Data) { return nil } - packet.sampleNumber = o.samples + packet.SampleNumber = o.samples o.samples += adtsAACFrameSamples //always this fixed size per frame return packet diff --git a/audio/packetizer/flac.go b/audio/packetizer/flac.go index d1d7db3..cbefa32 100644 --- a/audio/packetizer/flac.go +++ b/audio/packetizer/flac.go @@ -22,7 +22,6 @@ type FLACHeaderPacket struct { TotalSamples uint64 Hash [128 / 8]byte MetadataBlocks [][]byte - buf []byte } func (p *FLACHeaderPacket) KeepMode() KeepMode { @@ -84,9 +83,7 @@ func readFlacMetadataBlock(br *bitio.Reader) (block byte, data []byte) { } func readFlacHeader(br *bitio.Reader) *FLACHeaderPacket { - hdr := &FLACHeaderPacket{ - buf: make([]byte, 0, 1024*1024), - } + hdr := &FLACHeaderPacket{} if _, err := br.Read(hdr.Capture[:]); err != nil || bytes.Compare(hdr.Capture[:], []byte("fLaC")) != 0 { return nil diff --git a/audio/packetizer/mp3.go b/audio/packetizer/mp3.go index 4eef9fe..c630db5 100644 --- a/audio/packetizer/mp3.go +++ b/audio/packetizer/mp3.go @@ -12,8 +12,8 @@ type Mp3Packetizer struct { } type Mp3Packet struct { - sampleNumber int64 - frame mp3parser.Frame + SampleNumber int64 + Frame mp3parser.Frame } func (p *Mp3Packet) KeepMode() KeepMode { @@ -21,11 +21,11 @@ func (p *Mp3Packet) KeepMode() KeepMode { } func (p *Mp3Packet) GetStartSampleNumber() int64 { - return p.sampleNumber + return p.SampleNumber } func (p *Mp3Packet) GetEndSampleNumber() int64 { - return p.sampleNumber + int64(p.frame.Samples()) + return p.SampleNumber + int64(p.Frame.Samples()) } func (p *Mp3Packet) Category() int64 { @@ -33,7 +33,7 @@ func (p *Mp3Packet) Category() int64 { } func (p *Mp3Packet) GetData() []byte { - return p.frame.Bytes() + return p.Frame.Bytes() } func (p *Mp3Packet) GetDataOffset(_ int64) []byte { @@ -49,12 +49,12 @@ func (o *Mp3Packetizer) GetPacket() Packet { var skipped int - if err := o.decoder.Decode(&packet.frame, &skipped); err != nil { + if err := o.decoder.Decode(&packet.Frame, &skipped); err != nil { return nil } - packet.sampleNumber = o.samples - o.samples += int64(packet.frame.Samples()) + packet.SampleNumber = o.samples + o.samples += int64(packet.Frame.Samples()) return packet } diff --git a/audio/packetizer/ogg.go b/audio/packetizer/ogg.go index 891c802..e8fa13b 100644 --- a/audio/packetizer/ogg.go +++ b/audio/packetizer/ogg.go @@ -24,36 +24,36 @@ type oggPacketHeader struct { PageSegments byte } type OggPacket struct { - sampleNumber int64 - header oggPacketHeader - pageSegmentTable []byte - segments [][]byte + SampleNumber int64 + Header oggPacketHeader + PageSegmentTable []byte + Segments [][]byte } func (p *OggPacket) KeepMode() KeepMode { - if p.header.AbsoluteGranulePosition == 0 { + if p.Header.AbsoluteGranulePosition == 0 { return Keep } return Discard } func (p *OggPacket) GetStartSampleNumber() int64 { - return p.sampleNumber + return p.SampleNumber } func (p *OggPacket) GetEndSampleNumber() int64 { - return p.header.AbsoluteGranulePosition + return p.Header.AbsoluteGranulePosition } func (p *OggPacket) Category() int64 { - return int64(p.header.StreamSerialNumber) + return int64(p.Header.StreamSerialNumber) } 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) - _ = binary.Write(buf, binary.LittleEndian, p.pageSegmentTable) - for _, segment := range p.segments { + 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.PageSegmentTable) + for _, segment := range p.Segments { if len(segment) > 0 { _ = binary.Write(buf, binary.LittleEndian, segment) } @@ -63,15 +63,15 @@ func (p *OggPacket) GetData() []byte { } func (p *OggPacket) GetDataOffset(offset int64) []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))) //rewrite header - headerClone := p.header + headerClone := p.Header headerClone.AbsoluteGranulePosition -= offset headerClone.PageChecksum = 0 _ = binary.Write(buf, binary.LittleEndian, headerClone) - _ = binary.Write(buf, binary.LittleEndian, p.pageSegmentTable) - for _, segment := range p.segments { + _ = binary.Write(buf, binary.LittleEndian, p.PageSegmentTable) + for _, segment := range p.Segments { if len(segment) > 0 { _ = binary.Write(buf, binary.LittleEndian, segment) } @@ -89,28 +89,28 @@ func NewOggPacketizer(reader io.Reader) *OggPacketizer { func (o *OggPacketizer) GetPacket() Packet { packet := &OggPacket{} - if err := binary.Read(o.reader, binary.LittleEndian, &packet.header); err != nil || bytes.Compare(packet.header.Capture[:], []byte{'O', 'g', 'g', 'S'}) != 0 { + if err := binary.Read(o.reader, binary.LittleEndian, &packet.Header); err != nil || bytes.Compare(packet.Header.Capture[:], []byte{'O', 'g', 'g', 'S'}) != 0 { return nil } - packet.pageSegmentTable = make([]byte, packet.header.PageSegments) - if err := binary.Read(o.reader, binary.LittleEndian, packet.pageSegmentTable); err != nil { + packet.PageSegmentTable = make([]byte, packet.Header.PageSegments) + if err := binary.Read(o.reader, binary.LittleEndian, packet.PageSegmentTable); err != nil { return nil } - packet.segments = make([][]byte, packet.header.PageSegments) + packet.Segments = make([][]byte, packet.Header.PageSegments) - for i, size := range packet.pageSegmentTable { + for i, size := range packet.PageSegmentTable { if size > 0 { - packet.segments[i] = make([]byte, size) - if err := binary.Read(o.reader, binary.LittleEndian, packet.segments[i]); err != nil { + packet.Segments[i] = make([]byte, size) + if err := binary.Read(o.reader, binary.LittleEndian, packet.Segments[i]); err != nil { return nil } } } //use previous sample number instead - packet.sampleNumber = o.samples - o.samples = packet.header.AbsoluteGranulePosition + packet.SampleNumber = o.samples + o.samples = packet.Header.AbsoluteGranulePosition return packet }