Proper FLAC byte reader, use buffered reader
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
DataHoarder 2022-03-01 22:02:06 +01:00
parent 4631fb06e8
commit 385e440775
6 changed files with 20 additions and 8 deletions

View file

@ -2,6 +2,7 @@ package Kirika
import (
"bytes"
"crypto/sha256"
"encoding/hex"
"git.gammaspectra.live/S.O.N.G/Kirika/audio"
"git.gammaspectra.live/S.O.N.G/Kirika/audio/format"
@ -314,6 +315,10 @@ func TestPacketizeFLAC(t *testing.T) {
reader, writer := io.Pipe()
shaHasher := sha256.New()
shaPacketHasher := sha256.New()
encodeReader := io.TeeReader(reader, shaHasher)
go func() {
defer writer.Close()
err = flac.NewFormat().Encode(source, writer, nil)
@ -323,7 +328,7 @@ func TestPacketizeFLAC(t *testing.T) {
}
}()
pipePacketizer := packetizer.NewFLACPacketizer(reader)
pipePacketizer := packetizer.NewFLACPacketizer(encodeReader)
packetCount := 0
packetBytes := 0
for {
@ -333,12 +338,16 @@ func TestPacketizeFLAC(t *testing.T) {
}
packetCount++
packetBytes += len(packet.GetData())
shaPacketHasher.Write(packet.GetData())
}
if packetCount != 4231 {
t.Errorf("Wrong Packet Count %d != %d", packetCount, 4231)
}
if packetBytes != 51515502 {
t.Errorf("Wrong Packet Bytes %d != %d", packetBytes, 51515502)
t.Errorf("Wrong Packet Bytes %d != %d", packetBytes, 51513533)
}
if bytes.Compare(shaHasher.Sum([]byte{}), shaPacketHasher.Sum([]byte{})) != 0 {
t.Errorf("Mismatch on byte output %X != %X", shaPacketHasher.Sum([]byte{}), shaHasher.Sum([]byte{}))
}
}

View file

@ -1,6 +1,7 @@
package packetizer
import (
"bufio"
aac_adts "github.com/edgeware/mp4ff/aac"
"io"
)
@ -28,7 +29,7 @@ func (p *AdtsPacket) GetData() []byte {
}
func NewAdtsPacketizer(reader io.Reader) *AdtsPacketizer {
return &AdtsPacketizer{reader: reader}
return &AdtsPacketizer{reader: bufio.NewReader(reader)}
}
func (o *AdtsPacketizer) GetPacket() Packet {

View file

@ -40,7 +40,7 @@ func NewFLACPacketizer(reader io.Reader) *FLACPacketizer {
func (o *FLACPacketizer) Read(p []byte) (n int, err error) {
n, err = o.reader.Read(p)
if err == nil {
o.buffer = append(o.buffer, p...)
o.buffer = append(o.buffer, p[:n]...)
}
o.bytesRead += int64(n)
return

View file

@ -1,6 +1,7 @@
package packetizer
import (
"bufio"
mp3parser "github.com/sssgun/mp3"
"io"
)
@ -28,7 +29,7 @@ func (p *Mp3Packet) GetData() []byte {
}
func NewMp3Packetizer(reader io.Reader) *Mp3Packetizer {
return &Mp3Packetizer{decoder: mp3parser.NewDecoder(reader)}
return &Mp3Packetizer{decoder: mp3parser.NewDecoder(bufio.NewReader(reader))}
}
func (o *Mp3Packetizer) GetPacket() Packet {

View file

@ -1,6 +1,7 @@
package packetizer
import (
"bufio"
"bytes"
"encoding/binary"
"io"
@ -51,7 +52,7 @@ func (p *OggPacket) GetData() []byte {
}
func NewOggPacketizer(reader io.Reader) *OggPacketizer {
return &OggPacketizer{reader: reader}
return &OggPacketizer{reader: bufio.NewReader(reader)}
}
func (o *OggPacketizer) GetPacket() Packet {

View file

@ -138,8 +138,8 @@ __attribute__((weak)) void audio_int24_to_float32(int8_t* restrict data, size_t
for (int i = 0; i < data_len; i += 3){
sample = data[i];
sample += ((int) data[i+1]) << 8;
sample += ((int) data[i+2]) << 16;
sample += ((uint32_t) data[i+1]) << 8;
sample += ((uint32_t) data[i+2]) << 16;
//sign extend
buffer[i/3] = ((float)((int32_t)(sample << 8) >> 8)) / BITS_TO_DIV(bitDepth);