65 lines
1.1 KiB
Go
65 lines
1.1 KiB
Go
package go_alac
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestEncode(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
f, err := os.Open("sample/test_s16.raw")
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
defer f.Close()
|
|
|
|
data, err := ioutil.ReadAll(f)
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
|
|
o, err := os.Create("sample/test_s16_output.alac")
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
defer o.Close()
|
|
|
|
writeTestCase := func(n int, cookie []byte, data []byte) {
|
|
out, err := os.Create(fmt.Sprintf("/home/shoghicp/radio/alac_afl/test/packets_%d.alac", n))
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
defer out.Close()
|
|
out.Write(cookie)
|
|
out.Write(data)
|
|
}
|
|
|
|
encoder := NewFrameEncoder(44100, 2, 16, false)
|
|
o.Write(encoder.GetMagicCookie())
|
|
packetSize := encoder.GetInputSize()
|
|
packets := 0
|
|
for len(data) > packetSize {
|
|
resultPacket := encoder.WritePacket(data[:packetSize])
|
|
o.Write(resultPacket)
|
|
data = data[packetSize:]
|
|
|
|
writeTestCase(packets, encoder.GetMagicCookie(), resultPacket)
|
|
packets++
|
|
}
|
|
return
|
|
|
|
if len(data) > 0 {
|
|
resultPacket := encoder.WritePacket(data)
|
|
o.Write(resultPacket)
|
|
}
|
|
|
|
o.Sync()
|
|
o.Close()
|
|
}
|