声音部分的代码仍需调试,现在panic

This commit is contained in:
TonyChyi
2022-09-27 14:36:25 +08:00
parent 7ef721afb7
commit edbe406f5b
6 changed files with 104 additions and 116 deletions

View File

@@ -23,7 +23,7 @@ const BitsPerByte = 8
type WavFIFODriver struct {
PCM <-chan [BufferSize]byte
WaveHeader <-chan *WavHeader
WaveHeader *WavHeader
closed <-chan struct{}
cancel func()
}
@@ -42,19 +42,19 @@ func (w *WavFIFODriver) Open() error {
}
func (w *WavFIFODriver) Close() error {
defer w.cancel()
w.cancel()
return nil
}
func (w *WavFIFODriver) Properties() []prop.Media {
waveHeader := <-w.WaveHeader
logrus.Debugf("wave header: %v", waveHeader)
logrus.Debugf("wave header: %v", w.WaveHeader)
return []prop.Media{
{
Audio: prop.Audio{
SampleRate: int(waveHeader.SampleRate),
ChannelCount: int(waveHeader.NumChannels),
Latency: waveHeader.GetLatnecy(),
SampleRate: int(w.WaveHeader.SampleRate),
ChannelCount: int(w.WaveHeader.NumChannels),
SampleSize: int(w.WaveHeader.BitsPerSample),
Latency: w.WaveHeader.GetLatnecy(),
IsFloat: false, // just 8bit or 16bit with qemu
IsBigEndian: false, // qemu should be little endian
IsInterleaved: true,
@@ -64,13 +64,14 @@ func (w *WavFIFODriver) Properties() []prop.Media {
}
func (w *WavFIFODriver) AudioRecord(p prop.Media) (audio.Reader, error) {
a := wave.NewInt16Interleaved(wave.ChunkInfo{
Len: BufferSize / int(p.SampleSize/BitsPerByte),
Channels: p.ChannelCount,
SamplingRate: p.SampleRate,
})
logrus.Debug(p)
reader := func() (wave.Audio, func(), error) {
a := wave.NewInt16Interleaved(wave.ChunkInfo{
Len: BufferSize / int(p.SampleSize/BitsPerByte),
Channels: p.ChannelCount,
SamplingRate: p.SampleRate,
})
select {
case <-w.closed:
return nil, func() {}, io.EOF