update pkg wave
This commit is contained in:
parent
a5d7aea48e
commit
f05a80459e
|
@ -39,8 +39,8 @@ func Decompress(infile io.ReadWriteSeeker, outfile io.WriteSeeker, passwd string
|
|||
}
|
||||
smpSize := info.nch * ((info.bps + 7) / 8)
|
||||
dataSize := info.samples * smpSize
|
||||
waveHdr := wave.NewHeader(dataSize, info.nch, info.sps, info.bps, smpSize)
|
||||
if err = waveHdr.Write(outfile, dataSize); err != nil {
|
||||
waveHdr := wave.NewHeader(dataSize, uint16(info.nch), info.sps, uint16(info.bps), uint16(smpSize))
|
||||
if err = waveHdr.Write(outfile); err != nil {
|
||||
return
|
||||
}
|
||||
bufSize := pcmBufferLength * smpSize
|
||||
|
|
14
wave/wav.go
14
wave/wav.go
|
@ -54,7 +54,7 @@ type ExtHeader struct {
|
|||
} // WaveSubformat
|
||||
}
|
||||
|
||||
func NewHeader(dataSize, nch, sps, bps, smpSize uint32) *Header {
|
||||
func NewHeader(dataSize uint32, nch uint16, sps uint32, bps uint16, smpSize uint16) *Header {
|
||||
return &Header{
|
||||
ChunkId: magicRiff,
|
||||
ChunkSize: dataSize + 36,
|
||||
|
@ -62,11 +62,11 @@ func NewHeader(dataSize, nch, sps, bps, smpSize uint32) *Header {
|
|||
SubchunkId: magicFormat,
|
||||
SubchunkSize: 16,
|
||||
AudioFormat: 1,
|
||||
NumChannels: uint16(nch),
|
||||
NumChannels: nch,
|
||||
SampleRate: sps,
|
||||
ByteRate: sps * smpSize,
|
||||
BlockAlign: uint16(smpSize),
|
||||
BitsPerSample: uint16(bps),
|
||||
ByteRate: sps * uint32(smpSize),
|
||||
BlockAlign: smpSize,
|
||||
BitsPerSample: bps,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -157,7 +157,7 @@ func (w *Header) Read(fd io.ReadSeeker) (subchunkSize uint32, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func (w *Header) Write(fd io.Writer, size uint32) (err error) {
|
||||
func (w *Header) Write(fd io.Writer) (err error) {
|
||||
var writeLen int
|
||||
// Write WAVE header
|
||||
if writeLen, err = fd.Write(w.Bytes()); err != nil {
|
||||
|
@ -167,7 +167,7 @@ func (w *Header) Write(fd io.Writer, size uint32) (err error) {
|
|||
return
|
||||
}
|
||||
// Write Subchunk header
|
||||
subchunkHdr := SubchunkHeader{magicChunk, size}
|
||||
subchunkHdr := SubchunkHeader{magicChunk, w.ChunkSize - 36}
|
||||
if writeLen, err = fd.Write(subchunkHdr.Bytes()); err != nil {
|
||||
return
|
||||
} else if writeLen != int(unsafe.Sizeof(subchunkHdr)) {
|
||||
|
|
|
@ -9,7 +9,6 @@ import (
|
|||
var wavSlice = []byte{0x52, 0x49, 0x46, 0x46, 0x98, 0x03, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45, 0x66, 0x6d, 0x74, 0x20,
|
||||
0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x44, 0xac, 0x00, 0x00, 0x10, 0xb1, 0x02, 0x00,
|
||||
0x04, 0x00, 0x10, 0x00}
|
||||
var wavSize = uint32(0x0374)
|
||||
|
||||
func TestReadHeader(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
@ -22,7 +21,7 @@ func TestReadHeader(t *testing.T) {
|
|||
if size, err := wav.Read(file); err != nil {
|
||||
t.Error(err)
|
||||
} else {
|
||||
if bytes.Compare(wavSlice, wav.Bytes()) != 0 || size != wavSize {
|
||||
if bytes.Compare(wavSlice, wav.Bytes()) != 0 || size != wav.ChunkSize-36 {
|
||||
t.Error("Header::Read fail")
|
||||
}
|
||||
}
|
||||
|
@ -39,7 +38,7 @@ func TestWriteHeader(t *testing.T) {
|
|||
defer os.Remove(filename)
|
||||
wav := Header{}
|
||||
copy(wav.Bytes(), wavSlice)
|
||||
if err = wav.Write(file, wavSize); err != nil {
|
||||
if err = wav.Write(file); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue