MCPcopy
hub / github.com/ebitengine/oto / alsaPcmHwParams

Method alsaPcmHwParams

driver_unix.go:178–212  ·  view source on GitHub ↗
(sampleRate, channelCount int, bufferSize, periodSize *C.snd_pcm_uframes_t)

Source from the content-addressed store, hash-verified

176}
177
178func (c *context) alsaPcmHwParams(sampleRate, channelCount int, bufferSize, periodSize *C.snd_pcm_uframes_t) error {
179 var params *C.snd_pcm_hw_params_t
180 C.snd_pcm_hw_params_malloc(&params)
181 defer C.free(unsafe.Pointer(params))
182
183 if err := C.snd_pcm_hw_params_any(c.handle, params); err < 0 {
184 return alsaError("snd_pcm_hw_params_any", err)
185 }
186 if err := C.snd_pcm_hw_params_set_access(c.handle, params, C.SND_PCM_ACCESS_RW_INTERLEAVED); err < 0 {
187 return alsaError("snd_pcm_hw_params_set_access", err)
188 }
189 if err := C.snd_pcm_hw_params_set_format(c.handle, params, C.SND_PCM_FORMAT_FLOAT_LE); err < 0 {
190 return alsaError("snd_pcm_hw_params_set_format", err)
191 }
192 if err := C.snd_pcm_hw_params_set_channels(c.handle, params, C.unsigned(channelCount)); err < 0 {
193 return alsaError("snd_pcm_hw_params_set_channels", err)
194 }
195 if err := C.snd_pcm_hw_params_set_rate_resample(c.handle, params, 1); err < 0 {
196 return alsaError("snd_pcm_hw_params_set_rate_resample", err)
197 }
198 sr := C.unsigned(sampleRate)
199 if err := C.snd_pcm_hw_params_set_rate_near(c.handle, params, &sr, nil); err < 0 {
200 return alsaError("snd_pcm_hw_params_set_rate_near", err)
201 }
202 if err := C.snd_pcm_hw_params_set_buffer_size_near(c.handle, params, bufferSize); err < 0 {
203 return alsaError("snd_pcm_hw_params_set_buffer_size_near", err)
204 }
205 if err := C.snd_pcm_hw_params_set_period_size_near(c.handle, params, periodSize, nil); err < 0 {
206 return alsaError("snd_pcm_hw_params_set_period_size_near", err)
207 }
208 if err := C.snd_pcm_hw_params(c.handle, params); err < 0 {
209 return alsaError("snd_pcm_hw_params", err)
210 }
211 return nil
212}
213
214func (c *context) readAndWrite(buf32 []float32) bool {
215 c.cond.L.Lock()

Callers 1

newContextFunction · 0.95

Calls 1

alsaErrorFunction · 0.85

Tested by

no test coverage detected