18 lines
650 B
Go
18 lines
650 B
Go
package audio
|
|
|
|
// SampleRate is the fixed capture rate (mono 16-bit PCM). Exported so consumers
|
|
// like the CW decoder can configure their DSP to match.
|
|
const SampleRate = sampleRate
|
|
|
|
// StreamCapture captures from deviceID and calls onSamples with mono 16-bit PCM
|
|
// frames (as int16) until stop closes. A thin wrapper over the internal capture
|
|
// loop for live consumers (the CW decoder) that want samples, not raw bytes.
|
|
func StreamCapture(deviceID string, stop <-chan struct{}, onSamples func([]int16)) error {
|
|
return captureStream(deviceID, stop, func(chunk []byte) {
|
|
if len(chunk) == 0 {
|
|
return
|
|
}
|
|
onSamples(bytesToInt16(chunk))
|
|
})
|
|
}
|